API キーやパスワードなどの資格情報がハードコーディングされたシークレットとしてリポジトリにコミットされると、承認されていないアクセスのターゲットになります。 Secret scanning は資格情報リークを自動的に検出するため、悪用される前にセキュリティで保護できます。
ヒント
漏洩したシークレットについては、いつでも組織のコードの無料評価を実行できます。
レポートを生成するには、 組織の [ Security and quality] タブで、[評価] ページを表示し、[組織のスキャン] をクリックします。を開きます。
シークレット スキャンによってコードが保護されるしくみ
Secret scanning は、リポジトリのすべてのブランチで Git 履歴全体をスキャンして、API キー、パスワード、トークン、その他の既知のシークレットの種類など、ハードコーディングされた資格情報を探します。 これにより、セキュリティ リスクになる前に、シークレットのスプロール(リポジトリ間での資格情報の制御不能な急増)を特定するのに役立ちます。 GitHub また、新しいシークレットの種類が追加されると、リポジトリも定期的に再スキャンされます。
GitHub また、次の項目も自動的にスキャンされます。
- 問題の説明とコメント
- オープンとクローズの過去の問題のタイトル、説明、およびコメント
- pull request のタイトル、説明とコメント
- GitHub Discussions 内のタイトル、説明、およびコメント
- ウィキス
- 秘密の要旨
GitHub Actions ワークフロー ログで検出されたシークレット
メモ
GitHub Actionsワークフロー ログ内のシークレットの検出はパブリック プレビューであり、変更される可能性があります。
GitHub Actions ワークフロー ログのスキャンは既定で無効になっています。 エンタープライズ所有者は、そのエンタープライズ内のすべてのリポジトリに対して有効にすることができます。 詳細については、「エンタープライズのコード セキュリティと分析のためのポリシーの適用」を参照してください。
有効にすると、GitHub は、secret scanning が有効になっているリポジトリについて、実行の完了後に各新しいワークフロー実行のログをスキャンします。 過去のワークフロー実行のログはスキャンされません。
GitHub Actionsワークフロー ログの場合、secret scanningはプロバイダー パターンのみを検出します。 ログ内でAI で検出されたシークレットによってマスクされる値、汎用パターン、カスタム パターン、GitHub Actionsは検出されません。
GitHub Actions ワークフロー ログ内のシークレットに関するアラートは、パブリック プレビュー中に通知を生成しません。 これらのアラートを確認するには、リポジトリの secret scanning アラートを確認します。
複数のワークフロー実行またはジョブで同じシークレットが表示された場合、1 つのアラートが複数の場所を参照する可能性があります。 各場所について、アラートは、シークレットの元となったワークフロー ファイルと、シークレットが出力されたログ行にリンクします。 アラートには、ログ コンテンツのインライン プレビューは含まれません。
Secret scanning アラートと修復
secret scanningが資格情報の漏洩を検出すると、GitHubは公開された資格情報に関する詳細を含むアラートをリポジトリの** Security and quality** タブに生成します。
アラートを受信したら、影響を受ける資格情報をすぐにローテーションして、承認されていないアクセスを防ぎます。 Git 履歴からシークレットを削除することもできますが、これは時間がかかり、資格情報を既に取り消している場合は多くの場合不要です。
パートナー統合
GitHub は、検出されたシークレットを検証するために、さまざまなサービス プロバイダーと連携します。 パートナー シークレットが検出されると、資格情報の取り消しなどのアクションを実行できるように、プロバイダーに通知します。 パートナー シークレットはプロバイダーに直接報告され、リポジトリのアラートには表示されません。 詳細については、「Secret scanningパートナープログラム」を参照してください。
カスタマイズ
パートナーシークレットとプロバイダー シークレットの既定の検出以外にも、ニーズに合わせて secret scanning を拡張およびカスタマイズできます。
-
ジェネリック パターン。 秘密キー、接続文字列、汎用 API キーなど、特定のサービス プロバイダーに関連付けられていないシークレットに検出を拡張します。
-
カスタム パターン。 既定のパターンでカバーされていない組織固有のシークレットを検出する独自の正規表現を定義します。
-
有効性チェック。 検出されたシークレットがまだアクティブであるかどうかを確認して、修復に優先順位を付けます。
-
AI で検出されたシークレット. AI を使用して、パスワードなどの非構造化シークレットを検出します。
-
AI によって生成された正規表現。 AI を使用して、カスタム パターンの正規表現を生成します。
有効性チェックについて
有効性チェックは、検出されたシークレットがまだアクティブであるかどうかを確認することで、最初に修復するシークレットに優先順位を付けるのに役立ちます。 有効性チェックを有効にすると、 secret scanning はシークレットの発行元サービスに連絡して、資格情報が取り消されたかどうかを判断できます。 詳細については、「有効性チェック」を参照してください。
この機能にアクセスするにはどうすればよいですか?
Secret scanning は、次のリポジトリの種類で使用できます。
- パブリック リポジトリ: Secret scanning は無料で自動的に実行されます。
- 組織所有のプライベートリポジトリと内部リポジトリ: GitHub Team または GitHub Enterprise Cloud で有効になっている GitHub Secret Protection で使用できます。
- ユーザー所有のリポジトリ: GitHub Enterprise Cloud および Enterprise Managed Users で利用可能です。 GitHub Enterprise Server で使用できるのは、エンタープライズで GitHub Secret Protection が有効になっている場合です。
パブリック監視
企業が所有するリポジトリのスキャンに加えて、パブリック監視を有効にして、 GitHub全体のパブリック リポジトリ内のエンタープライズ メンバーによって漏洩したシークレットを検出できます。 これにより、 secret scanning は企業が所有するリポジトリを超えて拡張され、プラットフォーム全体でメンバーのアクティビティに従います。 「シークレット スキャンのパブリック監視」を参照してください。