Cloud Asset Inventory を Google SecOps と統合する

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

統合バージョン: 12.0

Google SecOps プラットフォームでは、Cloud Asset Inventory の統合は Google Cloud Asset Inventory と呼ばれます。

始める前に

この統合を使用するには、Identity and Access Management(IAM)ロールとGoogle Cloud サービス アカウントが必要です。

カスタム IAM ロールを作成して構成する

カスタム IAM ロールを作成して特定の権限を構成するには、次の操作を行います。

  1. Google Cloud コンソールで、IAM [ロール] ページに移動します。

    [ロール] に移動

  2. [ロールを作成] をクリックして、統合に必要な権限を持つカスタムロールを作成します。

  3. 新しいカスタムロールの場合は、タイトル説明、一意の ID を指定します。

  4. [ロールのリリース段階] を [一般提供] に設定します。

  5. 作成したロールに次の権限を追加します。

    cloudasset.assets.searchAllResources
    

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

Cloud Asset Inventory を Google SecOps と統合するには、既存のサービス アカウントを使用するか、新しいサービス アカウントを作成します。サービス アカウントの作成については、サービス アカウントを作成するをご覧ください。

Cloud Asset Inventory の統合では、前のセクションで作成したカスタムロールと Cloud Asset Viewer ロールをサービス アカウントに付与する必要があります。

Workload Identity のメールアドレスを使用して統合を構成しない場合は、サービス アカウントの作成後にJSON でサービス アカウント キーを作成します。統合パラメータを構成するときに、ダウンロードした JSON キーファイルの内容をすべて指定する必要があります。

セキュリティ上の理由から、サービス アカウントの JSON キーではなく、ワークロード ID のメールアドレスを使用することをおすすめします。ワークロード ID の詳細については、ワークロードの ID をご覧ください。

既存のプリンシパルにカスタムロールを付与する

選択したプリンシパルに新しいカスタムロールを付与すると、そのプリンシパルは組織内の任意のユーザーの権限を変更できるようになります。

既存のプリンシパルにカスタムロールを付与する手順は次のとおりです。

  1. Google Cloud コンソールで、[IAM] ページに移動します。

    IAM に移動

  2. [フィルタ] フィールドに、Cloud Asset Inventory 統合に使用する Workload Identity Email の値を貼り付け、既存のプリンシパルを検索します。

  3. [プリンシパルを編集する] をクリックします。[PROJECT」へのアクセス権を付与します] ダイアログが開きます。

  4. [ロールを割り当てる] で、 [別のロールを追加] をクリックします。

  5. Cloud Asset Inventory の事前定義ロールを選択します。

  6. [保存] をクリックします。

統合のパラメータ

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

パラメータ 説明
API Root 必須

Cloud Asset Inventory インスタンスの API ルート。

デフォルト値は https://cloudasset.googleapis.com です。

Organization ID 省略可

Cloud Asset Inventory の統合で使用する組織 ID。

Project ID Optional

Cloud Asset Inventory の統合に使用するプロジェクト ID。このパラメータの値を設定しない場合、インテグレーションは User's Service Account パラメータで指定された JSON ファイルの内容からプロジェクト ID を取得します。

User's Service Account 必須

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

このパラメータまたは Workload Identity Email パラメータを構成できます。

このパラメータを構成するには、サービス アカウントの作成時にダウンロードしたサービス アカウント キーの JSON ファイルの内容全体を指定します。

Quota Project ID Optional

Google Cloud API と課金に使用する Google Cloud プロジェクト ID。このパラメータを使用するには、サービス アカウントに Service Usage Consumer ロールを付与する必要があります。

このパラメータに値を設定しない場合、インテグレーションは Google Cloud サービス アカウントからプロジェクト ID を取得します。

Workload Identity Email Optional

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

このパラメータまたは User's Service Account パラメータを構成できます。

Workload Identity 連携を使用してサービス アカウントの権限を借用するには、サービス アカウントに Service Account Token Creator ロールを付与します。ワークロード ID とその操作方法の詳細については、ワークロードの ID をご覧ください。

Verify SSL 必須

選択すると、統合によって Cloud Asset Inventory サーバーへの接続用の SSL 証明書が有効かどうかが検証されます。

