# 漏洩したシークレットの修復作業を整理する

セキュリティ キャンペーンとアラートの割り当てを使用して、漏洩したシークレットの修復を体系的に整理して管理します。

## イントロダクション

このチュートリアルでは、漏洩したシークレットの修復作業を整理します。 学習内容は次のとおりです。

* 修復作業を追跡するセキュリティ キャンペーンを作成する
* 所有権に基づいてアラートを割り当てる
* 修復の進行状況を監視する
* 利害関係者とコミュニケーションを取る

## 前提条件

* 組織で GitHub Secret Protection と secret scanning の両方を有効にする必要があります。 「[価格と有効化 GitHub Secret Protection](/ja/code-security/how-tos/secure-at-scale/configure-organization-security/configure-specific-tools/protect-your-secrets)」を参照してください。
* 既存の secret scanning アラートが使用可能である必要があります。

## 手順 1: シークレット スキャンニング アラート を確認する

アクションを実行する前に、組織のセキュリティ アラートの現在の状態を理解する必要があります。

1. GitHub で、organization のメイン ページに移動します。

2. 組織名の下の \[ **<svg version="1.1" width="16" height="16" viewBox="0 0 16 16" class="octicon octicon-shield" aria-label="shield" role="img"><path d="M7.467.133a1.748 1.748 0 0 1 1.066 0l5.25 1.68A1.75 1.75 0 0 1 15 3.48V7c0 1.566-.32 3.182-1.303 4.682-.983 1.498-2.585 2.813-5.032 3.855a1.697 1.697 0 0 1-1.33 0c-2.447-1.042-4.049-2.357-5.032-3.855C1.32 10.182 1 8.566 1 7V3.48a1.75 1.75 0 0 1 1.217-1.667Zm.61 1.429a.25.25 0 0 0-.153 0l-5.25 1.68a.25.25 0 0 0-.174.238V7c0 1.358.275 2.666 1.057 3.86.784 1.194 2.121 2.34 4.366 3.297a.196.196 0 0 0 .154 0c2.245-.956 3.582-2.104 4.366-3.298C13.225 9.666 13.5 8.36 13.5 7V3.48a.251.251 0 0 0-.174-.237l-5.25-1.68ZM8.75 4.75v3a.75.75 0 0 1-1.5 0v-3a.75.75 0 0 1 1.5 0ZM9 10.5a1 1 0 1 1-2 0 1 1 0 0 1 2 0Z"></path></svg> Security and quality** ] タブをクリックします。

3. 左側のサイドバーの \[結果] で、<svg version="1.1" width="16" height="16" viewBox="0 0 16 16" class="octicon octicon-chevron-down" aria-label="chevron-down" role="img"><path d="M12.78 5.22a.749.749 0 0 1 0 1.06l-4.25 4.25a.749.749 0 0 1-1.06 0L3.22 6.28a.749.749 0 1 1 1.06-1.06L8 8.939l3.72-3.719a.749.749 0 0 1 1.06 0Z"></path></svg>の右側にあるSecret scanning記号をクリックします。

4. ドロップダウン リストで、 `Default`を選択します。
   `Default` は、サポートされているパターンと指定されたカスタム パターンに関連しています。

5. または、 `Generic` を選択して、パスワードなどの非構造化シークレットを確認することもできます。 ただし、一般的なパターンでは通常、既定のパターンよりも多くの誤検知が発生するため、優先順位の高いリークに対処した後でこれらのアラートを確認することを検討してください。

6. 影響を受ける開いているアラートとリポジトリの合計数を確認します。

7. フィルターを使用して最も緊急なアラートを特定し、修復作業に優先順位を付けます。
   * **パブリック** リポジトリにリークを表示するには、`publicly-leaked`を使用します。
   * 同じ組織内または企業内の **複数のリポジトリ** で見つかったシークレット リークを表示するには、 `is:multi-repository`を使用します。
   * **有効な**シークレットを表示するには、`validity:active`を使用します。
   * 特定の **サービス** 資格情報 (AWS、Azure、 GitHub) でフィルター処理するには、 `provider:`を使用します。
   * 特定の **トークンの種類**でフィルター処理するには、 `secret-type:`を使用します。

