secret-scanning について
secret-scanningは、GitHubのシークレットスキャン設定と検出された認証情報への対処を案内するスキルです。プッシュ保護、カスタムパターン、アラート対応、AIコーディングエージェントによるコミット前スキャンを扱います。
主な機能
- 01シークレットスキャンとプッシュ保護の設定
- 02カスタム正規表現パターンの作成
- 03アラートの分類と修復
- 04プッシュ拒否への対処案内
- 05AIコーディングエージェントでの変更スキャン
活用シーン
- 01リポジトリや組織で保護を有効化
- 02GitHubへの認証情報のプッシュを事前に阻止
- 03組織固有のシークレットパターンを作成
- 04検出された認証情報の確認と対処
MCP 対応
このスキルは、Advanced Securityプラグインを使ったコミット前スキャンを説明します。プラグインは `run_secret_scanning` MCPツールを提供しますが、スキル自体はMCPサーバーを説明していません。
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ github/ awesome-copilot --skill secret-scanningインストール後、Claude Code で/secret-scanningを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
references/alerts-and-remediation.mdcustom-patterns.mdpush-protection.md詳細
シークレットスキャン
このスキルでは、GitHub のシークレットスキャンを設定するための手順を説明します。漏えいした認証情報の検出、シークレットのプッシュ防止、カスタムパターンの定義、アラートの管理を行えます。
このスキルを使用する場面
次のようなリクエストで、このスキルを使用します。
- リポジトリまたは組織でシークレットスキャンを有効化または設定する
- シークレットがリポジトリに到達する前にブロックするプッシュ保護を設定する
- 正規表現を使用してカスタムシークレットパターンを定義する
- コマンドラインからブロックされたプッシュを解決する
- シークレットスキャンアラートのトリアージ、却下、または修正を行う
- プッシュ保護の委任バイパスを設定する
secret_scanning.ymlを使用してシークレットスキャンの対象からディレクトリを除外する- アラートの種類(ユーザー、パートナー、プッシュ保護)を理解する
- 有効性チェックまたは拡張メタデータチェックを有効にする
- コミット前にローカルのコード変更をスキャンしてシークレットを検出する(MCP/AI コーディングエージェント経由)。推奨プラグインについては、以下の AI コーディングエージェントによるコミット前スキャン のセクションを参照してください
シークレットスキャンの仕組み
シークレットスキャンは、次の箇所で公開された認証情報を自動的に検出します。
- すべてのブランチの Git 履歴全体
- Issue の説明、コメント、タイトル(オープンおよびクローズ済み)
- プルリクエストのタイトル、説明、コメント
- GitHub Discussions のタイトル、説明、コメント
- Wiki とシークレット Gist
利用条件
| リポジトリの種類 | 利用条件 |
|---|---|
| パブリックリポジトリ | 自動で利用可能。無料 |
| プライベート/内部(組織所有) | Team/Enterprise Cloud で GitHub Secret Protection が必要 |
| ユーザー所有 | Enterprise Managed Users を利用する Enterprise Cloud が必要 |
基本的なワークフロー — シークレットスキャンを有効にする
ステップ 1:Secret Protection を有効にする
- リポジトリの Settings → Advanced Security に移動します
- 「Secret Protection」の横にある Enable をクリックします
- Enable Secret Protection をクリックして確定します
組織で大規模に有効化するには、セキュリティ設定を使用します。
- Settings → Advanced Security → Global settings → Security configurations
ステップ 2:プッシュ保護を有効にする
プッシュ保護は、プッシュ処理中にシークレットをブロックし、リポジトリに到達するのを防ぎます。
- リポジトリの Settings → Advanced Security に移動します
- Secret Protection の下にある「Push protection」を有効にします
プッシュ保護は、次の操作でシークレットをブロックします。
- コマンドラインからのプッシュ
- GitHub UI でのコミット
- ファイルのアップロード
- REST API リクエスト
- REST API のコンテンツ作成エンドポイント
ステップ 3:除外を設定する(任意)
.github/secret_scanning.yml を作成すると、特定のディレクトリのアラートを自動的にクローズできます。
paths-ignore:
- "docs/**"
- "test/fixtures/**"
- "**/*.example"
制限:
paths-ignoreのエントリは最大 1,000 件です- ファイルサイズは 1 MB 未満にしてください
- 除外したパスは、プッシュ保護のチェック対象からも除外されます
ベストプラクティス:
- 除外パスはできるだけ具体的に指定します
- 各パスを除外する理由を説明するコメントを追加します
- 除外設定を定期的に見直し、古くなったエントリを削除します
- 除外設定についてセキュリティチームに知らせます
ステップ 4:追加機能を有効にする(任意)
プロバイダー以外のパターン — 秘密鍵、接続文字列、汎用 API キーを検出します。
- Settings → Advanced Security → 「Scan for non-provider patterns」を有効にします
AI による汎用シークレット検出 — Copilot を使用して、パスワードのような構造化されていないシークレットを検出します。
- Settings → Advanced Security → 「Use AI detection」を有効にします
有効性チェック — 検出したシークレットが現在も有効かどうかを確認します。
- Settings → Advanced Security → 「Validity checks」を有効にします
- GitHub は検出した認証情報をプロバイダーの API に対して定期的にテストします
- ステータスはアラートに
active、inactive、またはunknownと表示されます
拡張メタデータチェック — シークレットの所有者に関する追加情報を提供します。
- 先に有効性チェックを有効にする必要があります
- 修正の優先順位付けや、担当チームの特定に役立ちます
基本的なワークフロー — ブロックされたプッシュを解決する
プッシュ保護によってコマンドラインからのプッシュがブロックされた場合:
方法 A:シークレットを削除する
シークレットが最新のコミットに含まれている場合:
# Remove the secret from the file
# Then amend the commit
git commit --amend --all
git push
シークレットがそれ以前のコミットに含まれている場合:
# Find the earliest commit containing the secret
git log
# Start interactive rebase before that commit
git rebase -i <COMMIT-ID>~1
# Change 'pick' to 'edit' for the offending commit
# Remove the secret, then:
git add .
git commit --amend
git rebase --continue
git push
オプション B:プッシュ保護を回避する
- プッシュエラーメッセージに表示された URL にアクセスします(同じユーザーとして)
- 回避する理由を選択します:
- テストで使用されています — アラートが作成され、自動的にクローズされます
- 誤検知です — アラートが作成され、自動的にクローズされます
- 後で修正します — オープン状態のアラートが作成されます
- このシークレットのプッシュを許可するをクリックします
- 3 時間以内に再度プッシュします
オプション C:回避権限をリクエストする
委任回避が有効になっていて、回避権限がない場合:
- プッシュエラーに記載された URL にアクセスします
- シークレットが安全である理由を説明するコメントを追加します
- リクエストを送信をクリックします
- 承認または却下のメール通知を待ちます
- 承認された場合はコミットをプッシュします。却下された場合はシークレットを削除します
回避と委任回避の詳細なワークフローについては、
references/push-protection.mdを検索してください。
カスタムパターン
正規表現を使用して、組織固有のシークレットパターンを定義します。
クイックセットアップ
- Settings → Advanced Security → Custom patterns → 新しいパターン
- パターン名とシークレット形式の正規表現を入力します
- サンプルのテスト文字列を追加します
- 保存してドライランをクリックしてテストします(最大 1,000 件の結果)
- 結果を確認し、誤検知がないか確認します
- パターンを公開をクリックします
- 必要に応じて、そのパターンのプッシュ保護を有効にします
スコープ
カスタムパターンは次のレベルで定義できます:
- リポジトリレベル — そのリポジトリのみに適用されます
- 組織レベル — シークレットスキャンが有効なすべてのリポジトリに適用されます
- エンタープライズレベル — すべての組織に適用されます
Copilot によるパターン生成
Copilot のシークレットスキャンを使用すると、シークレットの種類をテキストで説明して正規表現を生成できます。任意でサンプル文字列も含められます。
カスタムパターンの設定について詳しくは、
references/custom-patterns.mdを検索してください。
アラート管理
アラートの種類
| 種類 | 説明 | 表示場所 |
|---|---|---|
| ユーザーアラート | リポジトリで検出されたシークレット | Security タブ |
| プッシュ保護アラート | 回避によってプッシュされたシークレット | Security タブ(フィルター:bypassed: true) |
| パートナーアラート | プロバイダーに報告されたシークレット | リポジトリには表示されません(プロバイダーのみ) |
アラート一覧
- デフォルトのアラート — 対応プロバイダーのパターンとカスタムパターン
- 汎用アラート — プロバイダー以外のパターンと AI が検出したシークレット(リポジトリあたり最大 5,000 件)
修正の優先順位
- 認証情報を直ちにローテーションします — これが最も重要な対応です
- アラートを確認して状況を把握します(場所、コミット、作成者)
- 有効性のステータスを確認します:
active(緊急)、inactive(優先度低)、unknown - 必要に応じて Git の履歴から削除します(時間がかかりますが、ローテーション後は不要な場合がほとんどです)
アラートの却下
理由を記録してアラートを却下します:
- 誤検知 — 検出された文字列は実際のシークレットではありません
- 失効済み — 認証情報はすでに失効しています
- テストで使用 — シークレットはテストコードにのみ含まれています
アラートの種類、有効性の確認、REST API について詳しくは、
references/alerts-and-remediation.mdを検索してください。
AI コーディングエージェントを使用したコミット前スキャン
コミット前に AI コーディングエージェント内でコードの変更にシークレットが含まれていないかスキャンするには、run_secret_scanning MCP ツールと専用のスキャンスキルを提供する Advanced Security plugin をインストールします。
GitHub Copilot CLI:
/plugin install advanced-security@copilot-plugins
Visual Studio Code:
- Copilot Chat で Chat: Plugins を開く(または
@agentPluginsを使用する)と、advanced-securityプラグインをインストールできます - 次に、Copilot Chat で
/secret-scanningを実行します
参照:Advanced Security Plugin — シークレットスキャンスキル
GitHub MCP Server を介した AI コーディングエージェントでのシークレットスキャンで発表されました(2026 年 3 月)
参照ファイル
詳細なドキュメントについては、必要に応じて以下の参照ファイルを読み込んでください:
references/push-protection.md— プッシュ保護の仕組み、バイパスのワークフロー、委任されたバイパス、ユーザープッシュ保護- 検索パターン:
bypass、delegated、bypass request、command line、REST API、user push protection
- 検索パターン:
references/custom-patterns.md— カスタムパターンの作成、正規表現構文、ドライラン、Copilot の正規表現生成、スコープ- 検索パターン:
custom pattern、regex、dry run、publish、organization、enterprise、Copilot
- 検索パターン:
references/alerts-and-remediation.md— アラートの種類、有効性チェック、拡張メタデータ、汎用アラート、シークレットの削除、REST API- 検索パターン:
user alert、partner alert、validity、metadata、generic、remediation、git history、REST API
- 検索パターン: