Cloud Identity を Google SecOps と統合する

このドキュメントでは、Cloud Identity を Google Security Operations と統合する方法について説明します。

ユースケース

Cloud Identity の統合では、Google SecOps の機能を使用して、次のユースケースをサポートしています。

  • アクセス制御を管理する: 調査ハンドブックから直接 IAM 構成を作成して更新します。
  • 監査ポリシーの定義: アクセスの変更を追跡するために使用可能なポリシーに関する情報を一覧表示します。
  • 検出機能リストの属性を維持する: モニタリングのために、特定の検出機能 URL リストにエンティティとインジケーターを追加します。

始める前に

Google SecOps プラットフォームで Cloud Identity 統合を構成する前に、次の手順で環境が構成されていることを確認します。

  1. サービス アカウントを作成します。
  2. ドメイン全体の権限をサービス アカウントに委任する
  3. プロジェクトに必要な API を有効にします。
  4. 次のいずれかの認証方法を選択して構成します。
    • オプション 1: JSON キー: この方法は、静的な長期間有効な秘密鍵ファイルに依存します。この方法は、環境で Workload Identity を使用できない場合にのみ使用してください。
    • オプション 2: Workload Identity(推奨): この方法では、サービス アカウントの権限借用を使用して有効期間の短い一時的なアクセス トークンを使用するため、シークレットを保存する必要がありません。

サービス アカウントを作成する

統合用のサービス アカウントを作成するには、次の手順を行います。

  1. Google Cloud コンソールで、[IAM と管理] > [サービス アカウント] に移動し、プロジェクトを選択します。

    [サービス アカウント] に移動

  2. [サービス アカウントを作成] をクリックします。

  3. 名前と説明を入力し、[完了] をクリックしてアカウントを作成します。

ドメイン全体の権限をサービス アカウントに委任する

  1. ドメインの Google 管理コンソールから、 メインメニュー > [セキュリティ] > [アクセスとデータ管理] > [API の制御] に移動します。
  2. [ドメイン全体の委任] ペインで、[ドメイン全体の委任を管理] を選択します。
  3. [新しく追加] をクリックします。
  4. [クライアント ID] フィールドに、サービス アカウントを作成するセクションで取得したクライアント ID を入力します。
  5. [OAuth スコープ] フィールドに、アプリケーションに必要なスコープのカンマ区切りリストを入力します。

    https://www.googleapis.com/auth/cloud-platform,
    https://www.googleapis.com/auth/cloud-identity.policies,
    https://www.googleapis.com/auth/admin.directory.orgunit
    
  6. [承認] をクリックします。

これで、指定したスコープを使用してドメイン全体のデータにアクセスする権限がサービス アカウントに付与されました。

プロジェクトに必要な API を有効にする

  1. Google Cloud コンソールで [API とサービス] に移動します。

    [API とサービス] に移動

  2. [API とサービスの有効化] をクリックします。

  3. プロジェクトで次の API を検索して有効にします。

    • Admin SDK API(admin.googleapis.com)
    • Cloud Identity API(cloudidentity.googleapis.com)

JSON キーを構成する

統合を認証するには、静的 JSON キーファイルまたは Workload Identity 連携を使用します。環境のセキュリティを最大限に高めるには、Workload Identity メソッドを使用します。JSON キーメソッドは、インフラストラクチャで Workload Identity がサポートされていない場合にのみ使用してください。静的キーは手動でローテーションする必要があり、認証情報の漏洩リスクが高まります。

統合の認証に必要な JSON キーファイルを生成するには、次の手順を行います。

  1. Google Cloud コンソールで、[IAM と管理] > [サービス アカウント] に移動し、作成したサービス アカウントを選択します。

    [サービス アカウント] に移動

  2. [キー] タブに移動します。

  3. [鍵を追加] をクリックします。

  4. [新しい鍵を作成] を選択します。

  5. キーのタイプとして [JSON] を選択し、[作成] をクリックします。JSON ファイルがパソコンにダウンロードされます。

  6. このファイルの内容全体をコピーし、統合の構成時に User's Service Account JSON に貼り付けます。

Cloud Identity の権限を構成する

次の手順で、統合で組織リソースを管理するために必要な管理者権限を定義します。

  1. Google 管理コンソールで、[アカウント] > [管理者ロール] に移動します。
  2. [新しいロールを作成] をクリックします。
  3. 新しいカスタムロールの名前を入力し、[続行] をクリックします。
  4. [権限の選択] ページで、[Admin API] 権限セクションに移動します。
  5. [Admin API の権限] で、次の権限を選択します。
    • Organization Units
    • Users
    • Groups
  6. [続行] をクリックします。
  7. 新しいカスタムロールを作成するには、[ロールを作成] をクリックします。
カスタムの役割をユーザーに割り当てる

次の手順で、ユーザー アカウントにロールを割り当て、統合がユーザーに代わってアクションを実行できるようにします。

  1. 新しいユーザーを作成するには、[ディレクトリ] > [ユーザー] ページに移動します。
  2. サービス アカウントに関連付けられた新しいユーザーを追加します。
  3. 新しく作成したユーザーの設定を開きます。ユーザー アカウントのタブが開きます。
  4. [管理者ロールと権限] をクリックします。
  5. edit [編集] をクリックします。
  6. 作成したカスタムロールを選択します。
  7. 選択したロールの切り替えを [割り当て済み] に切り替えます。

Workload Identity 認証情報を構成する

この方法または JSON キーの方法を選択して、統合を認証します。Workload Identity は、サービス アカウントの権限借用を使用して有効期間の短い一時的なアクセス トークンを使用するため、有効期間の長いシークレット認証情報の漏洩リスクを最小限に抑えることができます。このため、Workload Identity の使用をおすすめします。

一意のインスタンス ID を特定する

Workload Identity を使用するには、サービス アカウントの権限を借用する権限を Google SecOps インスタンスに付与する必要があります。このステップにより、インスタンスは Google Cloud リソースに安全にアクセスできます。

  1. Google SecOps で、[Content Hub] > [Response Integrations] に移動します。
  2. 構成する統合を選択し、Workload Identity Email フィールドにサービス アカウントのメールアドレスを入力します。
  3. Delegated Email フィールドに、統合でなりすますメールアドレスを入力します。
  4. [保存] > [テスト] をクリックします。テストは失敗することが想定されます。
  5. [テスト] の右側にある close_small をクリックし、gke-init-python@... または soar-python@... で始まる ID メールアドレスのエラー メッセージを検索します。

  6. この固有のメールアドレスをコピーします。

Google Cloudでインスタンス ID を認可する

Google SecOps インスタンスの一意の ID を取得したら、 Google Cloud リソースへのアクセスを承認する必要があります。このステップにより、サービス アカウントの権限借用が有効になり、プラットフォームは有効期間の短いトークンを生成し、静的キーを必要とせずにユーザーに代わって操作できるようになります。

  1. Google Cloud コンソールで、[IAM と管理] > [サービス アカウント] に移動します。

    [サービス アカウント] に移動

  2. 対象のサービス アカウントを選択し、[権限] > [アクセスを許可] に移動します。

  3. 一意のメールアドレスを [新しいプリンシパル] フィールドに貼り付け、サービス アカウント トークン作成者ロール(roles/iam.serviceAccountTokenCreator)を割り当てます。

統合のパラメータ

Cloud Identity の統合には、次のパラメータが必要です。

パラメータ 説明
Service Account JSON File Content

省略可。

サービス アカウント キーの JSON ファイルの内容。

このパラメータまたは [Workload Identity メール] を構成できます。この方法を使用するには、サービス アカウントの作成時にダウンロードしたキーファイルの JSON 文字列全体を貼り付けます。

Workload Identity Email

省略可。

サービス アカウントのクライアント メールアドレス。

このパラメータまたはサービス アカウント JSON ファイルの内容を構成できます。

サービス アカウントの権限借用にこの方法を使用するには、サービス アカウントの Google SecOps インスタンス ID にサービス アカウント トークン作成者のロールを付与する必要があります。

Delegated Email

必須。

統合がアクションの実行に使用するメールアドレス。

このアカウントに、必要な統合タスクを実行するための適切な委任権限が環境内で付与されていることを確認します。

Verify SSL

省略可。

選択すると、統合は Cloud Identity サーバーに接続するときに SSL 証明書を検証します。

デフォルトで有効になっています。

Google SecOps で統合を構成する方法については、統合を構成するをご覧ください。

必要に応じて、後の段階で変更できます。統合インスタンスを構成すると、ハンドブックで使用できます。複数のインスタンスを構成してサポートする方法の詳細については、複数のインスタンスのサポートをご覧ください。

