Skip to main content

シークレット スキャンによるプッシュの保護

secret scanning を使って、プッシュ保護を有効にすることで、サポートされているシークレットが組織またはリポジトリにプッシュされないようにすることができます。

Secret scanning is available for organization-owned repositories in GitHub Enterprise Server if your enterprise has a license for GitHub Advanced Security. 詳細については、「GitHub Advanced Security について」を参照してください。

注: この機能を使用するには、サイト管理者が your GitHub Enterprise Server instance の secret scanning を有効にする必要があります。 詳しくは、「アプライアンスでの secret scanning の構成」をご覧ください。

注: 保護プッシュとしてのSecret scanningは、現在ベータ版であり、変更される可能性があります。 ベータ版リリースへのアクセスを要求するには、アカウント管理チームにお問い合わせください

シークレットのプッシュ保護について

これまで、secret scanningは、プッシュ "" にシークレットをチェックし、公開されたシークレットに対してユーザーに警告します。 プッシュ保護を有効にすると、secret scanning は、信頼度の高いシークレット (誤検知率が低いシークレット) のプッシュもチェックします。 Secret scanning には、作成者がシークレットを確認して削除できるように、検出したシークレットが一覧表示されます。また、必要に応じて、それらのシークレットをプッシュできるようにします。

共同作成者がシークレットのプッシュ保護ブロックをバイパスする場合、GitHub では次のことが行われます。

  • アラートを生成する。
  • リポジトリの [セキュリティ] タブでアラートを作成する。
  • バイパス イベントを監査ログに追加する。

プッシュ保護に対応しているシークレットとサービス プロバイダーの詳細については、「Secret scanning パターン」を参照してください。

プッシュ保護としての secret scanning の有効化

プッシュ保護として secret scanning を使用するには、組織またはリポジトリで GitHub Advanced Security と secret scanning の両方が有効になっている必要があります。 詳細については、「組織のセキュリティと分析の設定の管理」、「リポジトリのセキュリティと分析の設定の管理」、「GitHub Advanced Security について」を参照してください。

組織の所有者、セキュリティ マネージャー、リポジトリ管理者は、UI と API を介して secret scanning のプッシュ保護を有効にすることができます。 詳細については、「リポジトリ」を参照し、REST API ドキュメントの "security_and_analysis オブジェクトのプロパティ" セクションを展開します。

組織のプッシュ保護としての secret scanning の有効化

  1. your GitHub Enterprise Server instance で、Organization のメイン ページへ移動します。 1. Organization 名の下で、 [設定] をクリックします。 Organization の設定ボタン
  2. In the "Security" section of the sidebar, click Code security and analysis.
  3. [コードのセキュリティと分析] の下で、「GitHub Advanced Security」を見つけてください。 1. Secret scanning の [プッシュ保護] の下にある [すべて有効にする] をクリックします。 Organization の secret scanning のプッシュ保護を有効にする方法を示すスクリーンショット
  4. 必要に応じて、[secret scanning に追加されたプライベート リポジトリに対して自動的に有効にする] をクリックしてください。

リポジトリのプッシュ保護としての secret scanning の有効化

  1. your GitHub Enterprise Server instance で、リポジトリのメイン ページへ移動します。 1. リポジトリ名の下の [ 設定] をクリックします。 リポジトリの設定ボタン
  2. In the "Security" section of the sidebar, click Code security and analysis.
  3. [コードのセキュリティと分析] の下で、「GitHub Advanced Security」を見つけてください。 1. Secret scanning の [Push protection](プッシュ保護) の下にある [有効にする] をクリックします。 リポジトリの secret scanning のプッシュ保護を有効にする方法を示すスクリーンショット

コマンド ラインからのプッシュ保護としてシークレット スキャンを使用する

プッシュ保護としての secret scanning が有効になっているリポジトリまたは組織に、サポートされているシークレットをプッシュしようとすると、GitHub によってプッシュがブロックされます。 ブランチからシークレットを削除するか、指定された URL に従ってプッシュを許可できます。

検出されたシークレットは、コマンド ラインに一度に最大 5 つ表示されます。 リポジトリで特定のシークレットが既に検出されていて、アラートが既に存在する場合、GitHub はそのシークレットをブロックしません。

ユーザーがリポジトリにシークレットをプッシュしようとしたときにプッシュがブロックされることを示すスクリーンショット

シークレットが本物であることを確認したら、再度プッシュする前に、ブランチから ("それが表示されるすべてのコミットから") シークレットを削除する必要があります。 ブロックされたシークレットの修復について詳しくは、「プッシュ保護によってブロックされたブランチのプッシュ」を参照してください。

シークレットが本物で、後で修正する予定であることを確認する場合は、できるだけ早くシークレットの修復を目指す必要があります。 たとえば、シークレットを取り消し、リポジトリのコミット履歴からシークレットを削除できます。 不正アクセスを回避するために、公開されている実際のシークレットを取り消す必要があります。 取り消す前に、まずシークレットをローテーションすることを検討できます。 詳細については、「Removing sensitive data from a repository」 (リポジトリからの機密データの削除) を参照してください。

