シークレット スキャンを有効にする

このドキュメントでは、Secure Source Manager の統合シークレット スキャンを使用して機密情報を保護する方法について説明します。

Secure Source Manager のシークレット スキャンにより、コードベースのセキュリティが向上します。リポジトリに push された commit や pull リクエストでマージされた commit を分析し、暗号化または削除が必要な機密情報を積極的にスキャンします。このようなデータが検出されると、シークレット スキャンによって push が自動的に拒否されるか、pull リクエストのマージがブロックされ、機密情報が誤ってマージされるのを防ぎます。

Secure Source Manager のシークレット スキャンでは、次のカテゴリの情報が機密情報として扱われます。

  • 暗号鍵: SSH 秘密鍵などの項目が含まれます。
  • AWS 認証情報: Amazon Web Services のアクセスキーとシークレット キー。
  • Google Cloud 認証情報: サービス アカウント キーとその他の Google Cloud シークレット。
  • OAuth クライアント シークレット: OAuth を使用したアプリケーション認証に使用されるシークレット。
  • 秘密鍵: 認証または認可に使用される機密鍵。

シークレット スキャンを有効にする

リポジトリで次のロールと設定が有効になっていることを確認します。

必要なロール

シークレット スキャンを有効にするために必要な権限を取得するには、Secure Source Manager リポジトリに対する Secure Source Manager リポジトリ管理者 (roles/securesourcemanager.repoAdmin)IAM ロールを付与するよう管理者に依頼してください。ロールの付与については、プロジェクト、フォルダ、組織に対するアクセス権の管理をご覧ください。

この事前定義ロールには、シークレット スキャンを有効にするために必要な securesourcemanager.repositories.update 権限が含まれています。

カスタムロールや他の事前定義ロールを使用して、この権限を取得することもできます。

Secure Source Manager のロールを付与する方法については、IAM によるアクセス制御とユーザーにインスタンスへのアクセス権を付与するをご覧ください。

サービス アカウントの権限

カスタムの Sensitive Data Protection 検査テンプレートを使用するようにシークレット スキャンを構成する場合、Secure Source Manager で使用されるサービス アカウントには、テンプレートを読み取る権限(DLP 読み取りロール roles/dlp.reader など)が必要です。

  • リポジトリにリポジトリごとのサービス アカウントが構成されている場合、Secure Source Manager はそのサービス アカウントのみを使用します。リポジトリごとのサービス アカウントにテンプレートの読み取り権限を付与する必要があります。
  • リポジトリごとのサービス アカウントが構成されていない場合、Secure Source Manager はインスタンス サービス アカウントを使用します。

リポジトリ設定を更新する

リポジトリのシークレット スキャンは、Secure Source Manager インターフェースから有効にできます。

  1. シークレット スキャンを有効にするリポジトリに移動します。
  2. [Settings] アイコンをクリックします。
  3. [シークレット スキャン] の切り替えボタンを見つけます。
  4. 切り替えボタンをクリックして [オン] にします。
  5. 省略可: [検査テンプレート] フィールドに、Sensitive Data Protection 検査テンプレートのリソース名を入力します。
  6. [Update Settings] ボタンをクリックして設定を更新します。

シークレット スキャンの操作

シークレット スキャンを有効にすると、リポジトリへの commit がアクティブにモニタリングされます。Git を使用して push された commit、またはウェブ インターフェースの pull リクエストを介してマージされた commit で機密情報が特定された場合、commit は拒否されるか、マージがブロックされます。

コマンドラインから push すると、機密データの存在を示すエラーが表示されます。この時点で、次の 2 つのオプションがあります。

変更を元に戻す

機密情報を削除するには、次のコマンドを使用して、問題のある commit を元に戻します。

git reset --soft COMMIT_ID

COMMIT_ID は、実際の commit ID に置き換えます。

Git はすべての commit の履歴を保持するため、以前の commit から機密情報を復元できます。これを回避するには、git reset --soft コマンドを使用します。次に、ファイルを修正して再度 commit し、ブランチの最近の履歴からデータを削除します。

commit を強制的に push する(シークレット スキャンをバイパスする)

検出された情報が許容可能と判断される特定の状況では、適切な権限を持つユーザーは、シークレット スキャンのチェックをバイパスして、commit を強制的に push できます。

git push -o dlpskip=true origin \
    BRANCH_NAME

BRANCH_NAME は、マージするブランチの名前に置き換えます。

次のステップ