GitHub Advanced Security:段階的導入で実現するセキュアな開発環境
1. はじめに
開発速度とセキュリティの両立は、現代のソフトウェア開発における永遠のテーマです。GitHub Advanced Securityは、この課題に対する実践的な解決策を提供します。本記事では、GitHub Advanced Securityの製品体系から導入戦略まで、技術者視点で包括的に解説します。
2. 製品体系:明確に分離された2つの柱
GitHub Advanced Securityは、セキュリティの異なる側面に対応する2つの独立した製品で構成されています。
2.1 GitHub Secret Protection
シークレット漏洩の検出と防止に特化した製品です。以下の機能を提供します:
- Secret scanning:リポジトリにチェックインされたトークンや認証情報を自動検出
- Push protection:シークレットを含むコミットをプッシュ時にブロック
- Copilot secret scanning:AI活用による非構造化シークレット(パスワードなど)の検出
- Custom patterns:組織固有のシークレットパターンの定義
- Delegated bypass:プッシュ保護のバイパス承認フロー
- Security campaigns:大規模なシークレット修復キャンペーン
- Security overview:組織全体のリスク分布の可視化
2.2 GitHub Code Security
脆弱性の発見と修正に焦点を当てた製品です:
- Code scanning:CodeQLまたはサードパーティツールによる脆弱性とコーディングエラーの検出
- CodeQL CLI:ローカル環境でのCodeQL実行
- Copilot Autofix:Code scanningアラートの自動修正提案
- Security campaigns:大規模なセキュリティアラート対応
- Custom auto-triage rules:Dependabotアラートの自動トリアージ
- Dependency review:プルリクエストマージ前の依存関係への影響評価
- Security overview:組織全体のセキュリティ状況の監視
2.3 統合ライセンスオプション
GitHub Advanced Securityライセンスを選択すると、Secret ProtectionとCode Securityの両方の機能が含まれます。
3. プラン要件と利用可能性
3.1 基本要件
- 必要プラン:GitHub TeamまたはGitHub Enterprise Cloud
- パブリックリポジトリ:多くの機能が無料で利用可能
3.2 無料で利用できる機能(全プラン)
以下の機能は、どのGitHubプランでも利用できます:
- Security policy
- Dependency graph
- Software Bill of Materials (SBOM)
- GitHub Advisory Database
- Dependabot alerts and security updates
- Dependabot version updates
- Security advisories
- Repository rulesets
- Artifact attestations
- Secret scanning alerts for partners(パブリックリポジトリ)
- Push protection for users(パブリックリポジトリ)
3.3 パブリックリポジトリでの無料提供
以下のAdvanced Security機能は、パブリックリポジトリでは無料で利用できます:
- Secret scanning
- Push protection
- Copilot secret scanning
- Code scanning
- CodeQL CLI
- Copilot Autofix
- Dependency review
4. ライセンス課金モデル:2つのアプローチ
GitHub Advanced Securityには、組織のニーズに応じた2つの課金モデルがあります。
4.1 メータード課金(従量制)
対象:GitHub Enterprise Cloud、およびGitHub Enterprise Server 3.13以降(GitHub Connect経由)
特徴:
- Secret ProtectionとCode Securityを独立して有効化可能
- アクティブコミッター数に基づく月額課金
- ライセンス上限なし
- 超過状態が発生しない(使用分のみ課金)
メリット:
- 柔軟な使用量調整
- 予測可能なコスト管理
- 段階的な導入が容易
4.2 ボリューム/サブスクリプション課金
対象:GitHub Enterpriseプランのみ
特徴:
- 事前に特定数のライセンスを購入(通常1年以上)
- アクティブコミッターがライセンス数を超えると追加購入が必要
- 超過状態の管理が必要
適用ケース:
- 長期的な予算計画が必要な場合
- 安定したユーザー数が見込める場合
4.3 アクティブコミッターの定義
ライセンス使用量は、以下の基準で計算されます:
- アクティブコミッター:過去90日以内に少なくとも1つのリポジトリにコミットしたユニーク貢献者
- カウント対象:GitHub TeamまたはEnterprise ライセンスを持つメンバー、エンタープライズ管理ユーザー、外部コラボレーター、または招待保留中のユーザー
- 除外対象:GitHubアプリボット
4.4 ライセンス使用量の推移例
この例では、機能の有効化・無効化とコミッターの動きによってライセンス使用量がどのように変化するかを示しています。
ライセンス最適化のポイント:90日間のルールを理解することが重要です。コミッターがリポジトリへの貢献を停止しても、90日間はライセンスカウントに含まれ続けます。そのため、リポジトリの無効化やチーム再編成を計画する際は、この90日間のラグを考慮した上でライセンス数を見積もる必要があります。
5. コスト管理とROI計算
5.1 Push ProtectionのROI計算機能
GitHub Secret Protectionには、コスト削減効果を見積もるROI計算機能が含まれています。
計算要素:
- 防止可能なシークレット漏洩数(P)
- 平均開発者年間報酬(C、米ドル)
- シークレット1件あたりの修復時間(T、時間)
推奨される修復時間の見積もり:
- 1-1.5時間:シンプルなローテーション、最小限の調整
- 2-3時間:分散チームまたは追加チェックが必要
- 3-4時間:規制対象または監査環境
計算式:
潜在的節約額 = P × T × (C ÷ 2,080)
※ 2,080は年間労働時間(週40時間 × 52週)
参考情報:IBM Security の2024年調査によると、データ侵害の平均コストは488万ドルに達しています。ROI計算では直接的な労働コスト削減のみを扱いますが、シークレット漏洩を防止することで、こうした深刻な侵害リスクも同時に軽減できる点を考慮すると、実際の価値はさらに大きいと言えます。
5.2 予算管理オプション
メータード課金の場合:
- 予算とアラートの設定
- コストセンターとポリシーによるコスト管理(GitHub Enterprise Cloud)
ボリューム課金の場合:
- リポジトリでのAdvanced Security無効化によるライセンス解放
- ライセンスサイズの増加
- エンタープライズポリシーによる使用制御
6. 段階的導入戦略:6つのフェーズ
GitHub Advanced Securityの導入は、以下の段階的アプローチが推奨されています。
6.1 フェーズ1:ロールアウト戦略と目標の整合
目的:組織全体での合意形成
主要活動:
- ステークホルダーの特定
- セキュリティ目標の明確化
- 成功指標の定義
- 組織構造の理解
6.2 フェーズ2:大規模有効化の準備
目的:技術的な準備と環境整備
主要活動:
- 現在のセキュリティ状態の評価
- ライセンスモデルの選択
- セキュリティ設定の計画
- ツールチェーンの統合検討
6.3 フェーズ3:パイロットプログラム
目的:限定的な環境での実証
主要活動:
- パイロットチーム/リポジトリの選定
- 機能の段階的有効化
- フィードバックの収集
- 課題の特定と解決
6.4 フェーズ4:内部ドキュメント作成
目的:組織全体での知識共有
主要活動:
- ベストプラクティスの文書化
- トラブルシューティングガイドの作成
- アラート対応手順の整備
- FAQ作成
6.5 フェーズ5:Code scanningのロールアウトと拡大
目的:脆弱性検出の組織全体への展開
主要活動:
- CodeQL設定の標準化
- パイプラインへの統合
- カスタムクエリの開発
- 結果のモニタリング
6.6 フェーズ6:Secret scanningのロールアウトと拡大
目的:シークレット保護の組織全体への展開
主要活動:
- Push protectionの段階的有効化
- カスタムパターンの定義
- バイパスフローの確立
- 既存シークレットの修復
7. セキュリティ設定の一括管理
7.1 GitHub推奨セキュリティ設定
組織全体に適用できる、GitHubの専門家が作成した設定集です。
特徴:
- あらゆるリポジトリに適した設定
- 組織内の全リポジトリに簡単に適用可能
- 継続的な更新とメンテナンス
7.2 カスタムセキュリティ設定
特定のセキュリティニーズを持つリポジトリグループ向けに、独自の設定を作成できます。
ユースケース:
- コンプライアンス要件が異なるプロジェクト
- 異なるリスクレベルのリポジトリ
- 段階的な機能ロールアウト
7.3 グローバル設定
リポジトリレベルの設定に加えて、組織レベルのグローバル設定でセキュリティ機能の動作をカスタマイズできます。
設定項目:
- プライベートレジストリへのアクセス
- 本番環境コンテキストの統合
- 組織全体のポリシー
8. Azure DevOpsとの統合
GitHub Advanced SecurityはAzure DevOpsでも利用できます。
8.1 利用可能な製品
- GitHub Secret Protection for Azure DevOps
- GitHub Code Security for Azure DevOps
8.2 対応環境
- Azure DevOps Services(Azure Reposのみ)
- Gitリポジトリ専用
8.3 主要機能
Secret Protection:
- Push protection
- Secret scanningアラート
- Security overview
Code Security:
- 依存関係アラート
- CodeQLスキャン
- サードパーティツールのセキュリティ検出結果
- Security overview
8.4 セットアップ手順の例
# Azure Pipelinesでのコードスキャン設定例
trigger:
- main
pool:
vmImage: ubuntu-latest
steps:
- task: AdvancedSecurity-Codeql-Init@1
inputs:
languages: "java"
# サポート言語: csharp, cpp, go, java, javascript, python, ruby, swift
# セルフホストエージェントでは自動インストールを有効化
enableAutomaticCodeQLInstall: true
# ビルドステップをここに追加
# - すべてのコードがコンパイルされることを確認
# - ビルドキャッシュを無効化
# - 分散/マルチスレッド/インクリメンタルビルドを無効化
- task: AdvancedSecurity-Dependency-Scanning@1
- task: AdvancedSecurity-Codeql-Analyze@1
8.5 プルリクエスト注釈
依存関係スキャンとコードスキャンの両方で、ビルド検証ポリシーが適用されたプルリクエストに自動的に注釈が設定されます。
9. エンタープライズポリシー
エンタープライズアカウントでは、組織全体のセキュリティ機能の使用を制御するポリシーを適用できます。
9.1 利用可能なポリシー
-
Advanced Security製品の利用可否
- 組織単位での製品の有効化/無効化
- 選択した組織への限定的な提供
-
依存関係インサイトの可視性
- 組織メンバーによる依存関係インサイトの閲覧制御
-
Dependabotアラートの管理
- リポジトリ管理者によるアラート有効化/無効化の制御
-
リポジトリでのAdvanced Security機能管理
- リポジトリ管理者による機能管理の許可/不許可
-
AI検出機能の使用
- Secret scanningでのAI検出の管理
-
Copilot Autofixの使用
- Code Securityの結果に対するAutofix管理
9.2 ポリシー適用時の注意点
- リポジトリ管理者への制限は、組織オーナーとセキュリティマネージャーには適用されません
- 既に有効化されている機能は、ポリシーで不許可にしても無効化されません
- 新規リポジトリへの自動適用設定が可能
10. GitHub Copilot Chatとの連携
GitHub Copilot Enterpriseライセンスをお持ちの場合、Copilot ChatでAdvanced Securityのアラートについて質問できます。
対応アラート:
- Code scanning
- Secret scanning
- Dependabot alerts
活用例:
- アラートの詳細な説明
- 修正方法の提案
- セキュリティリスクの評価
- ベストプラクティスの確認
11. 実践的な導入Tips
11.1 セキュリティ設定の推奨構成
- 初期段階:GitHub推奨セキュリティ設定を組織全体に適用
- カスタマイズ:特定のニーズに応じてカスタム設定を作成
- 継続的改善:Security overviewで効果を測定し、設定を調整
11.2 アラート対応のベストプラクティス
-
優先順位付け:
- 重大度によるフィルタリング
- 本番環境への影響度を考慮
- 自動トリアージルールの活用
-
チーム協力:
- Security campaignsでの大規模対応
- 明確な責任分担
- 定期的なレビュー会議
-
継続的学習:
- アラートパターンの分析
- 誤検出の削減
- カスタムクエリの改善
11.3 パフォーマンス最適化
Code scanning:
- 専用パイプラインの使用を検討
- 増分スキャンの活用
- 言語ごとの最適化
Secret scanning:
- カスタムパターンの精度向上
- 除外設定の適切な管理
- Push protectionの段階的展開
11.4 具体的な設定例
セキュリティ設定の一括適用:
REST APIを使用して、複数のリポジトリに一括でセキュリティ設定を適用できます。
# 組織内の全リポジトリにGitHub推奨設定を適用
curl -L \
-X PUT \
-H "Accept: application/vnd.github+json" \
-H "Authorization: Bearer YOUR_TOKEN" \
-H "X-GitHub-Api-Version: 2022-11-28" \
https://api.github.com/orgs/ORG_NAME/code-security/configurations/default/attach \
-d '{"scope":"all"}'
依存関係インサイトの可視化確認:
組織の依存関係インサイトが有効かどうかを確認できます。
# 組織の依存関係インサイト設定を確認
curl -L \
-H "Accept: application/vnd.github+json" \
-H "Authorization: Bearer YOUR_TOKEN" \
-H "X-GitHub-Api-Version: 2022-11-28" \
https://api.github.com/orgs/ORG_NAME
レスポンスの dependency_graph_enabled_for_new_repositories フィールドで確認できます。
カスタムSecret scanningパターンの追加:
組織固有のシークレットパターンを定義できます。
# カスタムパターンの作成例(組織レベル)
curl -L \
-X POST \
-H "Accept: application/vnd.github+json" \
-H "Authorization: Bearer YOUR_TOKEN" \
-H "X-GitHub-Api-Version: 2022-11-28" \
https://api.github.com/orgs/ORG_NAME/secret-scanning/custom-patterns \
-d '{
"name": "社内APIキー",
"regex": "mycompany_[a-z0-9]{32}",
"secret_type": "mycompany_api_key"
}'
12. 認定資格:GitHub Advanced Security Certification
GitHub Advanced Securityの専門知識を証明できる認定資格があります。
試験範囲
- 脆弱性の特定
- ワークフローセキュリティ
- セキュリティ実装
メリット
- 専門知識の可視化
- キャリアアップの支援
- 組織内での信頼性向上
実践的な導入Tips
セキュリティ設定の推奨構成
- 初期段階:GitHub推奨セキュリティ設定を組織全体に適用
- カスタマイズ:特定のニーズに応じてカスタム設定を作成
- 継続的改善:Security overviewで効果を測定し、設定を調整
アラート対応のベストプラクティス
-
優先順位付け:
- 重大度によるフィルタリング
- 本番環境への影響度を考慮
- 自動トリアージルールの活用
-
チーム協力:
- Security campaignsでの大規模対応
- 明確な責任分担
- 定期的なレビュー会議
-
継続的学習:
- アラートパターンの分析
- 誤検出の削減
- カスタムクエリの改善
パフォーマンス最適化
Code scanning:
- 専用パイプラインの使用を検討
- 増分スキャンの活用
- 言語ごとの最適化
Secret scanning:
- カスタムパターンの精度向上
- 除外設定の適切な管理
- Push protectionの段階的展開
13. まとめ
GitHub Advanced Securityは、セキュリティを「後付け」ではなく「組み込み」にするための包括的なソリューションです。明確に分離されたSecret ProtectionとCode Securityの2製品により、組織のニーズに応じた柔軟な導入が可能です。
段階的導入アプローチにより、組織全体での無理のない展開が実現できます。メータード課金とボリューム課金の選択肢、ROI計算機能によるコスト可視化、Azure DevOpsとの統合オプションなど、エンタープライズレベルでの運用を支援する機能が充実しています。
セキュリティは一度設定して終わりではなく、継続的な改善が必要です。Security overviewでの可視化、Security campaignsでの大規模対応、Copilot Chatとの連携など、GitHub Advanced Securityは継続的なセキュリティ改善をサポートする機能を提供しています。
技術的な深さと実用性を兼ね備えたGitHub Advanced Securityは、現代のソフトウェア開発における「セキュアバイデフォルト」を実現するための、現実的で効果的な選択肢です。