:

  • Git 構成で現在のブランチだけでなく、複数のブランチへのプッシュがサポートされている場合、追加の意図しない参照がプッシュされるため、プッシュがブロックされる可能性があります。 詳細については、Git ドキュメントの push.default オプションを参照してください。
  • プッシュ時にsecret scanningがタイムアウトした場合でも、GitHub ではプッシュ後もシークレットのコミットをスキャンします。

ブロックされたシークレットのプッシュを許可する

GitHub が、プッシュしても安全であると思われるシークレットをブロックする場合は、シークレットを許可し、許可する必要がある理由を指定できます。

シークレットのプッシュを許可すると、[セキュリティ] タブにアラートが作成されます。GitHub はアラートを閉じ、シークレットが擬陽性であるか、テストでのみ使用されることを指定した場合は通知を送信しません。 シークレットが実際のものであり、後で修正することを指定した場合、GitHub はセキュリティ アラートを開いたままにし、コミットの作成者とリポジトリ管理者に通知を送信します。 詳細については、「シークレット スキャンからのアラートの管理」を参照してください。

  1. プッシュがブロックされたときに GitHub から返される URL にアクセスします。 シークレットのプッシュをブロック解除するためのオプションを含むフォームを示すスクリーンショット 2. シークレットをプッシュできる理由を最もよく表しているオプションを選択します。
    • シークレットがテストでのみ使用され、脅威がない場合は、 [テストで使用されます] をクリックします。
    • 検出された文字列がシークレットでない場合は、 [誤検知です] をクリックします。
    • シークレットが本物で、後で修正する予定の場合は、 [後で修正します] をクリックします。
  2. [このシークレットをプッシュできるようにする] をクリックします。
  3. 3 時間以内にコマンド ラインでプッシュを再試行します。 3 時間以内にプッシュしていない場合は、このプロセスを繰り返す必要があります。

Web UI からのプッシュ保護としてシークレット スキャンを使用する

Web UI を使用して、プッシュ保護が有効になっているシークレット スキャンを使用して、サポートされているシークレットをリポジトリまたは organization にコミットすると、GitHub によってプッシュがブロックされます。

ページ上部にシークレットの場所の情報を示すバナーが表示され、シークレットもファイルで下線が引かれるので、簡単に見つけることができます。

シークレット スキャンのプッシュ保護のためにブロックされた Web UI でのコミットを示すスクリーンショット

GitHub では、Web UI で検出されたシークレットを一度に 1 つのみ表示します。 リポジトリで特定のシークレットが既に検出されていて、アラートが既に存在する場合、GitHub はそのシークレットをブロックしません。

Web UI を使用して、ファイルからシークレットを削除できます。 シークレットを削除すると、ページ上部のバナーが変更され、変更をコミットできるようになったことが通知されます。

シークレットの修正後に許可される Web UI でのコミットを示すスクリーンショット

シークレットのプッシュ保護をバイパスする

シークレットが本物であることを確認したら、再度プッシュする前に、ブランチから ("それが表示されるすべてのコミットから") シークレットを削除する必要があります。 ブロックされたシークレットの修復について詳しくは、「プッシュ保護によってブロックされたブランチのプッシュ」を参照してください。

シークレットが本物で、後で修正する予定であることを確認する場合は、できるだけ早くシークレットの修復を目指す必要があります。 詳細については、「Removing sensitive data from a repository」 (リポジトリからの機密データの削除) を参照してください。

GitHub が、プッシュしても安全であると思われるシークレットをブロックする場合は、シークレットを許可し、許可する必要がある理由を指定できます。

シークレットのプッシュを許可すると、[セキュリティ] タブにアラートが作成されます。GitHub はアラートを閉じ、シークレットが擬陽性であるか、テストでのみ使用されることを指定した場合は通知を送信しません。 シークレットが実際のものであり、後で修正することを指定した場合、GitHub はセキュリティ アラートを開いたままにし、コミットの作成者とリポジトリ管理者に通知を送信します。 詳細については、「シークレット スキャンからのアラートの管理」を参照してください。

シークレットが本物で、後で修正する予定であることを確認する場合は、できるだけ早くシークレットの修復を目指す必要があります。

  1. GitHub がコミットをブロックしたときにページの上部に表示されるバナーで、 [保護のバイパス] をクリックします。

  2. シークレットをプッシュできる理由を最もよく表しているオプションを選択します。

    • シークレットがテストでのみ使用され、脅威がない場合は、 [テストで使用されます] をクリックします。
    • 検出された文字列がシークレットでない場合は、 [誤検知です] をクリックします。
    • シークレットが本物で、後で修正する予定の場合は、 [後で修正します] をクリックします。

    シークレットのプッシュをブロック解除するためのオプションを含むフォームを示すスクリーンショット

  3. [シークレットの許可] をクリックします。