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 ロールを作成して特定の権限を構成するには、次の操作を行います。
Google Cloud コンソールで、IAM [ロール] ページに移動します。
[ロールを作成] をクリックして、統合に必要な権限を持つカスタムロールを作成します。
新しいカスタムロールの場合は、タイトル、説明、一意の ID を指定します。
[ロールのリリース段階] を [一般提供] に設定します。
作成したロールに次の権限を追加します。
cloudasset.assets.searchAllResources
サービス アカウントを作成して構成する
Cloud Asset Inventory を Google SecOps と統合するには、既存のサービス アカウントを使用するか、新しいサービス アカウントを作成します。サービス アカウントの作成については、サービス アカウントを作成するをご覧ください。
Cloud Asset Inventory の統合では、前のセクションで作成したカスタムロールと Cloud Asset Viewer
ロールをサービス アカウントに付与する必要があります。
Workload Identity のメールアドレスを使用して統合を構成しない場合は、サービス アカウントの作成後にJSON でサービス アカウント キーを作成します。統合パラメータを構成するときに、ダウンロードした JSON キーファイルの内容をすべて指定する必要があります。
セキュリティ上の理由から、サービス アカウントの JSON キーではなく、ワークロード ID のメールアドレスを使用することをおすすめします。ワークロード ID の詳細については、ワークロードの ID をご覧ください。
既存のプリンシパルにカスタムロールを付与する
選択したプリンシパルに新しいカスタムロールを付与すると、そのプリンシパルは組織内の任意のユーザーの権限を変更できるようになります。
既存のプリンシパルにカスタムロールを付与する手順は次のとおりです。
Google Cloud コンソールで、[IAM] ページに移動します。
[フィルタ] フィールドに、Cloud Asset Inventory 統合に使用する Workload Identity Email の値を貼り付け、既存のプリンシパルを検索します。
[プリンシパルを編集する] をクリックします。[「PROJECT」へのアクセス権を付与します] ダイアログが開きます。
[ロールを割り当てる] で、
[別のロールを追加] をクリックします。Cloud Asset Inventory の事前定義ロールを選択します。
[保存] をクリックします。
統合のパラメータ
Cloud Asset Inventory の統合には、次のパラメータが必要です。
パラメータ | 説明 |
---|---|
API Root |
必須
Cloud Asset Inventory インスタンスの API ルート。 デフォルト値は |
Organization ID |
省略可 Cloud Asset Inventory の統合で使用する組織 ID。 |
Project ID |
Optional Cloud Asset Inventory の統合に使用するプロジェクト ID。このパラメータの値を設定しない場合、インテグレーションは |
User's Service Account |
必須
サービス アカウント キーの JSON ファイルの内容。 このパラメータまたは このパラメータを構成するには、サービス アカウントの作成時にダウンロードしたサービス アカウント キーの JSON ファイルの内容全体を指定します。 |
Quota Project ID |
Optional Google Cloud API と課金に使用する Google Cloud プロジェクト ID。このパラメータを使用するには、サービス アカウントに このパラメータに値を設定しない場合、インテグレーションは Google Cloud サービス アカウントからプロジェクト ID を取得します。 |
Workload Identity Email |
Optional サービス アカウントのクライアント メールアドレス。 このパラメータまたは Workload Identity 連携を使用してサービス アカウントの権限を借用するには、サービス アカウントに |
Verify SSL |
必須
選択すると、統合によって Cloud Asset Inventory サーバーへの接続用の SSL 証明書が有効かどうかが検証されます。 デフォルトで選択されています。 |
Google SecOps で統合を構成する手順については、統合を構成するをご覧ください。
必要に応じて、後の段階で変更できます。統合インスタンスを構成すると、ハンドブックで使用できるようになります。複数のインスタンスの構成とサポートの詳細については、複数のインスタンスのサポートをご覧ください。
操作
アクションの詳細については、Your Workdesk から保留中のアクションに対応すると手動アクションを実行するをご覧ください。
リソースを拡充する
リソースの拡充アクションを使用して、Cloud Asset Inventory を使用して Google Cloudリソースに関する情報を拡充します。
このアクションは Google SecOps エンティティに対して実行されません。
アクション入力
リソースの拡充アクションを構成するには、次のパラメータを使用します。
パラメータ | 説明 |
---|---|
Resource Names |
必須
詳細を取得するリソースのリソース名を含むカンマ区切りのリスト。 このパラメータを構成するには、 |
Fields To Return |
省略可 返されるフィールドのカンマ区切りリスト。 デフォルト値は 値の例は次のとおりです。
このアクションは常に 高度なフィルタを構成することもできます。たとえば、 |
アクションの出力
[リソースを拡充] アクションは次の出力を提供します。
アクションの出力タイプ | 対象 |
---|---|
ケースウォールのアタッチメント | 利用不可 |
ケースウォールのリンク | 利用不可 |
ケースウォール テーブル | 利用不可 |
拡充テーブル | 利用不可 |
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"
}
}
]
出力メッセージ
リソースの拡充アクションは、次の出力メッセージを返すことができます。
出力メッセージ | メッセージの説明 |
---|---|
|
アクションが成功しました。 |
Error executing action "Enrich resources". Reason:
ERROR_REASON |
操作に失敗しました。 サーバーへの接続、入力パラメータ、または認証情報を確認してください。 |
スクリプトの結果
次の表に、リソースの拡充アクションを使用する場合のスクリプト結果出力の値を示します。
スクリプトの結果名 | 値 |
---|---|
is_success |
True または False |
リソース スナップショットを取得する
リソース スナップショットを取得アクションを使用して、Cloud Asset Inventory を使用してリソースに関する情報を取得します。
このアクションは Google SecOps エンティティに対しては実行されません。
アクション入力
リソース スナップショットを取得アクションを構成するには、次のパラメータを使用します。
パラメータ | 説明 |
---|---|
Resource Names |
必須 詳細を取得するリソースのカンマ区切りのリスト。 このパラメータを構成するには、 |
Fields To Return |
Optional 返されるフィールドのカンマ区切りリスト。 次の形式で各フィールドを入力します。 assets.FIELD
値の例は このアクションは常に デフォルト値は |
アクションの出力
[リソース スナップショットを取得] アクションは、次の出力を提供します。
アクションの出力タイプ | 対象 |
---|---|
ケースウォールのアタッチメント | 利用不可 |
ケースウォールのリンク | 利用不可 |
ケースウォール テーブル | 利用不可 |
拡充テーブル | 利用不可 |
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
|
アクションが成功しました。 |
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 サービス アカウントに関連して確認するロールのカンマ区切りリスト( |
Check Permissions |
Optional サービス アカウントに関連して確認する権限のカンマ区切りリスト( |
Expand Permissions |
Optional 選択すると、アクションはリソースに関連するすべての固有の権限に関する情報を返します。 デフォルトでは選択されていません。 |
Max Roles To Return |
必須 サービス アカウントに関連するロールの数を返します。 デフォルト値は 100 です。 |
Max Permissions To Return |
必須 サービス アカウントに関連する権限の数を返します。 |
アクションの出力
[サービス アカウントのロールを一覧表示] アクションは、次の出力を提供します。
アクションの出力タイプ | 対象 |
---|---|
ケースウォールのアタッチメント | 利用不可 |
ケースウォールのリンク | 利用不可 |
ケースウォール テーブル | 利用不可 |
拡充テーブル | 利用不可 |
JSON の結果 | 利用可能 |
出力メッセージ | 利用可能 |
スクリプトの結果 | 利用可能 |
JSON の結果
次の例は、サービス アカウントのロールを一覧表示するアクションを使用した場合に受信する JSON 結果の出力を示しています。
{
"roles": ["role1", "role2"],
"unique_permissions": ["permission1", "permission2"]
}
出力メッセージ
サービス アカウントのロールを一覧表示アクションは、次の出力メッセージを返すことがあります。
出力メッセージ | メッセージの説明 |
---|---|
|
アクションが成功しました。 |
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 のプロフェッショナルから回答を得ることができます。