GitHub Advanced Security は、コードの品質をセキュリティの脆弱性を可視化しそれらの改善の自動化を目的とした機能群で、GitHub を使う上での強みのひとつです。
現時点でドキュメントはほぼ日本語に翻訳されてないこともあり、全体像をさっと見渡せるように整理してみました。
GitHub Security について
GitHub のセキュリティに関する機能は、有償の GitHub Advanced Security (GHAS) だけではありません。
本題の GHAS に入る前に、すべての repository で利用できる GitHub Security の4つのセキュリティ機能をさっと触れておきます。
- Security policy: SCURITY.md のファイルを作ってセキュリティポリシーを定義できる機能。
- Security advisories: Security advisory のレポートを作成してディスカッションできる機能。作成したら GitHub がレビューして GitHub Advisory Database にのるやつです。security researchers 向けの機能ですね。
- Dependabot alerts and security updates: セキュリティの脆弱性が含まれる依存関係のアラートを出したり、Pull request を自動生成してくれる機能です。
- Dependabot version updates: 使っているパッケージで最新のバージョンの更新をするよう Pull request を自動生成して提案してくれる機能です。まめに新しいバージョンにしておけばセキュリティの脆弱性の予防にもなるし、古いのを使い続けて一気にバージョンをあげると breaking changes の影響を受ける可能性も高まるのでその予防になります。
GitHub Advance Security
ここから本題です。
そもそもの前提として書いておきたいのは以下の2点。
- 基本的には Enterprise account とGitHub Advanced Security のライセンスが必要。
- ただし、public の repository ではデフォルトで利用できる機能がある。GitHub Advanced Security のライセンスがあると、さらに拡張した機能が使えるものもある。
GitHub Advance Security の機能は公式ドキュメントで3つ定義されてますのでひとつずつ見ていきます。
Code scanning alerts
- コードをスキャンすることで脆弱性のありそうなコードのパターンやエラーになりそうなコードを検出する機能
- Code QL や GitHub Marketplace に出ているツールでコードをスキャンする。
- スキャンは、GitHub Actions で実行。
- 設定は、repository の "Security" → "code scanning alerts" からする。
- スキャンの結果は、Pull request の画面にある Checks タブから確認できる。
- public repository では GitHub Advance Security のライセンス無しで利用可能。
Secret scanning alerts
- 接続文字列とかトークンのようなシークレットが含まれてないかをチェックしてアラートする機能。
- public な repository ではデフォルトで有効になっており、設定メニューに表示されていないので Disable への変更はできない。スキャンのパターンについてはこちらに記載。
- GitHub Advanced Security のライセンスが有効な場合、public repository で使われているスキャンのパターンの他にカスタムなパターン の定義ができる。
設定は、repository の "Settings" → "Security & analysis" からする。GitHub Advanced Security のライセンスがないと表示されない。
Dependency review (Beta)
- 現在ベータ版の機能(なので今後がっつり変更がある可能性もある)。すべての public repo ではデフォルトで有効ですが、private や internal の repo で使うには GHAS のライセンスが必要です。
- Pull request 時に依存関係への変更が含まれている場合に、変更内容の概要と依存関係に既知の脆弱性を可視化できる。
- どんな感じで可視化されるかは、こちらのドキュメントを見るとイメージがわきます。
ドキュメントでは以下の記載があるんですが、ようは Dependabot alerts だと既存のコードに対してアラートを挙げるのに対して、Dependency review (Beta) は Pull request 時に検知してくれるものです。
Dependabot alerts will find vulnerabilities that are already in your dependencies, but it's much better to avoid introducing potential problems than to fix problems at a later date. For more information about Dependabot alerts, see "About alerts for vulnerable dependencies."
まとめ
GitHub の Advanced Security についてざっくりまとめてみましが、GitHub Advanced Security のライセンスが無くても使える Dependency graph や Dependabot alerts、Dependabot security updates の簡単な整理もそのうちしたいと思います(未定)
さっと整理しようとおもったけど、字が多くてさっと整理した感じがしない...中田敦彦の YouTube 大学でやってるようなホワイトボードでまとめるのやればよかったなと妄想を膨らませたら、iPad Air ちょっとほしくなってきた今日この頃です。