Mengintegrasikan Inventaris Aset Cloud dengan Google SecOps

Dokumen ini menjelaskan cara mengintegrasikan Cloud Asset Inventory dengan Google Security Operations (Google SecOps).

Versi integrasi: 12.0

Di platform Google SecOps, integrasi untuk Inventaris Aset Cloud disebut Google Cloud Asset Inventory.

Sebelum memulai

Untuk menggunakan integrasi, Anda memerlukan peran Identity and Access Management (IAM) dan akun layananGoogle Cloud .

Membuat dan mengonfigurasi peran IAM khusus

Untuk membuat peran IAM khusus dan mengonfigurasi izin tertentu untuk peran tersebut, selesaikan langkah-langkah berikut:

  1. Di konsol Google Cloud , buka halaman Roles IAM.

    Buka Peran

  2. Klik Buat peran untuk membuat peran kustom dengan izin yang diperlukan untuk integrasi.

  3. Untuk peran khusus baru, berikan Judul, Deskripsi, dan ID unik.

  4. Tetapkan Role Launch Stage ke General Availability.

  5. Tambahkan izin berikut ke peran yang dibuat:

    cloudasset.assets.searchAllResources
    

Membuat dan mengonfigurasi akun layanan

Untuk mengintegrasikan Inventaris Aset Cloud dengan Google SecOps, Anda dapat menggunakan akun layanan yang ada atau membuat akun layanan baru. Untuk mendapatkan panduan tentang cara membuat akun layanan, lihat Membuat akun layanan.

Integrasi Cloud Asset Inventory mengharuskan Anda memberikan peran khusus yang Anda buat di bagian sebelumnya dan peran Cloud Asset Viewer kepada akun layanan Anda.

Jika Anda tidak menggunakan email workload identity untuk mengonfigurasi integrasi, buat kunci akun layanan dalam JSON setelah Anda membuat akun layanan. Anda harus memberikan konten lengkap file kunci JSON yang didownload saat mengonfigurasi parameter integrasi.

Untuk alasan keamanan, sebaiknya gunakan alamat email workload identity, bukan kunci JSON akun layanan. Untuk mengetahui informasi selengkapnya tentang identitas beban kerja, lihat Identitas untuk beban kerja.

Memberikan peran khusus kepada akun utama yang ada

Setelah Anda memberikan peran kustom baru kepada akun utama yang dipilih, akun utama tersebut dapat mengubah izin untuk pengguna mana pun di organisasi Anda.

Untuk memberikan peran kustom ke akun utama yang ada, selesaikan langkah-langkah berikut:

  1. Di konsol Google Cloud , buka halaman IAM.

    Buka IAM

  2. Di kolom Filter, tempel nilai Workload Identity Email yang Anda gunakan untuk integrasi Cloud Asset Inventory dan telusuri principal yang ada.

  3. Klik Edit principal. Dialog Edit akses ke "PROJECT" akan terbuka.

  4. Di bagian Tetapkan peran, klik Tambahkan peran lain.

  5. Pilih peran bawaan untuk Cloud Asset Inventory.

  6. Klik Simpan.

Parameter integrasi

Integrasi Inventaris Aset Cloud memerlukan parameter berikut:

Parameter Deskripsi
API Root Wajib

Root API instance Inventaris Aset Cloud.

Nilai defaultnya adalah https://cloudasset.googleapis.com.

Organization ID Opsional

ID organisasi yang akan digunakan dalam integrasi Inventaris Aset Cloud.

Project ID Opsional

Project ID yang akan digunakan untuk integrasi Cloud Asset Inventory. Jika Anda tidak menetapkan nilai untuk parameter ini, integrasi akan mengambil ID project dari konten file JSON yang diberikan dalam parameter User's Service Account.

User's Service Account Wajib

Konten file JSON kunci akun layanan.

Anda dapat mengonfigurasi parameter ini atau parameter Workload Identity Email.

Untuk mengonfigurasi parameter ini, berikan konten lengkap file JSON kunci akun layanan yang telah Anda download saat membuat akun layanan.

Quota Project ID Opsional

Google Cloud Project ID yang Anda gunakan untuk Google Cloud API dan penagihan. Parameter ini mengharuskan Anda memberikan peran Service Usage Consumer ke akun layanan Anda.

Jika Anda tidak menetapkan nilai untuk parameter ini, integrasi akan mengambil project ID dari akun layanan Google Cloud Anda.

Workload Identity Email Opsional

Alamat email klien akun layanan Anda.

Anda dapat mengonfigurasi parameter ini atau parameter User's Service Account.

