ライブラリのバージョンアップはセキュリティを担保する上で重要で、大変な作業です。
その作業を省力化してくれる Renovate をカケハシでは 2020 年から導入しています。
そんな Renovate の対応状況を可視化し、セキュアな状態を保てているかを確認しました。
Renovate とは
Renovate は依存パッケージのアップデートを半自動化してくれる Github App です。
以下の機能で開発者のライブラリアップデート作業を助けてくれます。
- アップデートがないかチェック
- リリースノートをまとめてプルリク作成
- 自動マージ
対象はサードパーティ製のライブラリ全般となります。
- パッケージマネージャ
- Docker イメージ
- Github Actionsなど
カケハシの Renovate 対応状況
Renovate の対応状況の確認には gh cli を利用しました(後述)。
PR 作成数
下記はカケハシ組織全体における過去 1 年分の PR 作成数と、Renovate による PR 作成数です。
PR 作成数は増加し、開発が活発化し続けていることがわかります。
しかし、それに伴ってか、Renovate 由来の PR 作成数も増加しています。
2022/09に2割ほどだった Renovate 由来の PR 作成数が、2023/08 だと 3 割を超えています。
これはライブラリのアップデートのコストが増え続けていると捉えられます。
PR マージ数
続いて、過去 1 年分の PR マージ数と、Renovate による PR のマージ数です。
PR 作成数に比べてマージ数は少し少ないことがわかりました。
PR を作成したが、マージするには至らずクローズされたものが存在するということです。
事情があってアップデートできないライブラリや、修正を提案したが却下された PR があるのは想定通りです。
この差は開発・運用を続けていれば絶対出てくるものと考えています。
PR マージ率
最後に過去 1 年分の Renovate 由来の PR マージ率です。
マージ率は全ての月で 8 割を超えていて、高水準を保っています。
これは開発者がライブラリのアップデートに気を配っている証拠になっています。
Renovate で疲弊しないために
ライブラリのアップデートは定常的・恒常的に行う必要があります。
しかし、コストの割に成果が見えづらく、心が疲弊してしまうこともあるかと思います。
そのため、以下 3 つの設定を駆使し、 Renovate をコントロールしていくことが必要となります。
- PRの自動マージ
- PR発行の頻度
- PRの集約単位
他社様の記事となりますが、下記が勉強になりました。
結論
Renovate 由来の PR の マージ率は継続的に 8 割を超え、セキュアな状態を維持していると言えるのではないでしょうか。
ここで 9割、10割のマージ率を目指すという話もできます。
しかし、ライブラリのバージョンアップ作業はゴールのないマラソンなので、無理なく進めていける体制であることが重要だと考えています。
また、Renovate だけではライブラリのセキュリティ全てを担保できるわけではなありません。
緊急の脆弱性対応や EOL 対応などは、別途進めていく想定です。
私は普段セキュリティエンジニアとしてセキュアじゃないもの見つけようとしていますが、「セキュアであること」も見つけて、発信していきたいと思います。
補足 : 調査に用いた gh cli
今回は gh cli を利用し、kkhs Github 組織全体を対象として集計しました。
# PR作成数 gh search prs --owner kkhs --created 2023-01-01..2023-01-31 # PR作成数(Renovate) gh search prs --owner kkhs --created 2023-01-01..2023-01-31 --author app/renovate # PRマージ数 gh search prs --owner kkhs --merged-at 2023-01-01..2023-01-31 # PRマージ数(Renovate) gh search prs --owner kkhs --merged-at 2023-01-01..2023-01-31 --author app/renovate
文責: 西山