デフォルトで選択されています。

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

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

操作

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

リソースを拡充する

リソースの拡充アクションを使用して、Cloud Asset Inventory を使用して Google Cloudリソースに関する情報を拡充します。

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

アクション入力

リソースの拡充アクションを構成するには、次のパラメータを使用します。

パラメータ 説明
Resource Names 必須

詳細を取得するリソースのリソース名を含むカンマ区切りのリスト。

このパラメータを構成するには、//cloudresourcemanager.googleapis.com/projects/PROJECT_ID の形式でメタデータ リソースの完全な名前を入力します。

Fields To Return 省略可

返されるフィールドのカンマ区切りリスト。

デフォルト値は * です。

値の例は次のとおりです。 assetTypeprojectfoldersorganizationdisplayNamedescriptionlocationlabelsnetworkTagskmsKeyscreateTimeupdateTimestateadditionalAttributesparentFullResourceNameparentAssetType

このアクションは常に displayName フィールドを返します。

高度なフィルタを構成することもできます。たとえば、additionalAttributes から特定のキーを返すには、additionalAttributes.{key} と入力します。additionalAttributes から特定のキーを除外するには、-additionalAttributes.{key} と入力します。

アクションの出力

[リソースを拡充] アクションは次の出力を提供します。

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

次の例は、[リソースの拡充] アクションを使用した場合に受信する JSON 結果の出力例を示しています。

[
  {
    "Entity": "//iam.googleapis.com/projects/PROJECT/serviceAccounts/SERVICE_ACCOUNT/keys/KEY_ID",
    "EntityResult": {
      "additionalAttributes": {
        "email": "email@example.iam.gserviceaccount.com",
        "uniqueId": 123456789
      },
      "name": "//iam.googleapis.com/projects/PROJECT/serviceAccounts/SERVICE_ACCOUNT/keys/KEY_ID",
      "assetType": "iam.googleapis.com/ServiceAccountKey",
      "project": "projects/PROJECT",
      "displayName": "projects/PROJECT/serviceAccounts/SERVICE_ACCOUNT@PROJECT.iam.gserviceaccount.com/keys/KEY_ID",
      "createTime": "2022-05-26T17:35:07Z",
      "versionedResources": [
        {
          "version": "v1",
          "resource": {
            "keyAlgorithm": "KEY_ALG_RSA_2048",
            "keyOrigin": "GOOGLE_PROVIDED",
            "keyType": "USER_MANAGED",
            "name": "projects/PROJECT/serviceAccounts/SERVICE_ACCOUNT@PROJECT.iam.gserviceaccount.com/keys/KEY_ID",
            "validAfterTime": "2022-05-26T17:35:07Z",
            "validBeforeTime": "9999-12-31T23:59:59Z"
          }
        }
      ],
      "organization": "organizations/ORGANIZATION",
      "parentFullResourceName": "//iam.googleapis.com/projects/PROJECT/serviceAccounts/SERVICE_ACCOUNT@PROJECT.iam.gserviceaccount.com",
      "parentAssetType": "iam.googleapis.com/ServiceAccount"
    }
  }
]
出力メッセージ

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

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

Successfully enriched the following resources using information from Google Cloud Asset Inventory: ASSET_IDENTIFIER

Action wasn't able to enrich the following resources using information from Google Cloud Asset Inventory: ASSET_IDENTIFIER

None of the provided resources were enriched.

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

操作に失敗しました。

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

スクリプトの結果

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

スクリプトの結果名
is_success True または False

リソース スナップショットを取得する

リソース スナップショットを取得アクションを使用して、Cloud Asset Inventory を使用してリソースに関する情報を取得します。

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

アクション入力

リソース スナップショットを取得アクションを構成するには、次のパラメータを使用します。

パラメータ 説明
Resource Names 必須

詳細を取得するリソースのカンマ区切りのリスト。

このパラメータを構成するには、//cloudresourcemanager.googleapis.com/projects/PROJECT_ID の形式でメタデータ リソースの完全な名前を入力します。

Fields To Return Optional

返されるフィールドのカンマ区切りリスト。

次の形式で各フィールドを入力します。

assets.FIELD

値の例は assets.asset.name, assets.asset.assetType, assets.asset.resource.data です。

