GitHub Advanced Security の機能とアラートの管理
プロジェクトのセキュリティが設定されたので、プロジェクトのGitHubの高度なセキュリティ機能とアラートを監視して管理する必要があります。
このユニットでは、 セキュリティの概要 を使用して、プロジェクトのセキュリティ リスクを監視する方法について説明します。 また、GitHub Advanced Security エンドポイントを使用してセキュリティ機能とアラートを管理する方法についても説明します。
セキュリティ概要の使用
セキュリティの概要は、組織とリポジトリの [セキュリティと品質 ] タブで確認できます。 これを使用して、組織のセキュリティ体制の概要を把握したり、注意が必要なリポジトリを特定したりできます。
- 組織レベル: 組織が所有するリポジトリの集計およびリポジトリ固有のセキュリティ情報を表示します。 情報はセキュリティ機能でフィルター処理することもできます。
- チーム レベル: チームが管理者特権を持つリポジトリのリポジトリ固有のセキュリティ情報を表示します。
- リポジトリ レベル: リポジトリで有効になっているセキュリティ機能を示し、現在有効になっていない使用可能な機能を構成するためのオプションを提供します。
対話型インターフェイスとフィルター処理機能により、セキュリティの概要では、広範なセキュリティ分析と対象指定されたセキュリティ分析の両方がサポートされます。
たとえば、次の目的で使用できます。
- 組織全体のセキュリティ機能の導入を監視します。
- GitHub Advanced Security ロールアウト中に個々のチームによる導入を追跡します。
- すべてのリポジトリで特定の種類または重大度のアラートを確認します。
GitHub Advanced Security エンドポイントを使用する
次の表は、GitHub Advanced Security 機能ごとに使用可能な API エンドポイントをまとめたものです。
| 特徴 | エンドポイント | ドキュメント |
|---|---|---|
| コード スキャン | コード スキャン アラートを取得して更新します。 組織向けの自動レポートを作成します。 オフラインの CodeQL 分析結果をアップロードします。 |
コード スキャン API |
| シークレット スキャン | リポジトリのシークレット スキャンを有効または無効にします。 シークレット スキャン アラートを取得して更新します。 |
リポジトリ API シークレット スキャン API |
| 依存関係の確認 | 依存関係アラートと依存関係グラフを有効または無効にします。 セキュリティ修正プログラムを有効または無効にします。 依存関係情報を表示します。 |
リポジトリ API GraphQL API |
GITHUB_TOKENアクセス許可を構成する
GitHub Actionsを使用してセキュリティ ワークフローを自動化する場合は、認証された API 呼び出しに使用されるGITHUB_TOKENに付与されるアクセス許可を構成することが重要です。
次の表は、既定のアクセス許可をまとめたものです。
| スコープ | 既定のアクセス (制限なし) | 既定のアクセス (制限付き) | フォークされたリポジトリからの最大アクセス |
|---|---|---|---|
| アクション | 読み取り/書き込み | なし | 読み取り |
| チェック | 読み取り/書き込み | なし | 読み取り |
| 内容 | 読み取り/書き込み | 読み取り | 読み取り |
| デプロイ | 読み取り/書き込み | なし | 読み取り |
| 識別トークン | 読み取り/書き込み | なし | 読み取り |
| 問題 | 読み取り/書き込み | なし | 読み取り |
| メタデータ | 読み取り | 読み取り | 読み取り |
| パッケージ | 読み取り/書き込み | なし | 読み取り |
| pull-requests | 読み取り/書き込み | なし | 読み取り |
| リポジトリプロジェクト | 読み取り/書き込み | なし | 読み取り |
| セキュリティイベント | 読み取り/書き込み | なし | 読み取り |
| ステータス | 読み取り/書き込み | なし | 読み取り |
個々のワークフロー ファイルの GITHUB_TOKEN に付与されるアクセス許可を変更できます。
- 既定のアクセス許可が 制限されている場合は、ワークフローが正常に完了できるようにアクセス許可を増やす必要があります。
- 既定のアクセス許可が緩い場合は、不要なアクセス許可を削除する必要があります。
セキュリティのベスト プラクティスとして、必要最小限の 特権 を常に付与します。
permissions キーを使用して、ワークフロー全体または個々のジョブのアクセス許可を構成することもできます。
permissionsを指定すると、メタデータ スコープを除き、未指定のアクセス許可はすべて none に設定され、常に読み取りアクセスを受け取ります。
name: Create issue on commit
on:
- push
jobs:
create_commit:
runs-on: ubuntu-latest
permissions:
issues: write
steps:
- name: Create issue using REST API
run: |
curl --request POST \
--url http(s)://[hostname]/api/v3/repos/${{ github.repository }}/issues \
--header 'authorization: Bearer ${{ secrets.GITHUB_TOKEN }}' \
--header 'content-type: application/json' \
--data '{
"title": "Automated issue for commit: ${{ github.sha }}",
"body": "This issue was automatically created by the GitHub Action workflow **${{ github.workflow }}**.\n\nThe commit hash was: _${{ github.sha }}_."
}' \
--fail
前の例では、1 つのジョブの 問題 スコープに書き込みアクセス権が付与されています。
permissions キーを使用して、フォークされたリポジトリからトリガーされたワークフローの読み取りアクセス許可を追加または削除することもできます。 通常、書き込みアクセス許可は、GitHub Actions設定で [pull requests からワークフローに書き込みトークンを送信する] オプションが有効になっていない限り付与できません。
検知、修復、予防のビュー
セキュリティの概要では、分析情報が 3 つの主要なビューに整理されます。
| ビュー | Purpose |
|---|---|
| 検出 | 脆弱性、シークレット、依存関係のリスクが検出された場所を監視します。 |
| 修復 | リポジトリ間でアラートがどのように修正、優先順位付け、解決されるかを追跡します。 |
| 予防 | 保護されたブランチに到達する前に脆弱性がどのように防止されるかを測定します。 |
防止ビューは、セキュリティコントロールがマージされる前にリスクの高い変更をどの程度効果的に停止するかを評価するのに役立ちます。
その例は次のとおりです。
- プル要求のレビュー中に修正された脆弱性。
- マージ前に解決されたコード スキャンの結果。
- Copilot Autofix の修復アクティビティ。
- シークレットスキャンのプッシュ保護に関するイベント。
- 依存関係のリスクが回避されました。
セキュリティ機能間でのアラートの解釈
セキュリティの概要では、複数のGitHubセキュリティ機能の情報を集計して、チームが組織のリスクを理解するのに役立ちます。
一般的なアラート ソースは次のとおりです。
- コード スキャンアラート: CodeQL またはサード パーティ製スキャナーによって検出された脆弱性と安全でないコーディング パターン。
- シークレット スキャン アラート: 公開された資格情報、API キー、およびトークン。
- Dependabot アラート: 脆弱な依存関係とパッケージのリスク。
- 依存関係の確認: プル要求の依存関係の変更によって発生するリスク。
Teams では、次の方法でアラートをフィルター処理できます。
- Severity
- リポジトリ
- 機能の種類
- 時間範囲
- チームの所有権
- アラートの状態
これらのフィルターは、組織全体の分析と焦点を絞った調査の両方をサポートします。
修復の追跡と自動修正の分析情報
セキュリティの概要は、修復の進行状況の監視にも役立ちます。
セキュリティ チームは次の情報を追跡できます。
- マージ前にプル要求アラートが修正されました。
- 修復の傾向。
- Copilot Autofix によって生成されたプル リクエスト。
- 検証とマージの完了率。
- 繰り返し未解決のアラートを含むリポジトリ。
これらの分析情報は、組織がボトルネックを特定し、リスクの高いリポジトリに優先順位を付け、修復の有効性を測定するのに役立ちます。
バイパス イベントとガバナンス シグナルの可視化
セキュリティの概要では、組織全体のガバナンスとポリシー メトリックも表示されます。
その例は次のとおりです。
- プッシュ保護のバイパス イベント。
- ブランチ保護に関する 施行活動。
- アラートの無視の傾向。
- 監査ログのアクティビティ。
- ポリシーの導入と対象範囲のメトリック。
これらのメトリックは、管理者が以下を理解するのに役立ちます。
- ユーザーが保護をバイパスする場所。
- ポリシーの見直しが必要かどうか。
- セキュリティ制御が一貫して適用されるかどうか。
これらの分析情報は、監査ログ、ルールセット、およびブランチ保護ポリシーと組み合わせて、コンプライアンス レポート、運用レビュー、および継続的なセキュリティ向上をサポートします。
セキュリティの役割と責任
GitHub高度なセキュリティ導入を成功させるには、開発チーム、セキュリティ チーム、および管理チーム全体の明確な所有権が必要です。
さまざまなロールが、ソフトウェア開発とインシデント対応ライフサイクル全体を通じて、GitHubの Advanced Security 機能とやり取りします。
| 責任 | 開発者 | セキュリティ エンジニア | リポジトリ/組織管理者 |
|---|---|---|---|
| コード スキャンアラートを確認して修正する | はい | はい | いいえ |
| シークレット スキャン アラートを確認する | はい | はい | はい |
| 脆弱な依存関係を更新する | はい | はい | いいえ |
| Copilot Autofix のプル リクエストを検証する | はい | はい | いいえ |
| セキュリティ アラートのトリアージと優先順位付け | いいえ | はい | はい |
| セキュリティ ポリシーとルールセットを構成する | いいえ | はい | はい |
| ブランチ保護とワークフロー ポリシーを管理する | いいえ | いいえ | はい |
| セキュリティ概要ダッシュボードを監視する | いいえ | はい | はい |
| 監査ログとガバナンスシグナルを確認する | いいえ | はい | はい |
| リポジトリと組織のセキュリティ設定を構成する | いいえ | いいえ | はい |
| インシデント対応ワークフローを調整する | いいえ | はい | はい |
| ポリシー例外または却下を承認する | いいえ | はい | はい |
ワークフローの所有権の例
一般的なGitHub Advanced Security ワークフローには、複数のロールが連携する必要があります。
- 開発者は、プル要求でコード スキャン アラートを受け取ります。
- セキュリティ エンジニアがアラートの重大度を確認し、修復アプローチを推奨します。
- Copilot Autofix は、プル リクエストの更新を提案します。
- 開発者は修正プログラムを検証し、必要に応じてコードを更新します。
- リポジトリ管理者は、マージの前にブランチ保護と必要なチェックを適用します。
- セキュリティ チームは、セキュリティの概要を通じて監査ログと修復の傾向を確認します。
責任を明確に定義することで、組織は、ガバナンス、アカウンタビリティ、運用の一貫性を維持しながら、高度なセキュリティ導入GitHubスケーリングするのに役立ちます。