Secret Manager を Google SecOps と統合する
このドキュメントでは、Secret Manager を Google Security Operations と統合する方法について説明します。
ユースケース
Secret Manager の統合では、Google SecOps の機能を使用して次のユースケースをサポートします。
- 認証情報管理を一元化する: Google SecOps の構成ファイルとスクリプトに埋め込まれたハードコードされたアプリケーション認証情報を排除し、 Google Cloud内で一元的に保存、監査、管理します。
- パラメータを同期する: バックグラウンド同期ジョブを使用して構成管理を自動化し、 Google Cloud Secret Manager からエントリを取得して、統合インスタンス、コネクタ、ジョブを更新します。
始める前に
Google SecOps プラットフォームで統合を構成する前に、次の手順で環境が構成されていることを確認します。
- サービス アカウントを作成します。
- プロジェクトに必要な API を有効にします。
- 次のいずれかの認証方法を選択して構成します。
- オプション 1: JSON キー: この方法は、静的な、有効期間の長い秘密鍵ファイルに依存します。この方法は、Workload Identity が環境で使用できない場合にのみ使用してください。
- オプション 2: Workload Identity(推奨): この方法では、サービス アカウントの権限借用を使用して有効期間の短い一時的なアクセス トークンを使用するため、シークレットを保存する必要はありません。
サービス アカウントを作成する
統合用のサービス アカウントを作成するには、次の手順を行います。
Google Cloud コンソールで、[IAM と管理] > [サービス アカウント] に移動し、プロジェクトを選択します。
[サービス アカウントを作成] をクリックします。
名前と説明を入力し、[完了] をクリックしてアカウントを作成します。
選択した認証方法に応じて、サービス アカウントに必要な IAM 権限を付与します。
- サービス アカウント キー認証の場合は、次のロールを付与します。
- Secret Manager のシークレット アクセサー(
roles/secretmanager.secretAccessor)。統合がシークレット ペイロードにアクセスできるようにします。 - Secret Manager 閲覧者(
roles/secretmanager.viewer)。接続をテストする Ping アクションに必要なsecretmanager.secrets.list権限を付与します。
- Secret Manager のシークレット アクセサー(
- Workload Identity 認証の場合:
- 権限を借用するターゲット サービス アカウントに、Secret Manager のシークレット アクセサー(
roles/secretmanager.secretAccessor)と Secret Manager 閲覧者(roles/secretmanager.viewer)の両方のロールを付与します。 - ランタイム環境の ID にサービス アカウント トークン作成者(
roles/iam.serviceAccountTokenCreator)ロールが付与されていることを確認します。
- 権限を借用するターゲット サービス アカウントに、Secret Manager のシークレット アクセサー(
- サービス アカウント キー認証の場合は、次のロールを付与します。
プロジェクトに必要な API を有効にする
Google Cloud コンソールで [API とサービス] に移動します。
[API とサービスの有効化] をクリックします。
プロジェクトで Secret Manager API を検索して有効にします。
JSON キーを構成する
統合を認証するには、静的 JSON キーファイルまたは Workload Identity を使用します。環境のセキュリティを最大限に高めるには、Workload Identity メソッドを使用します。JSON キーメソッドは、インフラストラクチャで Workload Identity がサポートされていない場合にのみ使用してください。静的キーは手動でローテーションする必要があり、認証情報の漏洩リスクが高まります。
統合の認証に必要な JSON キーファイルを生成するには、次の手順を行います。
Google Cloud コンソールで、[IAM と管理] > [サービス アカウント] に移動し、作成したサービス アカウントを選択します。
[キー] タブに移動します。
[鍵を追加] をクリックします。
[新しい鍵を作成] を選択します。
キーのタイプとして [JSON] を選択し、[作成] をクリックします。JSON ファイルがパソコンにダウンロードされます。
このファイルの内容全体をコピーし、統合の構成時に
Service Account JSONに貼り付けます。
Secret Manager の権限を構成する
次の手順で、統合に必要な管理者権限を付与して、シークレット マテリアルにアクセスし、 Google Cloud プロジェクト内の接続を検証します。
- Google Cloud コンソールで、[IAM と管理] > [IAM] に移動します。
- プリンシパル リストから作成したサービス アカウントを見つけて、編集 [プリンシパルを編集] をクリックします。
- [別のロールを追加] をクリックします。
- ロール選択フィールドで、次のロールを検索して選択します。
- [保存] をクリックします。
Workload Identity 認証情報を構成する
この方法または JSON キーの方法を選択して、統合を認証します。Workload Identity は、サービス アカウントの権限借用を使用して有効期間の短い一時的なアクセス トークンを使用するため、有効期間の長いシークレット認証情報の漏洩リスクを最小限に抑えることができます。このため、Workload Identity の使用をおすすめします。
一意のインスタンス ID を特定する
Workload Identity を使用するには、サービス アカウントの権限を借用する権限を Google SecOps インスタンスに付与する必要があります。このステップにより、インスタンスは Google Cloud リソースに安全にアクセスできます。
Google SecOps で、[Content Hub] > [Response Integrations] に移動します。
構成する統合を選択し、
Workload Identity Emailにサービス アカウントのメールアドレスを入力します。[保存] > [テスト] をクリックします。テストは失敗することが想定されます。
[テスト] の右側にある close_small をクリックし、
gke-init-python@...またはsoar-python@...で始まる ID メールアドレスのエラー メッセージを検索します。この固有のメールアドレスをコピーします。
Google Cloudでインスタンス ID を認可する
Google SecOps インスタンスの一意の ID を取得したら、 Google Cloud リソースへのアクセスを承認する必要があります。このステップにより、サービス アカウントの権限借用が有効になり、プラットフォームは有効期間の短いトークンを生成し、静的キーを必要とせずにユーザーに代わって操作できるようになります。
Google Cloud コンソールで、[IAM と管理] > [サービス アカウント] に移動します。
対象のサービス アカウントを選択し、[権限] > [アクセスを許可] に移動します。
一意のメールアドレスを [新しいプリンシパル] フィールドに貼り付け、サービス アカウント トークン作成者ロール(
roles/iam.serviceAccountTokenCreator)を割り当てます。
統合のパラメータ
Secret Manager の統合には、次の構成パラメータが必要です。
| パラメータ | 説明 |
|---|---|
Service Account JSON |
省略可。 Secret Manager での認証に使用されるサービス アカウント キーの JSON ファイルの内容。 このパラメータまたは Workload Identity メールを構成できます。 |
Project ID |
省略可。 シークレットが保存されている Google Cloud プロジェクト ID。 値が指定されていない場合、統合は |
Workload Identity Email |
省略可。 Workload Identity(アプリケーションのデフォルト認証情報)を使用して認証するときに権限を借用するサービス アカウントのメールアドレス。 Google SecOps プラットフォームまたはリモート エージェントが Workload Identity を有効にして Google Cloud 内で実行される場合は、 |
Verify SSL |
必須。 選択すると、Secret Manager への接続を確立するときに、統合によって SSL 証明書が検証されます。 デフォルトで有効( |
Google SecOps で統合を構成する方法については、統合を構成するをご覧ください。
必要に応じて、後の段階で変更できます。統合インスタンスを構成すると、ハンドブックで使用できます。複数のインスタンスを構成してサポートする方法の詳細については、複数のインスタンスのサポートをご覧ください。
操作
アクションの詳細については、 デスクから保留中のアクションに対応するとケースで手動アクションを実行するをご覧ください。
Ping
Ping アクションを使用して、接続性を検証し、ターゲット Secret Manager インスタンスに対して構成パラメータを検証します。
このアクションは、主に Content Hub の統合構成ページから即時接続テストを行うために使用され、個々の Google Cloud エンティティでは実行されません。
アクションへの入力
このアクションに必要な入力パラメータはありません。
アクションの出力
Ping アクションは、次の出力を提供します。
| アクションの出力タイプ | 対象 |
|---|---|
| ケースウォールのアタッチメント | 利用不可 |
| ケースウォールのリンク | 利用不可 |
| ケースウォール テーブル | 利用不可 |
| 拡充テーブル | 利用不可 |
| JSON の結果 | 利用不可 |
| 出力メッセージ | 利用可能 |
| スクリプトの結果 | 利用可能 |
出力メッセージ
Ping アクションは、次の出力メッセージを返すことができます。
| 出力メッセージ | メッセージの説明 |
|---|---|
|
アクションが成功し、認証情報が有効である。 |
Failed to connect to Secret Manager! Error is
ERROR_REASON |
アクションが失敗しました。 認証情報、プロジェクト ID の構成、IAM 権限、ネットワーク接続を確認してください。サービス アカウントに |
スクリプトの結果
次の表に、Ping アクションを使用した場合のスクリプト結果の出力値を示します。
| スクリプトの結果名 | 値 |
|---|---|
is_success |
true または false |
ジョブ
ジョブの詳細については、 新しいジョブを構成すると 高度なスケジューリングをご覧ください。
統合認証情報の同期ジョブ
Secret Manager - 統合認証情報の同期ジョブを使用して、Secret Manager エントリから構成パラメータを体系的に同期し、プラットフォーム統合インスタンス、コネクタ、バックグラウンド ジョブ構成を自動的に更新します。
このバックグラウンド同期タスクはグローバルに動作し、個々のエンティティでは実行されません。
ジョブの動作
このジョブは、構造化された構成オブジェクトを解析してシークレット定義をクエリし、次の 2 つのバージョン参照スタイルを処理します。
- 暗黙の表記:
projects/<project_id>/secrets/<secret_name>の形式で指定します。同期タスクは、処理中に Secret Manager から最新のアクティブ バージョンを動的に解決して取得します。 - 明示的な表記:
projects/<project_id>/secrets/<secret_name>/versions/<version_id>の形式で指定します。同期タスクは、 Google Cloudで状態が非アクティブとしてマークされている場合でも、固定されたバージョンのエントリを取得します。
Secret Manager 内の各ターゲット シークレット パスには、パラメータキーをそれぞれの認証情報の値に直接マッピングする有効な JSON オブジェクト文字列が含まれている必要があります。
認証情報マッピング構成の例
{
"integration_instances": {
"AzureActiveDirectory_1": {
"Client ID": "projects/154371241292/secrets/AzureActiveDirectory"
}
},
"connectors": {
"Crowdstrike - Alerts Connector": {
"Client Secret": "projects/154371241292/secrets/CrowdstrikeConnectorSecret",
"Client ID": "projects/154371241292/secrets/CrowdstrikeConnectorID"
},
"Microsoft Graph Mail Connector": {
"Client Secret": "projects/154371241292/secrets/GraphConnectorSecret",
"Client ID": "projects/154371241292/secrets/GraphConnectorID/versions/3"
}
},
"jobs": {
"Sync Incidents": {
"API Root": "projects/154371241292/secrets/API_Root/versions/2"
}
}
}
ジョブの入力
Sync Integration Credentials Job には、次の構成パラメータが必要です。
| パラメータ | 説明 |
|---|---|
Environment Name |
必須。 ターゲット構成をクエリする環境コンテキストの名前。 デフォルト値は |
Credential Mapping |
必須。 統合インスタンス、コネクタ、ジョブが明示的な Secret Manager リソース座標にマッピングされるターゲット ロケーションを構造化する有効な JSON 文字列。 |
Service Account JSON |
省略可。 このバックグラウンド同期ジョブの認可専用のサービス アカウント キーの JSON コンテンツ。 |
Project ID |
省略可。 ターゲット リソースをホストするデフォルトの Google Cloud プロジェクト ID スコープ。 |
Workload Identity Email |
省略可。 Workload Identity が有効な Google Cloud インフラストラクチャ内で実行されている場合に、権限を借用するアプリケーションのデフォルト認証情報サービス アカウントのメールアドレス。 |
Verify SSL |
必須。 同期タスク中に SSL 証明書エンドポイントを検証します。デフォルトで有効( |
さらにサポートが必要な場合 コミュニティ メンバーや Google SecOps のプロフェッショナルから回答を得ることができます。