# セキュリティ インシデントの調査ツール

セキュリティ インシデントの調査に使用できるコア GitHub ツール、各ツールの用途、使用可能なデータに影響する一般的な考慮事項。

このリファレンスを使用して、セキュリティ調査中に使用する GitHub ツール、各ツールが回答できる質問、および表示できるデータに影響する可能性のある要因を決定します。

> \[!NOTE]
> 各ツール (および提供されるデータ) の可用性は、 GitHub プラン、ロールとアクセス許可、機能の有効化、インシデント前の構成によって異なります (たとえば、監査ログ ストリーミングと IP アドレスの漏えいには事前に設定する必要があります)。

## アクティビティ ビュー

### 用途

* 特定のリポジトリ内 **のアクティビティの概要** (マージ、プッシュ、強制プッシュ、ブランチの作成、削除など) を、定義された期間にわたって特定のアクターに属性付けして取得します。
* 疑わしいコードの外観を **関連するプッシュまたはマージ**と関連付ける。
* 変更 **がいつ** 行われたか、 **誰** が行ったか、 **どのブランチで**行われたかについての質問に回答し、差分またはコミット履歴を調べる。

#### Permissions

リポジトリへの読み取りアクセス。

### 主要なリソース

* [アクティビティ ビューを使用してリポジトリへの変更を表示する](/ja/enterprise-server@3.22/repositories/viewing-activity-and-data-for-your-repository/using-the-activity-view-to-see-changes-to-a-repository)

### 注意事項と制限事項

* アクティビティ ビューは、初期ナビゲーションと相関サーフェスとして最適に使用されます。これは、生の監査ログのエクスポートと同じ完全性またはクエリ能力を持ちません。
* 一部のインシデントでは、リポジトリまたは組織間の相関関係が必要であり、監査ログの方が簡単な場合があります。

## 監査ログ

### 用途

* 企業または組織全体で **何が変更**されたか、 **いつ**、 **誰が変更されたか** についての質問に回答します。
* 侵害を有効にした可能性があるイベントを調査するか、メンバーシップ、ロール、アクセス許可の変更、アクセス トークンの生成または使用などのイベントを示します。
* セキュリティ関連のアクションをアクター (ユーザーまたは統合) に属性付けし、調査タイムラインを作成します。
* アクター、アクション、IP アドレス (有効な場合)、またはトークンでフィルター処理して、疑わしいアクティビティまたはトレース トークンの使用状況を識別します。
* 複数のリポジトリまたは組織間でアクティビティを関連付ける。

#### Permissions

* 組織の監査ログを表示するには、組織の所有者である必要があります。
* エンタープライズ監査ログを表示するには、エンタープライズ管理者である必要があります。
* セキュリティ ログ (個人用アカウント) を表示するには、アカウント所有者である必要があります。
* 外部のセキュリティ情報イベント管理 (SIEM) システム、ログ管理システム、またはその他のツールやサービスにエクスポートされた監査ログ データを表示するには、そのシステムにアクセスする必要があります。

### 主要なリソース

* [企業向け監査ログイベント](/ja/enterprise-server@3.22/admin/monitoring-activity-in-your-enterprise/reviewing-audit-logs-for-your-enterprise/audit-log-events-for-your-enterprise)
* [Organization の監査ログ イベント](/ja/enterprise-server@3.22/organizations/keeping-your-organization-secure/managing-security-settings-for-your-organization/audit-log-events-for-your-organization)
* [セキュリティ ログのイベント](/ja/enterprise-server@3.22/authentication/keeping-your-account-and-data-secure/security-log-events)

### 注意事項と制限事項

* GitHub には、 **エンタープライズ**、 **組織**、ユーザーの **セキュリティ ログ**の 3 つの監査ログが用意されています。
* GitHub監査ログ UI には、**フィルター処理と検索機能が制限**されています。 このため、企業は、より高度なクエリを実行するために、エンタープライズ監査ログを外部 SIEM またはログ管理システムに **ストリーミング** することをお勧めします。
  * 外部 SIEM またはログ管理システムへの監査ログ ストリーミングには、事前の構成が必要です。 「[企業の監査ログのストリーミング](/ja/enterprise-server@3.22/admin/monitoring-activity-in-your-enterprise/reviewing-audit-logs-for-your-enterprise/streaming-the-audit-log-for-your-enterprise)」を参照してください。
  * 監査ログ ストリーミングがないと、組織やリポジトリ間でイベントを関連付けたり、特定のトークンから関連するすべてのイベントにピボットしたりするなど、より複雑なクエリを実行することはできません。
  * Git イベント データはストリームに含まれます。