このアクションは常に assets.asset.name フィールドを返します。

デフォルト値は * です。

アクションの出力

[リソース スナップショットを取得] アクションは、次の出力を提供します。

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

次の例は、[リソース スナップショットを取得] アクションを使用したときに受信した JSON 結果の出力を示しています。

Google Cloudの JSON の結果
    [
 {
   "Entity": "//compute.googleapis.com/projects/example-project/zones/us-central1-a/instances/example-instance",
   "EntityResult": {
     "window": {
       "startTime": "2023-08-14T19:43:41.805828Z",
       "endTime": "2262-04-11T23:47:16.854775807Z"
     },
     "asset": {
       "name": "//compute.googleapis.com/projects/example-project/zones/us-central1-a/instances/example-instance",
       "assetType": "compute.googleapis.com/Instance",
       "resource": {
         "version": "v1",
         "discoveryDocumentUri": "https://www.googleapis.com/discovery/v1/apis/compute/v1/rest",
         "discoveryName": "Instance",
         "parent": "//cloudresourcemanager.googleapis.com/projects/example-project-id",
         "data": {
           "description": "",
           "serviceAccounts": [
             {
               "email": "user@example.com",
               "scopes": [
                 "https://www.googleapis.com/auth/devstorage.read_only",
                 "https://www.googleapis.com/auth/logging.write",
                 "https://www.googleapis.com/auth/monitoring.write",
                 "https://www.googleapis.com/auth/servicecontrol",
                 "https://www.googleapis.com/auth/service.management.readonly",
                 "https://www.googleapis.com/auth/trace.append"
               ]
             }
           ],
           "lastStartTimestamp": "2022-05-26T01:44:52.756-07:00",
           "deletionProtection": false,
           "name": "example-name",
           "keyRevocationActionType": "NONE_ON_KEY_REVOCATION",
           "canIpForward": false,
           "shieldedInstanceIntegrityPolicy": {
             "updateAutoLearnPolicy": true
           },
           "zone": "https://www.googleapis.com/compute/v1/projects/example-project/zones/us-central1-a",
           "resourceStatus": {},
           "scheduling": {
             "onHostMaintenance": "MIGRATE",
             "preemptible": false,
             "provisioningModel": "STANDARD",
             "automaticRestart": true
           },
           "machineType": "https://www.googleapis.com/compute/v1/projects/example-project/zones/us-central1-a/machineTypes/e2-micro",
           "confidentialInstanceConfig": {
             "enableConfidentialCompute": false
           },
           "selfLink": "https://www.googleapis.com/compute/v1/projects/example-project/zones/us-central1-a/instances/example-instance",
           "id": "example-id",
           "fingerprint": "example-fingerprint",
           "startRestricted": false,
           "networkInterfaces": [
             {
               "network": "https://www.googleapis.com/compute/v1/projects/example-project/global/networks/example-network",
               "stackType": "IPV4_ONLY",
               "name": "example",
               "subnetwork": "https://www.googleapis.com/compute/v1/projects/example-project/regions/us-central1/subnetworks/example-network-subnet",
               "accessConfigs": [
                 {
                   "type": "ONE_TO_ONE_NAT",
                   "name": "External NAT",
                   "natIP": "192.0.2.1",
                   "networkTier": "PREMIUM"
                 }
               ],
               "fingerprint": "example-fingerprint",
               "networkIP": "203.0.113.2"
             }
           ],
           "allocationAffinity": {
             "consumeAllocationType": "ANY_ALLOCATION"
           },
           "labelFingerprint": "example-label",
           "shieldedInstanceConfig": {
             "enableSecureBoot": false,
             "enableVtpm": true,
             "enableIntegrityMonitoring": true
           },
           "cpuPlatform": "Intel Broadwell",
           "creationTimestamp": "2022-05-26T01:44:40.323-07:00",
           "status": "RUNNING",
           "disks": [
             {
               "guestOsFeatures": [
                 {
                   "type": "VIRTIO_SCSI_MULTIQUEUE"
                 },
                 {
                   "type": "SEV_CAPABLE"
                 },
                 {
                   "type": "UEFI_COMPATIBLE"
                 },
                 {
                   "type": "GVNIC"
                 }
               ],
               "interface": "SCSI",
               "shieldedInstanceInitialState": {
                 "dbxs": [
                   {
                     "content": "2gcDBhMRFQAAAAAAAAAAABENAAAAAvEOndK",
                     "fileType": "BIN"
                   }
                 ],
                 "dbx": [
                   {
                     "fileType": "BIN",
                     "content": "2gcDBhMRFQAAAAAAAAAAABENAAAAAvEOndK"
                   }
                 ]
               },
               "diskSizeGb": "10",
               "deviceName": "example-device-name",
               "type": "PERSISTENT",
               "source": "https://www.googleapis.com/compute/v1/projects/example-project/zones/us-central1-a/disks/example-instance",
               "boot": true,
               "licenses": [
                 "https://www.googleapis.com/compute/v1/projects/example-project/global/licenses"
               ],
               "index": 0,
               "autoDelete": true,
               "mode": "READ_WRITE"
             }
           ],
           "tags": {
             "items": [
               "http-server"
             ],
             "fingerprint": "example-fingerprint"
           },
           "displayDevice": {
             "enableDisplay": false
           },
           "reservationAffinity": {
             "consumeReservationType": "ANY_ALLOCATION"
           }
         },
         "location": "us-central1-a"
       },
       "ancestors": [
         "projects/example-project-id",
         "organizations/example-org-id"
       ],
       "updateTime": "2023-08-14T19:43:41.805828Z"
     }
   }
 },
 {
   "Entity": "//iam.googleapis.com/projects/example-project/serviceAccounts/example-account-id",
   "EntityResult": {
     "window": {
       "startTime": "2023-12-22T13:37:50Z",
       "endTime": "2262-04-11T23:47:16.854775807Z"
     },
     "asset": {
       "name": "//iam.googleapis.com/projects/example-project/serviceAccounts/example-account-id",
       "assetType": "iam.googleapis.com/ServiceAccount",
       "resource": {
         "version": "v1",
         "discoveryDocumentUri": "https://iam.googleapis.com/$discovery/rest",
         "discoveryName": "ServiceAccount",
         "parent": "//cloudresourcemanager.googleapis.com/projects/example-project-id",
         "data": {
           "name": "projects/example-project/serviceAccounts/cloud-asset-inventory-auto@example-project.iam.gserviceaccount.com",
           "projectId": "example-project",
           "email": "cloud-asset-inventory-auto@example-project.iam.gserviceaccount.com",
           "uniqueId": "example-account-id",
           "displayName": "Cloud Asset Inventory Automation",
           "oauth2ClientId": "example-account-id"
         }
       },
       "ancestors": [
         "projects/example-project-id",
         "organizations/example-org-id"
       ],
       "updateTime": "2023-12-22T13:37:50Z"
     }
   }
 }
]
AWS の JSON 結果
[
   {
       "Entity": "//cloudasset.googleapis.com/organizations/example-org-id/otherCloudConnections/aws/arn:aws:s3:::aps-max-test-bucket",
       "EntityResult": {
           "assets": [
               {
                   "window": {
                       "startTime": "2024-01-24T17:51:03.412233028Z",
                       "endTime": "2262-04-11T23:47:16.854775807Z"
                   },
                   "asset": {
                       "name": "//cloudasset.googleapis.com/organizations/example-org-id/otherCloudConnections/aws/arn:aws:s3:::aps-max-test-bucket",
                       "assetType": "cloudasset.googleapis.com/AWS::S3::Bucket",
                       "resource": {
                           "version": "v1",
                           "discoveryDocumentUri": "n/a",
                           "discoveryName": "n/a",
                           "data": {
                               "dataSourceProvider": "AMAZON_WEB_SERVICES",
                               "supplementaryConfigurations": {
                                   "PublicAccessBlockConfiguration": {
                                       "BlockPublicPolicy": true,
                                       "RestrictPublicBuckets": true,
                                       "BlockPublicAcls": true,
                                       "IgnorePublicAcls": true
                                   },
                                   "TagSet": [
                                       {
                                           "Key": "my-key2",
                                           "Value": "my-value2"
                                       },
                                       {
                                           "Key": "my-key1",
                                           "Value": "my-value1"
                                       }
                                   ],
                                   "ServerSideEncryptionConfiguration": {
                                       "Rules": [
                                           {
                                               "ApplyServerSideEncryptionByDefault": {
                                                   "SSEAlgorithm": "AES256"
                                               },
                                               "BucketKeyEnabled": true
                                           }
                                       ]
                                   },
                                   "AccessControlPolicy": {
                                       "Grants": [
                                           {
                                               "Grantee": {
                                                   "DisplayName": "example",
                                                   "ID": "example-id",
                                                   "Type": "CanonicalUser"
                                               },
                                               "Permission": "FULL_CONTROL"
                                           }
                                       ],
                                       "Owner": {
                                           "DisplayName": "example",
                                           "ID": "example-id"
                                       }
                                   }
                               },
                               "configuration": {
                                   "Name": "aps-max-test-bucket",
                                   "CreationDate": "2023-12-04T15:29:50+00:00"
                               },
                               "tags": {
                                   "my-key2": "my-value2",
                                   "my-key1": "my-value1"
                               },
                               "originalResourceName": "arn:aws:s3:::aps-max-test-bucket",
                               "awsAccount": "arn:aws:organizations::example-id:account/example-account/example-account-id"
                           },
                           "location": "global"
                       },
                       "ancestors": [
                           "organizations/example-org-id"
                       ],
                       "updateTime": "2024-01-24T17:51:03.412233028Z"
                   }
               }
           ]
       }
   }
]
出力メッセージ