Untuk meniru identitas akun layanan dengan Workload Identity Federation, berikan peran Service Account Token Creator ke akun layanan Anda. Untuk mengetahui detail selengkapnya tentang identitas beban kerja dan cara menggunakannya, lihat Identitas untuk beban kerja.

Verify SSL Wajib

Jika dipilih, integrasi akan memverifikasi bahwa sertifikat SSL untuk menghubungkan ke server Cloud Asset Inventory valid.

Dipilih secara default.

Untuk mendapatkan petunjuk mendetail tentang cara mengonfigurasi integrasi di Google SecOps, lihat Mengonfigurasi integrasi.

Anda dapat melakukan perubahan di tahap berikutnya jika diperlukan. Setelah mengonfigurasi instance integrasi, Anda dapat menggunakannya dalam playbook. Untuk mengetahui informasi selengkapnya tentang mengonfigurasi dan mendukung beberapa instance, lihat Mendukung beberapa instance.

Tindakan

Untuk mengetahui informasi selengkapnya tentang tindakan, lihat Merespons tindakan tertunda dari Workdesk Anda dan Melakukan tindakan manual.

Memperkaya Resource

Gunakan tindakan Enrich Resource untuk memperkaya informasi tentang resource Google Cloud menggunakan Inventaris Aset Cloud.

Tindakan tidak dijalankan pada entity Google SecOps.

Input tindakan

Untuk mengonfigurasi tindakan Enrich Resource, gunakan parameter berikut:

Parameter Deskripsi
Resource Names Wajib

Daftar yang dipisahkan koma yang berisi nama resource dari resource yang detailnya akan diambil.

Untuk mengonfigurasi parameter ini, masukkan nama resource metadata lengkap dalam format berikut: //cloudresourcemanager.googleapis.com/projects/PROJECT_ID.

Fields To Return Opsional

Daftar kolom yang dipisahkan koma untuk ditampilkan.

Nilai defaultnya adalah *.

Contoh nilai adalah sebagai berikut: assetType, project, folders, organization, displayName, description, location, labels, networkTags, kmsKeys, createTime, updateTime, state, additionalAttributes, parentFullResourceName, parentAssetType.

Tindakan ini selalu menampilkan kolom displayName.

Ada juga opsi untuk mengonfigurasi filter lanjutan. Misalnya, untuk menampilkan kunci tertentu dari additionalAttributes, masukkan additionalAttributes.{key}. Untuk mengecualikan kunci tertentu dari additionalAttributes, masukkan -additionalAttributes.{key}.

Output tindakan

Tindakan Enrich Resource memberikan output berikut:

Jenis output tindakan Ketersediaan
Lampiran repositori kasus Tidak tersedia
Link repositori kasus Tidak tersedia
Tabel repositori kasus Tidak tersedia
Tabel pengayaan Tidak tersedia
Hasil JSON Tersedia
Pesan output Tersedia
Hasil skrip Tersedia
Hasil JSON

Contoh berikut menunjukkan output hasil JSON yang diterima saat menggunakan tindakan Enrich Resource:

[
  {
    "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"
    }
  }
]
Pesan output

Tindakan Enrich Resource dapat menampilkan pesan output berikut:

Pesan output Deskripsi pesan

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.

Tindakan berhasil.
Error executing action "Enrich resources". Reason: ERROR_REASON

Tindakan gagal.

Periksa koneksi ke server, parameter input, atau kredensial.

Hasil skrip

Tabel berikut mencantumkan nilai untuk output hasil skrip saat menggunakan tindakan Enrich Resource:

Nama hasil skrip Nilai
is_success True atau False

Mendapatkan Snapshot Resource

Gunakan tindakan Get Resource Snapshot untuk mendapatkan informasi tentang resource menggunakan Inventaris Aset Cloud.

Tindakan ini tidak berjalan di entity Google SecOps.

Input tindakan

Untuk mengonfigurasi tindakan Get Resource Snapshot, gunakan parameter berikut:

Parameter Deskripsi
Resource Names Wajib

Daftar resource yang dipisahkan koma untuk mengambil detailnya.

Untuk mengonfigurasi parameter ini, masukkan nama resource metadata lengkap dalam format berikut: //cloudresourcemanager.googleapis.com/projects/PROJECT_ID.

Fields To Return Opsional

Daftar kolom yang dipisahkan koma untuk ditampilkan.

Masukkan setiap kolom dalam format berikut:

assets.FIELD

Contoh nilainya adalah sebagai berikut: assets.asset.name, assets.asset.assetType, assets.asset.resource.data.

Tindakan ini selalu menampilkan kolom assets.asset.name.

Nilai defaultnya adalah *.

Output tindakan

Tindakan Get Resource Snapshot memberikan output berikut:

Jenis output tindakan Ketersediaan
Lampiran repositori kasus Tidak tersedia
Link repositori kasus Tidak tersedia
Tabel repositori kasus Tidak tersedia
Tabel pengayaan Tidak tersedia
Hasil JSON Tersedia
Pesan output Tersedia
Hasil skrip Tersedia
Hasil JSON

Contoh berikut menunjukkan output hasil JSON yang diterima saat menggunakan tindakan Get Resource Snapshot:

Hasil JSON untuk Google Cloud
    [
 {
   "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"
     }
   }
 }
]
Hasil JSON untuk AWS
[
   {
       "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"
                   }
               }
           ]
       }
   }
]
Pesan output

Tindakan Get Resource Snapshot dapat menampilkan pesan output berikut:

Pesan output Deskripsi pesan
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.

Tindakan berhasil.
Error executing action "Get Resource Snapshot". Reason: ERROR_REASON

Tindakan gagal.

Periksa koneksi ke server, parameter input, atau kredensial.

Hasil skrip

Tabel berikut mencantumkan nilai untuk output hasil skrip saat menggunakan tindakan Get Resource Snapshot:

Nama hasil skrip Nilai
is_success True atau False

Mencantumkan Peran Akun Layanan

Gunakan tindakan List Service Account Roles untuk mencantumkan peran yang terkait dengan akun layanan Google Cloud menggunakan Inventaris Aset Cloud.

Tindakan ini tidak berjalan di entity Google SecOps.

Input tindakan

Untuk mengonfigurasi tindakan List Service Account Roles, gunakan parameter berikut:

Parameter Deskripsi
Service Accounts Wajib

Daftar akun layanan yang dipisahkan koma untuk mengambil detailnya.

Check Roles Opsional

Daftar peran yang dipisahkan koma untuk diperiksa dalam kaitannya dengan akun layanan, seperti roles/cloudasset.owner.

Check Permissions Opsional

Daftar izin yang dipisahkan koma untuk diperiksa dalam kaitannya dengan akun layanan, seperti cloudasset.assets.listResource .

Expand Permissions Opsional

Jika dipilih, tindakan akan menampilkan informasi tentang semua izin unik yang terkait dengan resource.

Tidak dipilih secara default.

Max Roles To Return Wajib

Jumlah peran yang terkait dengan akun layanan yang akan ditampilkan.

Nilai defaultnya adalah 100.

Max Permissions To Return Wajib

Jumlah izin yang terkait dengan akun layanan yang akan ditampilkan.

Output tindakan

Tindakan List Service Account Roles memberikan output berikut:

Jenis output tindakan Ketersediaan
Lampiran repositori kasus Tidak tersedia
Link repositori kasus Tidak tersedia
Tabel repositori kasus Tidak tersedia
Tabel pengayaan Tidak tersedia
Hasil JSON Tersedia
Pesan output Tersedia
Hasil skrip Tersedia
Hasil JSON

Contoh berikut menunjukkan output hasil JSON yang diterima saat menggunakan tindakan List Service Account Roles:

{
   "roles": ["role1", "role2"],
   "unique_permissions": ["permission1", "permission2"]
}
Pesan output

Tindakan List Service Account Roles dapat menampilkan pesan output berikut:

Pesan output Deskripsi pesan

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.

Tindakan berhasil.
Error executing action "List Service Account Roles". Reason: ERROR_REASON

Tindakan gagal.

Periksa koneksi ke server, parameter input, atau kredensial.

Ping

Gunakan tindakan Ping untuk menguji konektivitas ke Cloud Asset Inventory.

Tindakan tidak dijalankan pada entity Google SecOps.

Input tindakan

Tidak ada.

Output tindakan

Tindakan Ping memberikan output berikut:

Jenis output tindakan Ketersediaan
Lampiran repositori kasus Tidak tersedia
Link repositori kasus Tidak tersedia
Tabel repositori kasus Tidak tersedia
Tabel pengayaan Tidak tersedia
Hasil JSON Tidak tersedia
Pesan output Tersedia
Hasil skrip Tersedia
Pesan output

Tindakan Ping dapat menampilkan pesan output berikut:

Pesan output Deskripsi pesan
Successfully connected to the Google Cloud Asset Inventory server with the provided connection parameters! Tindakan berhasil.
Failed to connect to the Google Cloud Asset Inventory server! Tindakan gagal.
Hasil skrip

Tabel berikut mencantumkan nilai untuk output hasil skrip saat menggunakan tindakan Ping:

Nama hasil skrip Nilai
is_success True atau False

Perlu bantuan lain? Dapatkan jawaban dari anggota Komunitas dan profesional Google SecOps.