* **API 要求イベント**をストリーミングすることをお勧めします。これには、以前の構成が必要です。 「[企業の監査ログのストリーミング](/ja/enterprise-server@3.22/admin/monitoring-activity-in-your-enterprise/reviewing-audit-logs-for-your-enterprise/streaming-the-audit-log-for-your-enterprise#enabling-audit-log-streaming-of-api-requests)」を参照してください。
* GitHub Enterprise Cloud上の企業の場合は、監査ログに **IP アドレス**を表示することをお勧めします。これには、以前の構成が必要です。 「[Enterprise の監査ログに IP アドレスを表示する](/ja/enterprise-cloud@latest/admin/monitoring-activity-in-your-enterprise/reviewing-audit-logs-for-your-enterprise/displaying-ip-addresses-in-the-audit-log-for-your-enterprise)」を参照してください。
* GitHubプランによって、データの可用性とデータ保持のオファリングが異なります。
  * GitHub Free プランと GitHub Team プランでは、API アクティビティまたは Git イベントをまったく表示できません。
  * スタンドアロン組織 (企業に所属していない組織) は、監査ログをストリーミングできない、API 要求イベントを表示できない、Git イベント データの場合は 7 日間に制限されています。
  * GitHub Enterprise Cloud上の企業の場合:
    * 企業で **Enterprise Managed Users** を使用している場合、監査ログにはユーザー **セキュリティ ログ** (ログイン アクティビティやトークンの使用状況など、ユーザー アカウントに関連するイベント) も含まれます。
    * 企業が\_\_ 場合、Enterprise Managed Users監査ログには、エンタープライズ アカウントとその中の組織に関連するイベントのみが含まれます。
* 監査ログには **、** ページ ビューやリポジトリ参照テレメトリは含まれません。

## 依存関係グラフ

### 用途

* リポジトリが **脆弱または侵害されたパッケージ (または** バージョン) に依存しているかどうかを確認します。
* インシデント中に導入された可能性のある **新しい依存関係または疑わしい依存関係** を確認します。
* エコシステムまたは関係 (直接的または推移的) によって依存関係をフィルター処理して調査します。
* 監査のために、または証拠を保持するために、ソフトウェア部品表 (SBOM) をエクスポートします。

#### Permissions

* リポジトリへのアクセスを書き込むか、維持します。

### 主要なリソース

* [リポジトリの依存関係を調べる](/ja/enterprise-server@3.22/code-security/how-tos/secure-your-supply-chain/secure-your-dependencies/explore-dependencies)
* [依存関係グラフがサポートされるパッケージ エコシステム](/ja/enterprise-server@3.22/code-security/reference/supply-chain-security/dependency-graph-supported-package-ecosystems)
* [リポジトリのソフトウェア部品表のエクスポート](/ja/enterprise-server@3.22/code-security/how-tos/secure-your-supply-chain/establish-provenance-and-integrity/export-dependencies-as-sbom)

### 注意事項と制限事項

* 依存関係グラフは、サポートされているマニフェスト/ロック ファイル (およびオプションのビルド時の申請) から生成されるため、不完全であったり、実際にビルドおよびデプロイされたものとは異なる場合があります。 最も正確な情報を得るためには、特に CI/ビルド中に解決される依存関係について、依存関係グラフをビルド時の依存関係の提出（SBOM などの他のビルドの証跡を含む）で補完する必要があります。

## GitHub コード検索

### 用途

* 既知の悪意のあるワークフローやパッケージ名など、リポジトリ間で侵害インジケーター (IoC) を検索します。
* 漏洩したシークレットや悪意のあるコード スニペットなどの疑わしいコード パターンが組織全体または企業の他のリポジトリに表示されるかどうかを確認することで、潜在的な爆発半径の範囲をすばやく指定します。
* インシデント中に役立つ可能性のあるさまざまな修飾子で検索の範囲を指定します。次に例を示します。
  * ( `repo:`、 `org:`、 `enterprise:` 修飾子を使用して) 特定のリポジトリ、組織、または企業内で検索します。
  * 特定のファイル パス (`path:.github/workflows repo:ORG-NAME/REPO-NAME`) 内で検索します。

#### 権限が必要です

* パブリック リポジトリ間で検索するには、 GitHub アカウントにサインインしている必要があります。
* プライベート リポジトリ間で検索するには、それらのリポジトリへの読み取りアクセス権が必要です。

### 主要なリソース

* [コード](/ja/enterprise-server@3.22/search-github/searching-on-github/searching-code)

### 注意事項と制限事項

* 正規表現検索をサポートします。
* リポジトリの既定のブランチのみを検索します。 疑わしいコードが既定以外のブランチで導入され、マージされていない場合、コード検索では見つかりません。
* コード検索を使用して、パターンまたは IoC が存在するかどうかを判断できますが、コードがいつ追加されたか、誰によって追加されたかなどのコンテキストは提供されません。 コード検索は、監査ログ、アクティビティ ビュー、リポジトリの非難ビュー、コミット履歴、プル要求履歴などの他のツールと組み合わせて使用する必要があります。

## セキュリティの概要とセキュリティアラート

### 用途

* 組織内または企業のリポジトリ全体のすべてのセキュリティ アラート (secret scanning、 code scanning、 Dependabot アラート) の概要を確認します。
* 既に検出された GitHub をトリアージし、影響を受けるリポジトリを特定します。
* インシデント中に作成された新しいアラートを追跡します (アクティブな悪用または拡散を示す可能性があります)。

#### 権限が必要です

* エンタープライズ レベルの組織のデータを表示するには、エンタープライズ管理者が関連する組織の組織所有者またはセキュリティ マネージャーの役割を持っている必要があります。
* 組織レベルでリポジトリのデータを表示するには、組織の所有者またはセキュリティ マネージャーの役割が必要です。

### 主要なリソース

* [セキュリティの概要](/ja/enterprise-server@3.22/code-security/concepts/security-at-scale/security-overview)
* [セキュリティの分析情報の表示](/ja/enterprise-server@3.22/code-security/how-tos/view-and-interpret-data/analyze-organization-data/viewing-security-insights)

### 注意事項と制限事項

* 漏洩したシークレット、脆弱なコード、脆弱な依存関係、マルウェアに関するアラートは、インシデントの前に関連する機能が有効で構成されている場合にのみ表示されます。

## ワークフローの実行とログ

### 用途

* 特定の時点で CI/CD で実行された内容 (実行されたコマンド、インストールされている依存関係など) を確認します。
* 不審なワークフローの実行 (不慣れなユーザーや通常とは異なるタイミングでトリガーされたものなど) を調査して、実行されたアクション、アクセスされたシークレット、実行されたコードを確認します。
* 既定の `GITHUB_TOKEN`、任意の personal access tokens、 GitHub App トークン、シークレットとして格納されているその他の資格情報、ワークフローの実行中に取得されたアクセス トークンなど、ワークフロー ジョブがアクセスした資格情報を確認します。
* アーカイブ、フォレンジック、または自動化の目的で、REST API を使用してプログラムでログを取得します。

#### 権限が必要です

* リポジトリへの読み取りアクセス。

### 主要なリソース

* [ワークフロー実行の履歴を表示する](/ja/enterprise-server@3.22/actions/how-tos/monitor-workflows/view-workflow-run-history)
* [ワークフロー実行ログの使用](/ja/enterprise-server@3.22/actions/how-tos/monitor-workflows/use-workflow-run-logs)
* [ワークフローの成果物をダウンロードする](/ja/enterprise-server@3.22/actions/how-tos/manage-workflow-runs/download-workflow-artifacts)
* [GITHUB\_TOKEN](/ja/enterprise-server@3.22/actions/concepts/security/github_token)
* [GitHub Actions でのシークレットの使用](/ja/enterprise-server@3.22/actions/how-tos/write-workflows/choose-what-workflows-do/use-secrets)
* [セキュリティで保護された使用に関するリファレンス](/ja/enterprise-server@3.22/actions/reference/security/secure-use)
* [ワークフロー実行の REST API エンドポイント](/ja/enterprise-server@3.22/rest/actions/workflow-runs)
* [ワークフロー ジョブの REST API エンドポイント](/ja/enterprise-server@3.22/rest/actions/workflow-jobs)
* [ビルド システムをセキュリティで保護するためのベスト プラクティス](/ja/enterprise-server@3.22/code-security/tutorials/implement-supply-chain-best-practices/securing-builds)

### 注意事項と制限事項

* GitHub は、ワークフロー ログからシークレットを自動的に編集します。
* 既定では、ワークフロー ログは 90 日間 GitHub 保持されますが、この保持期間を構成できます。
  最大リテンション期間は 400 日です。 保持は、エンタープライズ、組織、またはリポジトリ レベルで構成できます。 構成したリテンション期間外にワークフロー実行が発生した場合、ログが使用できなくなる可能性があります。 詳細については、「[リポジトリのGitHub Actions設定の管理](/ja/enterprise-server@3.22/repositories/managing-your-repositorys-settings-and-features/enabling-features-for-your-repository/managing-github-actions-settings-for-a-repository)」、「[組織内のGitHub Actions成果物とログの保持期間の構成](/ja/enterprise-server@3.22/organizations/managing-organization-settings/configuring-the-retention-period-for-github-actions-artifacts-and-logs-in-your-organization)」、または「[企業でGitHub Actionsのポリシーを適用する](/ja/enterprise-server@3.22/admin/enforcing-policies/enforcing-policies-for-your-enterprise/enforcing-policies-for-github-actions-in-your-enterprise)」を参照してください。
* ワークフローの実行 (ログを含む) は、REST API を使用して削除することもできます。 実行が削除されたかどうかを確認するには、監査ログで `workflows.delete_workflow_run` イベントを照会します。
* 各ジョブに対して発行される既定の `GITHUB_TOKEN` は、そのジョブにスコープが設定され、ジョブが終了するか、有効な最大有効期間 (セルフホステッド ランナーでは最大 24 時間) 後に期限切れになります。 ステップがトークンをキャプチャした場合でも、ジョブの完了後に再利用することはできません。 詳細については、「[GITHUB\_TOKEN](/ja/enterprise-server@3.22/actions/concepts/security/github_token)」を参照してください。
* personal access tokens、GitHub App インストール トークン、シークレットとして格納されているサードパーティの API キーなど、ワークフローで参照されるその他の資格情報は、独自のライフサイクルを持ち、ジョブが終了しても期限切れになりません。 ワークフロー ステップがこれらの資格情報のいずれかを公開した場合、トークンは、取り消されるか、独自のポリシーに従って期限切れになるまで有効なままです。 漏えいした可能性のある資格情報は、危殆化したものとして扱い、直ちに変更または交換する必要があります。 ワークフロー ファイルとリポジトリ、組織、環境のシークレットを確認して、アクセス可能な資格情報を判断します。 詳細については、「[GitHub Actions でのシークレットの使用](/ja/enterprise-server@3.22/actions/how-tos/write-workflows/choose-what-workflows-do/use-secrets)」を参照してください。
* REST API を使用して、ワークフロー実行全体または特定のジョブのログをプログラムでダウンロードできます。 どちらのエンドポイントも、1 分間有効なリダイレクト URL を返します。 詳細については、「[ワークフロー実行の REST API エンドポイント](/ja/enterprise-server@3.22/rest/actions/workflow-runs)」および「[ワークフロー ジョブの REST API エンドポイント](/ja/enterprise-server@3.22/rest/actions/workflow-jobs)」を参照してください。
* ワークフロー実行ログは、ワークフロー ステップからの標準出力のみをキャプチャします。 ネットワーク呼び出し、ファイル システムの変更、バックグラウンド プロセスなど、標準出力に書き込まないアクティビティはログに表示されません。
* GitHub がホストするランナーの場合、ランナー環境は一時的なものであり、ジョブの完了後に破棄されます。
  GitHub では、これらのランナーのワークフロー実行ログを超えるデータは保持されません。 セルフホステッド ランナーの場合、独自のインフラストラクチャから追加のホスト レベルまたはネットワーク テレメトリを使用できる場合があります。
* より包括的な調査を行う場合は、ワークフロー実行ログと監査ログ イベントを関連付けます。
  `git.clone`、`git.fetch`、`git.push`、`protected_branch.create`、`protected_branch.policy_override`などのイベントは、追加のコンテキストを提供できます。
  GitHubホスト型監査ログの Git イベントは現在、企業では 7 日間しか保持されないため、この種の調査では、事前にストリーミングされたエンタープライズ監査ログを設定することが重要です。 詳細については、「[セキュリティ インシデントの準備](/ja/enterprise-server@3.22/code-security/tutorials/secure-your-organization/prepare-for-a-security-incident)」を参照してください。