[リソース スナップショットを取得] アクションは、次の出力メッセージを返すことがあります。

出力メッセージ メッセージの説明
Successfully returned information about the following resources using Google Cloud Asset Inventory: ASSET_IDENTIFIER

Action wasn't able to return information about the following resources using Google Cloud Asset Inventory: ASSET_IDENTIFIER.

No information was found for the provided resources.

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

操作に失敗しました。

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

スクリプトの結果

次の表に、リソース スナップショットを取得アクションを使用する場合のスクリプト結果出力の値を示します。

スクリプトの結果名
is_success True または False

サービス アカウントのロールを一覧表示する

サービス アカウントのロールを一覧表示アクションを使用して、Cloud Asset Inventory を使用して Google Cloud サービス アカウントに関連するロールを一覧表示します。

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

アクション入力

サービス アカウントのロールを一覧表示アクションを構成するには、次のパラメータを使用します。

パラメータ 説明
Service Accounts 必須

詳細を取得するサービス アカウントのカンマ区切りリスト。

Check Roles Optional

サービス アカウントに関連して確認するロールのカンマ区切りリスト(roles/cloudasset.owner など)。

Check Permissions Optional

サービス アカウントに関連して確認する権限のカンマ区切りリスト(cloudasset.assets.listResource など)。

