はじめに
今更ですが、GitHub Dependabot を真面目に活用しようと色々と試したので、備忘録として残そうかと思います。
なぜ、GitHub Dependabot なのか?
今までの私の経験上、AWSを使うことが多かったため、システムやアプリケーションの脆弱性管理にはAmazon Inspectorを利用していました。
Amazon Inspectorを利用すれば、AWS上で管理しているサーバー内のOSやシステム、アプリケーションの脆弱性を含めて分析してくれるため、敢えてGitHub Dependabotを利用する必要はありませんでした。
しかし、今回真面目に活用しようと色々と調査した結果、その考えは誤りだったことがわかり、今後は積極的に活用していこうと心に決めました。
GitHub Dependabotとは?
いわゆるSCA(Software Composition Analysis:ソフトウェア構成分析)ツールに該当し、システムやアプリケーションで利用している外部ライブラリ(OSS)の脆弱性を分析・管理してくれるサービスです。
なお、無料です。
強みとしては、自動的に「このバージョンに上げれば直る」というPull Requestまで自動で作ってくれる機能があることです。
開発者はテストが通っているか確認して、マージボタンを押すだけで対応が完了します。
Amazon Inspectorとは?
AWSサービス群の一つ。インフラ環境(EC2やLambda、ECRなど)のOSやソフトウェアの脆弱性を分析・管理してくれるサービス(これだけでもGitHub DependabotのようなSCA相当の動作はしてくれる)。
なお、従量課金制です。
コードセキュリティ機能を有効化することで、リポジトリのソースコードを対象にSCA + SAST(Static Application Security Testing:静的アプリケーションセキュリティテスト)を実施してくれます。
GitHub DependabotとAmazon Inspectorを比較する
| 項目 | GitHub Dependabot | Amazon Inspector |
|---|---|---|
| 分類 | SCA(Software Composition Analysis)ツール | AWSの脆弱性管理サービス |
| 主な対象 | リポジトリ内で利用しているOSSライブラリの依存関係 | インフラ環境(EC2、Lambda、ECR)のOS・ソフトウェア |
| 料金 | 無料 | 従量課金制 |
| 基本機能でできること | 依存ライブラリの脆弱性検出 | OS・ソフトウェアの脆弱性検出(=これ単体でもSCA相当の動作) |
| 追加機能 | なし(標準でSCA機能が完結) | コードセキュリティを有効化すると、リポジトリのソースコードに対してSCA + SASTを実施可能 |
| SAST(静的アプリケーションセキュリティテスト) | 非対応 | コードセキュリティ有効化時のみ対応 |
| 自動修正PR作成 | 対応(修正済みバージョンへのPull Requestを自動生成) | 非対応(脆弱性の検出・通知が中心で、修正PR作成機能はない) |
| 対応後のアクション | テスト確認後、マージボタンを押すだけで対応完了 | 検出結果をもとに手動で修正対応が必要 |
| スキャンのタイミング | ビルド前のソースコード(リポジトリ)ベース | 基本機能はデプロイ後の成果物ベース/コードセキュリティ有効化でリポジトリベースにも対応 |
つまり、Amazon Inspectorはコードセキュリティを有効化しない限り、GitHub Dependabot相当のことはしてくれない(+自動修正PRまではAmazon Inspectorでも対応不可)ということに気がついていませんでした。
ということで、Amazon Inspector(コードセキュリティはオフ)+ GitHub Dependabotを使用することで、インフラ環境とリポジトリのソースコード双方の脆弱性の分析・管理ができ、お互いをカバーできることがわかりました。
ここからは、GitHub Dependabotを簡単に始めるための設定方法について書いていきます。
GitHub Dependabotの設定
- GitHubで、リポジトリのメインページに移動します。
- リポジトリ名の下にある [Settings] をクリックします。
- サイドバーの [セキュリティと品質] セクションで、[Advanced Security] をクリックします。
- [Dependabot] で、以下を有効化します。
- Dependabot alerts
- Dependabot malware alerts
- ※※ Pull Requestを作ってもらいたい場合は、以下も有効化する ※※
- Dependabot security updates
Dependabotを設定してAlertがメールで届くようになりましたが、直ぐに対応できない場合、一定間隔でアラートのリストが欲しくなりますよね?
そんな人は以下で設定できます。
- GitHubで、個人アカウントの[Settings]をクリックします。そこから、[Notifications]を選択します。
- Systemの中に [Dependabot alerts: Email digest] があるので、[Send weekly] か [Send daily] を選択します。
※ [Send weekly]を選択した場合、デフォルト毎週月曜日にメールにて通知されます - 次に、Dependabotを設定したリポジトリのメインページに移動します。
- リポジトリに対して[Watch] -> [Custom] を選択して、[Security alerts]を選択します。(この時、他にも通知を受け取りたい場合は、他の項目も選択してください。)
こうすることで、Dependabotで管理されているAlertを定期的にメールで受け取ることができます。
まとめ
GitHub DependabotとAmazon Inspectorは、どちらも脆弱性管理に使えるツールですが、対象範囲と得意分野が異なります。
私はそこに気がついていませんでした。💦
GitHub Dependabotはリポジトリ内のOSSライブラリの依存関係に特化し、無料で使え、修正PRの自動作成まで対応してくれる点が強みです。
一方Amazon Inspectorは、インフラ環境(EC2・Lambda・ECRなど)の脆弱性管理が主目的で、コードセキュリティ機能を有効化すればSCA・SASTにも対応できますが、従量課金であり自動修正PRの作成はできません。
両者は競合するものではなく、役割が異なるため併用することでインフラとソースコードの双方をカバーでき、脆弱性管理の抜け漏れを防ぐことができます。
特にGitHub Dependabotは無料かつ設定も簡単なので、まだ活用していない場合はぜひ有効化を検討してみてください。
👋👋👋
