Cloud Identity を Google SecOps と統合する
このドキュメントでは、Cloud Identity と Google Security Operations を統合する方法について説明します。
ユースケース
Cloud Identity統合は、Google SecOps 機能を使用して、以下のユースケースをサポートします。
- アクセス制御の管理: 調査プレイブックから直接 IAM 構成を作成および更新します。
- 監査ポリシー定義: アクセス変更を追跡するために利用可能なポリシーに関する情報を一覧表示します。
- 検出器リスト属性を維持する: 監視のために、エンティティとインジケーターを特定の検出器 URL リストに追加します。
始める前に
設定する前にクラウドアイデンティティGoogle SecOps プラットフォームとの統合を行うには、以下の手順に従って環境が正しく構成されていることを確認してください。
- サービス アカウントを作成します。
- ドメイン全体の権限をサービスアカウントに委任します
- プロジェクトに必要な API を有効にします。
- 次のいずれかの認証方法を選択して構成します。
サービス アカウントを作成する
インテグレーション用のサービス アカウントを作成する手順は次のとおりです。
Google Cloud コンソールで、[IAM と管理>サービス アカウント] に移動し、プロジェクトを選択します。
[サービス アカウントを作成] をクリックします。
名前と説明を入力し、[完了] をクリックしてアカウントを作成します。
ドメイン全体の権限をサービス アカウントに委任する
- ドメインの Google 管理コンソールから、メインメニュー>安全>アクセスとデータ制御> API コントロール。
- [ドメイン全体の委任] ペインで、[ドメイン全体の委任を管理] を選択します。
- [新しく追加] をクリックします。
- クライアント IDフィールドに、サービスアカウントの作成セクションで取得したクライアント ID を入力します。
ではOAuth スコープフィールドに、アプリケーションに必要なスコープをカンマ区切りで入力してください。
https://www.googleapis.com/auth/cloud-platform, https://www.googleapis.com/auth/cloud-identity.policies, https://www.googleapis.com/auth/admin.directory.orgunit[承認] をクリックします。
サービスアカウントは、指定されたスコープを使用して、ドメイン全体のデータにアクセスする権限を与えられました。
プロジェクトに必要な API を有効にする
Google Cloud コンソールで、[API とサービス] に移動します。
[API とサービスの有効化] をクリックします。
プロジェクトで以下の API を検索して有効化してください。
- Admin SDK API (
admin.googleapis.com) - クラウドアイデンティティ API (
cloudidentity.googleapis.com)
- Admin SDK API (
JSON キーを構成する
統合を認証するには、静的 JSON キーファイルまたは Workload Identity 連携を使用します。環境のセキュリティを最大限に高めるには、Workload Identity メソッドを使用します。JSON 鍵メソッドは、インフラストラクチャで Workload Identity がサポートされていない場合にのみ使用してください。静的鍵は手動でローテーションする必要があり、認証情報の漏洩リスクが高まります。
インテグレーションの認証に必要な JSON キーファイルを生成するには、次の手順を行います。
Google Cloud コンソールで、[IAM と管理>サービス アカウント] に移動し、作成したサービス アカウントを選択します。
[キー] タブに移動します。
[鍵を追加] をクリックします。
[新しい鍵を作成] を選択します。
キーのタイプは、JSON を選択し、[作成] をクリックします。JSON ファイルがパソコンにダウンロードされます。
このファイルの内容全体をコピーし、統合構成時に
User's Service Account JSONに貼り付けます。
Cloud Identity の権限を設定する
組織のリソースを管理するために統合に必要な管理権限を定義するには、以下の手順に従ってください。
- Google 管理コンソールで、[アカウント] > [管理者ロール] に移動します。
- [新しいロールを作成] をクリックします。
- 新しいカスタムロールの名前を指定して、[続行] をクリックします。
- [権限の選択] ページで、[Admin API] 権限セクションに移動します。
- [Admin API の権限] で、次の権限を選択します。
Organization UnitsUsersGroups
- [続行] をクリックします。
- 新しいカスタムロールを作成するには、[ロールを作成] をクリックします。
カスタムの役割をユーザーに割り当てる
次の手順に沿って、ユーザー アカウントにロールを割り当て、インテグレーションがユーザーに代わってアクションを実行できるようにします。
- 新しいユーザーを作成するには、[ディレクトリ> ユーザー] ページに移動します。
- サービス アカウントに関連付けられている新しいユーザーを追加します。
- 新しく作成したユーザーの設定を開きます。ユーザー アカウントのタブが開きます。
- [管理者ロールと権限] をクリックします。
- edit [編集] をクリックします。
- 作成したカスタムロールを選択します。
- 選択したロールの切り替えを [割り当て済み] に切り替えます。
Workload Identity の認証情報を構成する
この方法または JSON キーの方法を選択して、統合を認証します。Workload Identity は、サービス アカウントの権限借用を使用して有効期間の短い一時アクセス トークンを使用するため、長期的なシークレット認証情報の漏洩リスクを最小限に抑えることができ、推奨される安全なアプローチです。
一意のインスタンス ID を特定する
Workload Identity を使用するには、Google SecOps インスタンスにサービス アカウントの権限借用を許可する必要があります。この手順により、インスタンスは Google Cloud リソースに安全にアクセスできます。
- Google SecOps で、[コンテンツ ハブ] > [レスポンス統合] に移動します。
- 構成する統合を選択し、
Workload Identity Emailフィールドにサービス アカウントのメールアドレスを入力します。 Delegated Emailフィールドに、統合でユーザーになりすますメールアドレスを入力します。- [保存] > [テスト] をクリックします。テストは失敗することが想定されます。
[テスト] の右にある close_small をクリックし、
gke-init-python@...またはsoar-python@...で始まる ID メールアドレスのエラー メッセージを検索します。この一意のメールアドレスをコピーして、統合構成時に
Workload Identity Emailに貼り付けます。
Google Cloud でインスタンス ID を承認する
Google SecOps インスタンスの一意の ID を取得したら、Google Cloud リソースにアクセスするための承認を行う必要があります。この手順により、サービス アカウントの権限借用が有効になり、プラットフォームは静的キーを必要とせずに、有効期間の短いトークンを生成してユーザーに代わって操作できます。
- Google Cloud コンソールで、[IAM と管理] > [サービス アカウント] に移動します。
- ターゲット サービス アカウントを選択し、[権限> アクセス権を付与] に移動します。
- 一意のメールアドレスを [新しいプリンシパル] フィールドに貼り付けます。
- サービス アカウント トークン作成者ロール(
roles/iam.serviceAccountTokenCreator)を割り当てます。
統合のパラメータ
Cloud Identity の統合には、次のパラメータが必要です。
| パラメータ | 説明 |
|---|---|
Service Account JSON File Content |
省略可。 サービス アカウント キーの JSON ファイルの内容。 このパラメータまたは Workload Identity メールのいずれかを構成できます。この方法を使用するには、サービス アカウントの作成時にダウンロードしたキーファイルから JSON 文字列全体を貼り付けます。 |
Workload Identity Email |
省略可。 サービス アカウントのクライアント メールアドレス。 このパラメータまたはサービス アカウント JSON ファイルの内容のいずれかを構成できます。 このメソッドをサービス アカウントの権限借用に使用するには、Google SecOps サービス アカウントにサービス アカウント トークン作成者のロールを付与する必要があります。 |
Delegated Email |
必須。 統合がアクションを実行するために使用するメールアドレス。 このアカウントに、必要な統合タスクを実行するための適切な委任権限が環境内で付与されていることを確認します。 |
Verify SSL |
省略可。 選択すると、Cloud Identity サーバーに接続するときに SSL 証明書が検証されます。 デフォルトで有効になっています。 |
Google SecOps で統合を構成する手順については、統合を構成するをご覧ください。
必要に応じて、後の段階で変更できます。統合インスタンスを構成すると、ハンドブックで使用できるようになります。複数のインスタンスの構成とサポートの詳細については、複数のインスタンスのサポートをご覧ください。
操作
アクションの詳細については、 デスクから保留中のアクションに対応すると手動による対策を実行するをご覧ください。
Ping
Ping アクションを使用して、Cloud Identity への接続をテストします。
このアクションは Google SecOps エンティティに対しては実行されません。
アクションの入力
このアクションに必要な入力パラメータはありません。
アクションの出力
[Ping] アクションでは、次の出力が提供されます。
| アクションの出力タイプ | 対象 |
|---|---|
| ケースウォールのアタッチメント | 利用不可 |
| ケースウォールのリンク | 利用不可 |
| ケースウォール テーブル | 利用不可 |
| 拡充テーブル | 利用不可 |
| JSON の結果 | 利用不可 |
| 出力メッセージ | 利用可能 |
| スクリプトの結果 | 利用可能 |
出力メッセージ
Ping アクションは、次の出力メッセージを返すことができます。
| 出力メッセージ | メッセージの説明 |
|---|---|
|
アクションが成功しました。 |
Failed to connect to the Cloud Identity server! Error is ERROR_REASON |
操作に失敗しました。 サーバーへの接続、入力パラメータ、または認証情報を確認してください。 |
スクリプトの結果
次の表に、Ping アクションを使用した場合のスクリプト結果出力の値を示します。
| スクリプトの結果名 | 値 |
|---|---|
is_success |
true または false |
エンティティを検出器の URL リストに追加する
エンティティをクラウド アイデンティティ ポリシーの検出リストに追加するには、検出 URL リストにエンティティを追加 アクションを使用します。
このアクションは、次の Google SecOps エンティティに対して実行されます。
- URL
- ドメイン
アクションの入力
Add Entity To Detector URL List アクションには、次のパラメーターが必要です。
| パラメータ | 説明 |
|---|---|
Detector Policy ID |
必須。 更新する検出器ポリシーの一意の識別子。 |
URL |
省略可。 検出器リストに追加する URL をカンマ区切りで指定します。 |
Domain |
省略可。 検出器リストに追加するドメインをカンマで区切ったリスト。 |
アクションの出力
Add Entity To Detector URL List アクションは、以下の出力を提供します。
| アクションの出力タイプ | 対象 |
|---|---|
| ケースウォールのアタッチメント | 利用不可 |
| ケースウォールのリンク | 利用不可 |
| ケースウォール テーブル | 利用不可 |
| 拡充テーブル | 利用不可 |
| JSON の結果 | 利用可能 |
| 出力メッセージ | 利用可能 |
| スクリプトの結果 | 利用可能 |
JSON の結果
次の例は、Add Entity To Detector URL List アクションを使用したときに受信される JSON 結果出力を示しています。
{
"type": "ADMIN",
"customer": "customers/<CUSTOMER_ID>",
"policyQuery": {
"query": "entity.org_units.exists(org_unit, org_unit.org_unit_id == orgUnitId('<ORG_UNIT_ID>'))",
"orgUnit": "orgUnits/<ORG_UNIT_ID>"
},
"setting": {
"type": "settings/detector.url_list",
"value": {
"displayName": "test_url_list_detector",
"description": "test_url_list_detector desc",
"urlList": {
"urls": [
"[http://example.com](http://example.com)",
"example.org",
"bad_entity.com"
]
}
}
}
}
出力メッセージ
Add Entity To Detector URL List アクションは、以下の出力メッセージを返すことができます。
| 出力メッセージ | メッセージの説明 |
|---|---|
|
アクションが成功しました。 |
Error executing action "Add Entity To Detector URL List". Reason: ERROR_REASON |
操作に失敗しました。 サーバーへの接続、入力パラメータ、または認証情報を確認してください。 |
スクリプトの結果
以下の表は、Add Entity To Detector URL List アクションを使用した場合のスクリプト結果出力の値を示しています。
| スクリプトの結果名 | 値 |
|---|---|
is_success |
true または false |
ポリシーを作成
Cloud Identity 内に新しいポリシーエントリを作成するには、ポリシーの作成 アクションを使用します。
このアクションは Google SecOps エンティティに対しては実行されません。
アクションの入力
Create Policy アクションには、以下のパラメーターが必要です。
| パラメータ | 説明 |
|---|---|
Policy Entry |
必須。 追加するポリシーエントリの設定を表す JSON オブジェクト。 |
ポリシー構成の例
以下の構成例は、Policy Entry パラメータの構造化方法を示しています。
例 1:URL リスト検出器
{
"type": "ADMIN",
"customer": "customers/<CUSTOMER_ID>",
"policyQuery": {
"orgUnit": "orgUnits/<ORG_UNIT_ID>",
"sortOrder": 1
},
"setting": {
"type": "settings/detector.url_list",
"value": {
"displayName": "BlockUrlDetector",
"description": "Blocked urls for security reasons",
"urlList": {
"urls": [
"www.medium.com",
"medium.com",
"wikipedia.org"
]
}
}
}
}
例 2:DLP ルール
{
"type": "ADMIN",
"customer": "customers/<CUSTOMER_ID>",
"policyQuery": {
"query": "entity.org_units.exists(org_unit, org_unit.org_unit_id == orgUnitId('<ORG_UNIT_ID>'))",
"orgUnit": "orgUnits/<ORG_UNIT_ID>",
"sortOrder": 1
},
"setting": {
"type": "settings/rule.dlp",
"value": {
"display_name": "TestRule",
"description": "GoogleSecOps URL Blocklist Rule. Keeps state of blocked URLs. Manual modification is not advised",
"triggers": [
"google.workspace.chrome.url.v1.navigation"
],
"condition": {
"contentCondition": "url.matches_url_list('policies/<DETECTOR_POLICY_ID>')"
},
"action": {
"chromeAction": {
"blockContent": {
"actionParams": {
"customEndUserMessage": {
"unsafeHtmlMessageBody": "(EQ)🚫 BlockedAccess denied."
}
}
}
}
},
"state": "ACTIVE"
}
}
}
アクションの出力
Create Policyアクションは、以下の出力を提供します。
| アクションの出力タイプ | 対象 |
|---|---|
| ケースウォールのアタッチメント | 利用不可 |
| ケースウォールのリンク | 利用不可 |
| ケースウォール テーブル | 利用不可 |
| 拡充テーブル | 利用不可 |
| JSON の結果 | 利用可能 |
| 出力メッセージ | 利用可能 |
| スクリプトの結果 | 利用可能 |
JSON の結果
次の例は、Create Policyアクションを使用したときに受信される JSON 結果出力を示しています。
{
"type": "ADMIN",
"customer": "customers/<CUSTOMER_ID>",
"policyQuery": {
"query": "entity.org_units.exists(org_unit, org_unit.org_unit_id == orgUnitId('<ORG_UNIT_ID>'))",
"orgUnit": "orgUnits/<ORG_UNIT_ID>"
},
"setting": {
"type": "settings/rule.dlp",
"value": {
"display_name": "test_create_rule",
"triggers": [
"google.workspace.chrome.file.v1.download"
],
"state": "ACTIVE",
"action": {
"chromeAction": {
"warnUser": {}
}
}
}
}
}
出力メッセージ
Create Policyアクションは、以下の出力メッセージを返すことができます。
| 出力メッセージ | メッセージの説明 |
|---|---|
|
アクションが成功しました。 |
Error executing action "Create Policy". Reason: ERROR_REASON |
操作に失敗しました。 サーバーへの接続、入力パラメータ、または認証情報を確認してください。 |
スクリプトの結果
次の表は、Create Policyアクションを使用した場合のスクリプト結果出力の値を示しています。
| スクリプトの結果名 | 値 |
|---|---|
is_success |
true または false |
ポリシーの一覧表示
List Policiesアクションを使用して、Cloud Identity から既存のポリシーのリストを取得します。
このアクションは Google SecOps エンティティに対しては実行されません。
アクションの入力
List Policies アクションには、以下のパラメーターが必要です。
| パラメータ | 説明 |
|---|---|
Organization Unit Name |
必須。 ポリシーを一覧表示する組織単位の名称。 |
Policy Type Filter |
省略可。 リストをフィルタリングするために使用されるポリシーの種類。可能な値: デフォルト値は |
Settings Type Filter |
省略可。 ポリシーをその設定タイプでフィルタリングするために使用される正規表現パターン。このフィルターは API リクエストに直接適用されます。 |
Settings Display Name Filter |
省略可。 ポリシー設定をフィルタリングするために使用される表示名をカンマで区切ったリスト。 |
Max Results To Return |
省略可。 アクション実行時に返される結果の最大数。デフォルト値は |
アクションの出力
List Policies アクションは、以下の出力を提供します。
| アクションの出力タイプ | 対象 |
|---|---|
| ケースウォールのアタッチメント | 利用不可 |
| ケースウォールのリンク | 利用不可 |
| ケースウォール テーブル | 利用不可 |
| 拡充テーブル | 利用不可 |
| JSON の結果 | 利用可能 |
| 出力メッセージ | 利用可能 |
| スクリプトの結果 | 利用可能 |
JSON の結果
次の例は、List Policies アクションを使用したときに受信される JSON 結果出力を示しています。
[
{
"name": "policies/123",
"customer": "customers/123",
"type": "ADMIN",
"policy_query": {
"query": "entity.org_units.exists(org_unit, org_unit.org_unit_id == orgUnitId('12345'))",
"orgUnit": "orgUnits/12345",
"sortOrder": 1
},
"setting": {
"type": "settings/rule.dlp",
"value": {
"display_name": "Test DLP Rule"
}
}
}
]
出力メッセージ
List Policiesアクションは、以下の出力メッセージを返すことができます。
| 出力メッセージ | メッセージの説明 |
|---|---|
|
|
アクションが成功しました。 |
Error executing action "List Policies". Reason: ERROR_REASON |
操作に失敗しました。 サーバーへの接続、入力パラメータ、または認証情報を確認してください。 |
スクリプトの結果
次の表は、List Policiesアクションを使用した場合のスクリプト結果出力の値を示しています。
| スクリプトの結果名 | 値 |
|---|---|
is_success |
true または false |
さらにサポートが必要な場合 コミュニティ メンバーや Google SecOps のプロフェッショナルから回答を得ることができます。