Skip to main content

シークレット スキャンについて

GitHub はリポジトリをスキャンして既知のシークレットのタイプを探し、誤ってコミットされたシークレットの不正使用を防止します。

パートナーに対するシークレット スキャンニング アラート はパブリック リポジトリとパブリック npm パッケージで自動的に実行され、GitHub.com で漏洩したシークレットについてサービス プロバイダーに通知します。

ユーザーに対するシークレット スキャンニング アラート は、すべてのパブリック リポジトリで無料で利用できます。 GitHub Enterprise Cloud を使い、GitHub Advanced Security のライセンスを持っている組織は、プライベート リポジトリと内部リポジトリに対して ユーザーに対するシークレット スキャンニング アラート を有効にすることもできます。 詳細については、「シークレット スキャンについて」と「GitHub Advanced Security について」を参照してください。

secret scanningについて

プロジェクトを外部サービスと通信させる場合、認証にトークンまたは秘密鍵を使用できます。 トークンや秘密鍵は、サービスプロバイダが発行できるシークレットです。 リポジトリにシークレットをチェックインする場合、リポジトリへの読み取りアクセスを持つすべてのユーザがシークレットを使用して、自分の権限で外部サービスにアクセスできます。 シークレットは、プロジェクトのリポジトリの外の、安全な専用の場所に保存することをお勧めします。

Secret scanning では、シークレットの GitHub リポジトリに存在するすべてのブランチ上の Git 履歴全体がスキャンされます。 Secret scanning では、シークレットの問題の説明とコメントも検索されます。

さらに、secret scanning では、未解決の issue と解決済みの過去の issue でタイトル、説明、コメントがスキャンされ、漏洩したシークレットが

Secret scanningは、GitHub.com で次の 2 つの形式で使用できます。

  1. パートナーに対するシークレット スキャンニング アラート. すべてのパブリック リポジトリとパブリック npm パッケージで自動的に実行されます。 サービス プロバイダーは GitHub と提携して、スキャンのためのシークレット フォーマットを指定することができます。そのため、"パートナー" と呼ばれます。 パートナー プログラムについては、「Secret scanningパートナープログラム」を参照してください。 シークレット スキャン パートナーによって指定されたパターンと一致するすべての文字列が、関連するパートナーに直接報告されます。 詳細については、以下の「パートナーに対するシークレット スキャンニング アラート について」セクションを参照してください。

  2. ユーザーに対するシークレット スキャンニング アラート. 次のユーザーは、追加のスキャンを有効にして構成できます。

    • GitHub.com のリポジトリの所有者で、所有するすべての "パブリック" リポジトリ。__
    • これらのリポジトリのいずれかで、"パブリック" リポジトリを所有する組織。__
    • GitHub Enterprise Cloud を使う組織が、パブリック リポジトリに対して (無料)、また GitHub Advanced Security のライセンスがある場合は、プライベート リポジトリと内部リポジトリに対して。

シークレット スキャン パートナーが指定したか、その他のサービス プロバイダーが指定したか、自分または自分の Organization が定義したパターンに一致する文字列は、リポジトリの [セキュリティ] タブでアラートとして報告されます。 パブリック リポジトリ内の文字列がパートナー パターンと一致する場合は、パートナーにも報告されます。 詳細については、以下の「ユーザーに対するシークレット スキャンニング アラート について」セクションを参照してください。

GitHub ツールを使用して、secret scanning アラートに応答して実行されたアクションを監査できます。 詳しくは、「セキュリティ アラートの監査」を参照してください。

また、リポジトリまたは組織のプッシュ保護としてsecret scanningを有効にすることもできます。 この機能を有効にすると、secret scanningでは、共同作成者が検出済みのシークレットを含むコードをプッシュできなくなります。 続行するには、共同作成者がプッシュからシークレットを削除するか、必要に応じて保護をバイパスします。 また、管理者は、push がブロックされると共同作成者に表示されるカスタム リンクを指定することもできます。このリンクには、共同作成者を支援するための Organization 固有のリソースが含まれています。 詳しくは、「リポジトリと組織のプッシュ保護」をご覧ください。

さらに、プッシュ保護を自分で有効にして、プッシュ先のパブリック リポジトリに関係なく保護することができます。 詳しくは、「ユーザーのプッシュ保護」を参照してください。

注: secret scanning またはプッシュ保護が有効になっているリポジトリをフォークした場合、フォークではこれらの機能は既定で有効になりません。 スタンドアロン リポジトリで有効にするのと同じ方法で、secret scanning を有効にするか、フォークで保護をプッシュできます。

パートナーに対するシークレット スキャンニング アラート

について