操作

アクションの詳細については、 デスクから保留中のアクションに対応するとケースで手動アクションを実行するをご覧ください。

Ping

[Ping] アクションを使用して、Cloud Identity への接続をテストします。

このアクションは Google SecOps エンティティでは実行されません。

アクションへの入力

このアクションに必要な入力パラメータはありません。

アクションの出力

Ping アクションは、次の出力を提供します。

アクションの出力タイプ 対象
ケースウォールのアタッチメント 利用不可
ケースウォールのリンク 利用不可
ケースウォール テーブル 利用不可
拡充テーブル 利用不可
JSON の結果 利用不可
出力メッセージ 利用可能
スクリプトの結果 利用可能
出力メッセージ

Ping アクションは、次の出力メッセージを返すことができます。

出力メッセージ メッセージの説明

Successfully connected to the Cloud Identity server with the provided connection parameters!

アクションが成功しました。
Failed to connect to the Cloud Identity server! Error is ERROR_REASON

アクションが失敗しました。

サーバーへの接続、入力パラメータ、または認証情報を確認してください。

スクリプトの結果

次の表に、Ping アクションを使用した場合のスクリプト結果の出力値を示します。

スクリプトの結果名 値
is_success true または false

検出機能の URL リストにエンティティを追加する

[Add Entity To Detector URL List] アクションを使用して、Cloud Identity ポリシーの検出リストにエンティティを追加します。

このアクションは、次の 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] アクションは、次の出力メッセージを返すことがあります。

出力メッセージ メッセージの説明

Successfully blocked the following URLs using Cloud Identity: ENTITY_IDENTIFIER

アクションが成功しました。
Error executing action "Add Entity To Detector URL List". Reason: ERROR_REASON

アクションが失敗しました。

サーバーへの接続、入力パラメータ、または認証情報を確認してください。

スクリプトの結果

次の表に、Add Entity To Detector URL List アクションを使用した場合のスクリプト結果の出力値を示します。

スクリプトの結果名 値
is_success true または false

ポリシーを作成

[Create Policy] アクションを使用して、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 の結果

次の例は、ポリシーの作成アクションを使用した場合に受信される 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 アクションは、次の出力メッセージを返すことができます。

出力メッセージ メッセージの説明

Successfully added a new policy in Cloud Identity.

アクションが成功しました。
Error executing action "Create Policy". Reason: ERROR_REASON

アクションが失敗しました。

サーバーへの接続、入力パラメータ、または認証情報を確認してください。

スクリプトの結果

次の表に、ポリシーを作成アクションを使用した場合のスクリプト結果の出力値を示します。

スクリプトの結果名 値
is_success true または false

ポリシーの一覧表示

List Policies アクションを使用して、Cloud Identity から既存のポリシーのリストを取得します。

このアクションは Google SecOps エンティティでは実行されません。

アクションへの入力

ポリシーを一覧表示アクションには、次のパラメータが必要です。

パラメータ 説明
Organization Unit Name

必須。

ポリシーを一覧表示する組織部門の名前。

Policy Type Filter

省略可。

リストのフィルタリングに使用されるポリシーのタイプ。指定可能な値: Admin、System、Both。

デフォルト値は Both です。

Settings Type Filter

省略可。

設定タイプでポリシーをフィルタするために使用される正規表現パターン。このフィルタは API リクエストに直接適用されます。

Settings Display Name Filter

省略可。

ポリシー設定のフィルタに使用される表示名のカンマ区切りのリスト。

Max Results To Return

省略可。

アクションの実行で返される結果の最大数。デフォルト値は 50 です。最大値は 100 です。

アクションの出力

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 アクションは、次の出力メッセージを返すことができます。

出力メッセージ メッセージの説明

Successfully listed policies based on the provided criteria in Cloud Identity.

No policies found based on the provided criteria in Cloud Identity.

アクションが成功しました。
Error executing action "List Policies". Reason: ERROR_REASON

アクションが失敗しました。

サーバーへの接続、入力パラメータ、または認証情報を確認してください。

スクリプトの結果

次の表に、ポリシーの一覧表示アクションを使用した場合のスクリプト結果の出力値を示します。

スクリプトの結果名 値
is_success true または false

さらにサポートが必要な場合 コミュニティ メンバーや Google SecOps のプロフェッショナルから回答を得ることができます。