このドキュメントでは、Secure Source Manager の統合 Secret スキャンを使用して機密情報を保護する方法について説明します。
Secure Source Manager の Secret スキャンにより、コードベースのセキュリティが向上します。リポジトリに push されたコミットや、プルリクエストを介してマージされたコミットを分析し、暗号化または削除する必要がある機密情報を積極的にスキャンします。このようなデータが検出されると、Secret スキャンは push を自動的に拒否するか、プルリクエストのマージをブロックして、機密情報が誤ってマージされるのを防ぎます。
Secure Source Manager の Secret スキャンでは、次のカテゴリの情報が機密情報として扱われます。
- 暗号鍵: SSH 秘密鍵など。
- AWS 認証情報: Amazon Web Services のアクセスキーとシークレット キー。
- Google Cloud 認証情報: サービス アカウント キーやその他の Google Cloud Secret。
- OAuth クライアント シークレット: OAuth を使用したアプリケーション認証に使用される Secret。
- Secret キー: 認証または認可に使用される機密性の高いキー。
Secret スキャンを有効にする
リポジトリで次のロールと設定が有効になっていることを確認します。
必要なロール
Secret スキャンを有効にするために必要な権限を取得するには、Secure Source Manager インスタンスに対する Secure Source Manager リポジトリ管理者 (roles/securesourcemanager.repoAdmin)の IAM ロールを付与するよう管理者に依頼してください。ロールの付与については、プロジェクト、フォルダ、組織に対するアクセス権の管理をご覧ください。
必要な権限は、カスタム ロールや他の事前定義 ロールから取得することもできます。
Secure Source Manager ロールの付与については、 IAM によるアクセス制御と ユーザーにインスタンスへのアクセス権を付与するをご覧ください。
サービス アカウントの権限
カスタムの Sensitive Data Protection 検査テンプレートを使用するように Secret スキャンを構成する場合、Secure Source Manager で使用されるサービス アカウントには、テンプレートを読み取る権限(DLP 読み取り者ロール、roles/dlp.reader など)が必要です。
- リポジトリにリポジトリごとのサービス アカウントが構成されている場合、Secure Source Manager はそのサービス アカウントのみを使用します。リポジトリごとのサービス アカウントにテンプレートの読み取り権限を付与する必要があります。
- リポジトリごとのサービス アカウントが構成されていない場合、Secure Source Manager はインスタンス サービス アカウントを使用します。
リポジトリ設定を更新する
Secure Source Manager インターフェースを使用して、リポジトリの Secret スキャンを有効にできます。
- Secret スキャンを有効にするリポジトリに移動します。
- [設定] アイコンをクリックします。
- [Secret スキャン] 切り替えを探します。
- 切り替えをクリックして [オン] の位置にします。
- 省略可: [検査テンプレート] フィールドに、Sensitive Data Protection 検査テンプレートのリソース名 を入力します。
Secret スキャンを使用する
Secret スキャンが有効になると、リポジトリへのコミットが積極的にモニタリングされます。Git を使用して push されたコミット、またはウェブ インターフェースのプルリクエストを介してマージされたコミットで機密情報が特定されると、コミットは拒否されるか、マージがブロックされます。
コマンドラインから push すると、機密データが存在することを示すエラーが表示されます。この時点で、次の 2 つのオプションがあります。
変更を元に戻す
機密情報を削除するには、次のコマンドを使用して問題のあるコミットを元に戻します。
git reset --soft COMMIT_ID
COMMIT_ID は実際のコミット ID に置き換えます。
Git はすべてのコミットの履歴を保持するため、以前のコミットから機密情報が復元される可能性があります。これを回避するには、git reset --soft
コマンドを使用します。次に、ファイルを修正して再度コミットし、ブランチの最近の履歴からデータを削除します。
コミットを強制的に push する(Secret スキャンをバイパスする)
検出された情報が許容できると判断される特定の状況では、適切な権限を持つユーザーは Secret スキャン チェックをバイパスして、コミットを強制的に push できます。
git push -o dlpskip=true origin \
BRANCH_NAME
BRANCH_NAME は、マージするブランチの名前に置き換えます。