リポジトリをパブリックにするか、パブリック リポジトリに変更をプッシュすると、GitHub では常にコードがスキャンされて、パートナー パターンと一致するシークレットがないか確認されます。 npm レジストリのパブリック パッケージもスキャンされます。 Secret scanning では、シークレットの問題の説明とコメントも検索されます。 secret scanning によって潜在的シークレットが検出された場合、シークレットを発行したサービス プロバイダーに通知します。 サービス プロバイダーは文字列を検証してから、シークレットを取り消すか、新しいシークレットを発行するか、または直接連絡するかを決定します。 その対応は、ユーザーまたはプロバイダーに関連するリスクによって決まります。 詳しくは、「secret scanning パターン」を参照してください。

パブリック リポジトリ上のパートナー パターンの secret scanning の構成を変更することはできません。

ユーザーに対するシークレット スキャンニング アラートについて

ユーザーに対するシークレット スキャンニング アラート は、すべてのパブリック リポジトリに対して無料で利用できます。リポジトリに対して secret scanning を有効にする場合、GitHub によって、多くのサービス プロバイダーが使うシークレットに一致するパターンがコードでスキャンされます。 スキャンが完了すると、GitHub は、シークレットが見つからなかった場合でも、エンタープライズおよび組織の所有者にメール アラートを送信します。

Secret scanning では、シークレットの問題の説明とコメントも検索されます。サポートされているシークレットが漏洩した場合、GitHub は、secret scanning アラートを生成します。 GitHub では、secret scanning が有効になっているパブリック リポジトリ内の既存のコンテンツの完全な Git 履歴スキャンも定期的に実行され、secret scanning アラート通知設定に従ってアラート通知が送信されます。 詳細については、「ユーザー アラートに対してサポートされているシークレット」を参照してください。

リポジトリ管理者は、任意のパブリック リポジトリに対して ユーザーに対するシークレット スキャンニング アラート を有効にすることができます。 組織の所有者は、すべてのパブリック リポジトリ、または組織内のすべての新しいパブリック リポジトリに対して ユーザーに対するシークレット スキャンニング アラート を有効にすることもできます。 詳細については、「リポジトリのセキュリティと分析設定を管理する」および「組織のセキュリティおよび分析設定を管理する」を参照してください。

リポジトリ、組織、またはエンタープライズ用のカスタム secret scanning パターンを定義することもできます。 詳しくは、GitHub Enterprise Cloud ドキュメントの「シークレット スキャンのカスタム パターンの定義」をご覧ください。

GitHub は、転送中と保存時の両方で対称暗号化を使用して検出されたシークレットを格納します。

シークレット スキャンニング アラート

へのアクセス

リポジトリの secret scanning を有効にする、または secret scanning が有効になっているリポジトリにコミットをプッシュすると、GitHub によってその内容がスキャンされ、サービス プロバイダーで定義されているパターンと一致するシークレットが確認されます。 Secret scanning では、シークレットの問題の説明とコメントも検索されます。 GitHub では、新たなパートナー パターンが追加または更新される際に secret scanning が有効になっているパブリック リポジトリ内のすべての履歴コード コンテンツのスキャンも実行されます。

secret scanning がコミット、イシューの説明、またはコメント内のシークレットを検出した場合、GitHub によってアラートが生成されます。

  • GitHub は、リポジトリ管理者と Organizationのオーナーにメールアラートを送信します。 リポジトリ を監視しており、セキュリティ アラートまたはリポジトリ上のすべてのアクティビティに対して、および通知設定で通知を有効にしている場合、監視しているリポジトリに関してメール通知を受け取るよう選択済みの場合、アラートが通知されます。
  • コミット、イシューの説明、またはコメントでシークレットを導入したユーザーがリポジトリを無視していない場合、GitHub によって電子メール アラートも送信されます。 メールには、関連する secret scanning アラートへのリンクが含まれています。 シークレットを導入したユーザーは、リポジトリでこのアラートを表示して、アラートを解決できます。
  • GitHub のリポジトリの [セキュリティ] タブにアラートが表示されます。

シークレット スキャンニング アラート の表示と解決について詳しくは、「シークレット スキャンからのアラートの管理」を参照してください。

シークレット スキャンニング アラート の通知を構成する方法の詳細については、「シークレット スキャン アラートの通知を構成する」を参照してください。

リポジトリ管理者と組織所有者は、ユーザーおよびチームに シークレット スキャンニング アラート へのアクセスを許可できます。 詳しくは、「リポジトリのセキュリティと分析設定を管理する」を参照してください。

また、REST API を使って、リポジトリ全体でsecret scanningからの結果を監視できます。 API エンドポイントについて詳しくは、「シークレット スキャン」を参照してください。

参考資料

アクティブ化するには Alt キーを押しながら↑キーを押します