Expand Permissions Optional

選択すると、アクションはリソースに関連するすべての固有の権限に関する情報を返します。

デフォルトでは選択されていません。

Max Roles To Return 必須

サービス アカウントに関連するロールの数を返します。

デフォルト値は 100 です。

Max Permissions To Return 必須

サービス アカウントに関連する権限の数を返します。

アクションの出力

[サービス アカウントのロールを一覧表示] アクションは、次の出力を提供します。

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

次の例は、サービス アカウントのロールを一覧表示するアクションを使用した場合に受信する JSON 結果の出力を示しています。

{
   "roles": ["role1", "role2"],
   "unique_permissions": ["permission1", "permission2"]
}
出力メッセージ

サービス アカウントのロールを一覧表示アクションは、次の出力メッセージを返すことがあります。

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

Successfully enriched for the following service accounts using information from Google Cloud Asset Inventory: ASSET_IDENTIFIER

Action wasn't able to enrich the following service accounts using information from Google Cloud Asset Inventory: ASSET_IDENTIFIER

None of the service accounts were enriched.

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

操作に失敗しました。

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

Ping

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

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

アクション入力

なし

アクションの出力

[Ping] アクションでは、次の出力が提供されます。

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

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

出力メッセージ メッセージの説明
Successfully connected to the Google Cloud Asset Inventory server with the provided connection parameters! アクションが成功しました。
Failed to connect to the Google Cloud Asset Inventory server! 操作に失敗しました。
スクリプトの結果

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

スクリプトの結果名
is_success True または False

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