8. 必要に応じて、サイドバーの \[Insights] の下にある \[ **Secret scanning** ] をクリックすると、次の情報が表示されます。
   * 最も頻繁にブロックまたはバイパスされたシークレットの種類
   * ブロックされたプッシュまたはバイパスが最も多いリポジトリ

## 手順 2: セキュリティ キャンペーンを作成する

リポジトリ間で修復作業を整理して追跡するためのセキュリティ キャンペーンを設定できます。

1. 組織に移動し、\[ **<svg version="1.1" width="16" height="16" viewBox="0 0 16 16" class="octicon octicon-shield" aria-label="shield" role="img"><path d="M7.467.133a1.748 1.748 0 0 1 1.066 0l5.25 1.68A1.75 1.75 0 0 1 15 3.48V7c0 1.566-.32 3.182-1.303 4.682-.983 1.498-2.585 2.813-5.032 3.855a1.697 1.697 0 0 1-1.33 0c-2.447-1.042-4.049-2.357-5.032-3.855C1.32 10.182 1 8.566 1 7V3.48a1.75 1.75 0 0 1 1.217-1.667Zm.61 1.429a.25.25 0 0 0-.153 0l-5.25 1.68a.25.25 0 0 0-.174.238V7c0 1.358.275 2.666 1.057 3.86.784 1.194 2.121 2.34 4.366 3.297a.196.196 0 0 0 .154 0c2.245-.956 3.582-2.104 4.366-3.298C13.225 9.666 13.5 8.36 13.5 7V3.48a.251.251 0 0 0-.174-.237l-5.25-1.68ZM8.75 4.75v3a.75.75 0 0 1-1.5 0v-3a.75.75 0 0 1 1.5 0ZM9 10.5a1 1 0 1 1-2 0 1 1 0 0 1 2 0Z"></path></svg> Security and quality**] をクリックします。
2. 左側のパネルで、\[**キャンペーン<svg version="1.1" width="16" height="16" viewBox="0 0 16 16" class="octicon octicon-goal" aria-label="goal" role="img"><path d="M13.637 2.363h-.001l1.676.335c.09.018.164.084.19.173a.25.25 0 0 1-.062.249l-1.373 1.374a.876.876 0 0 1-.619.256H12.31L9.45 7.611A1.5 1.5 0 1 1 6.5 8a1.501 1.501 0 0 1 1.889-1.449l2.861-2.862V2.552c0-.232.092-.455.256-.619L12.88.559a.25.25 0 0 1 .249-.062c.089.026.155.1.173.19Z"></path><path d="M2 8a6 6 0 1 0 11.769-1.656.751.751 0 1 1 1.442-.413 7.502 7.502 0 0 1-12.513 7.371A7.501 7.501 0 0 1 10.069.789a.75.75 0 0 1-.413 1.442A6.001 6.001 0 0 0 2 8Z"></path><path d="M5 8a3.002 3.002 0 0 0 4.699 2.476 3 3 0 0 0 1.28-2.827.748.748 0 0 1 1.045-.782.75.75 0 0 1 .445.61A4.5 4.5 0 1 1 8.516 3.53a.75.75 0 1 1-.17 1.49A3 3 0 0 0 5 8Z"></path></svg>選択します**。
3. \[**キャンペーン <svg version="1.1" width="16" height="16" viewBox="0 0 16 16" class="octicon octicon-triangle-down" aria-label="triangle down icon" role="img"><path d="m4.427 7.427 3.396 3.396a.25.25 0 0 0 .354 0l3.396-3.396A.25.25 0 0 0 11.396 7H4.604a.25.25 0 0 0-.177.427Z"></path></svg>の作成**] をクリックし、次のいずれかをクリックします。
   * 定義済みのシークレット キャンペーン テンプレートを選択します。
   * カスタム フィルターを使用して、特定のアラート ( `is:open provider:azure` や `is:open validity:active`など) を対象とします。
4. アラート (最大 1000) を確認し、必要に応じてフィルターを調整します。
5. \[ **名前を付けて保存]** をクリックし、\[ **キャンペーンの発行]** を選択します。
6. キャンペーン情報を入力し、\[キャンペーンの **発行**] をクリックします。

## 手順 3: チーム メンバーにアラートを割り当てる

キャンペーンを作成したら、それらを修正する開発者に個別のアラートを割り当てる必要があります。

1. キャンペーン ページで、\[ <svg version="1.1" width="16" height="16" viewBox="0 0 16 16" class="octicon octicon-chevron-right" aria-label="Toggle to expand or collapse the repository view" role="img"><path d="M6.22 3.22a.75.75 0 0 1 1.06 0l4.25 4.25a.75.75 0 0 1 0 1.06l-4.25 4.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042L9.94 8 6.22 4.28a.75.75 0 0 1 0-1.06Z"></path></svg> ] をクリックしてリポジトリを展開し、そのアラートを表示します。
2. アラートをクリックして詳細ページを開きます。
3. 右側のサイドバーで、\[ **担当者**] をクリックします。
4. アラートを修正する開発者を選択します。 通常、これは、シークレットをコミットした人またはリークが検出されたリポジトリの管理者です。 彼らは書き込みアクセス権が必要です。

## 手順 4: 修復の進行状況を監視する

アラートが割り当てられたら、キャンペーンの進行状況を定期的に追跡して、タイムリーに完了できるようにする必要があります。

1. キャンペーン ページで、キャンペーンの概要を確認します。 今にわかります：
   * **キャンペーンの進行状況**: 閉じている (固定または無視された) アラートの数、またはまだ確認が残っているアラートの数
   * **状態**: キャンペーンの期限までの日数
2. キャンペーンの詳細を調べることができます。
   * リポジトリを展開して、アラートの修復の進行状況を確認します。
   * すべてのアラートの一覧を表示するには、\[ **グループ化** ] を **\[なし]** に設定します。
   * フィルターを使用して、特定のリポジトリまたはアラートに焦点を当てます。
3. 最も多くのオープンアラートがあるリポジトリまたは最近の進捗がないリポジトリに基づいて注目すべきエリアを特定し、それらのリポジトリの管理者や担当者にサポートのため連絡します。

## 手順 5: 利害関係者と通信する

修復プロセス全体を通じて、定期的な進行状況の更新について関係者に通知する必要があります。 キャンペーン ダッシュボードの情報を使用して、これらの更新プログラムを生成できます。

1. キャンペーン ダッシュボードに移動します。
2. レポートに含める情報を特定します。 次の主要なメトリックについて考えてみましょう。
   * 今週解決されたアラート
   * 開いている残りのアラート
   * オントラック項目とリスクがある項目
   * 注目すべき実績または阻害要因
3. メトリックを更新プログラムに組み込み、メール、Slack、Teams、またはセキュリティ会議を介して配布します。

## 手順 6: 修復手順を文書化する

最後に、将来の修復作業をより効率的にするために、標準化された手順を作成する必要があります。

1. シークレットの種類固有のガイドを開発します。 例えば次が挙げられます。
   * **AWS の資格情報**: アクセス キーをローテーションしてサービスを更新する方法
   * **GitHub トークン**: 取り消して再生成する方法 Personal Access Tokens
   * **API キー**: サービス固有のローテーション プロシージャ
   * **データベース資格情報**: サービスの中断を伴わない安全なローテーション
2. 修復チェックリストを作成します。
   1. シークレットが実際にリークされていることを確認します。
   2. シークレットがまだアクティブかどうかを確認します。
   3. 侵害されたシークレットを無効化するか、ローテートします。
   4. 古いシークレットを使用して、すべてのシステムを更新します。
   5. システムが新しい資格情報で機能することをテストします。
   6. インシデントと修復の手順を文書化します。
   7. アラートを解決済みとしてマークします。
3. エスカレーション パスを確立します。
   * セキュリティ リーダーシップにエスカレートするタイミングを定義します。
   * さまざまなシークレットの種類について、主題の専門家を特定します。
   * 重大なリークに対するインシデント対応手順を作成します。