Integrare Cloud Asset Inventory con Google SecOps

Questo documento spiega come integrare Cloud Asset Inventory con Google Security Operations (Google SecOps).

Versione integrazione: 12.0

Nella piattaforma Google SecOps, l'integrazione per Cloud Asset Inventory si chiama Google Cloud Asset Inventory.

Prima di iniziare

Per utilizzare l'integrazione, devi disporre di un ruolo IAM (Identity and Access Management) e di un service accountGoogle Cloud .

Creare e configurare un ruolo IAM personalizzato

Per creare un ruolo IAM personalizzato e configurare un'autorizzazione specifica per questo ruolo, completa i seguenti passaggi:

  1. Nella console Google Cloud , vai alla pagina Ruoli di IAM.

    Vai a Ruoli.

  2. Fai clic su Crea ruolo per creare un ruolo personalizzato con le autorizzazioni richieste per l'integrazione.

  3. Per un nuovo ruolo personalizzato, fornisci Titolo, Descrizione e un ID univoco.

  4. Imposta Fase di lancio del ruolo su Disponibilità generale.

  5. Aggiungi la seguente autorizzazione al ruolo creato:

    cloudasset.assets.searchAllResources
    

Crea e configura un account di servizio

Per integrare Cloud Asset Inventory con Google SecOps, puoi utilizzare un account di servizio esistente o crearne uno nuovo. Per indicazioni sulla creazione di un account di servizio, vedi Creare service account.

L'integrazione di Cloud Asset Inventory richiede di concedere al service account il ruolo personalizzato creato nella sezione precedente e il ruolo Cloud Asset Viewer.

Se non utilizzi un'email dell'identità del workload per configurare l'integrazione, crea una chiave dell'account di servizio in JSON dopo aver creato un account di servizio. Quando configuri i parametri di integrazione, devi fornire l'intero contenuto del file di chiave JSON scaricato.

Per motivi di sicurezza, ti consigliamo di utilizzare indirizzi email di identità del workload anziché chiavi JSON account di servizio. Per saperne di più sulle identità dei workload, consulta Identità per i workload.

Concedere un ruolo personalizzato a un'entità esistente

Dopo aver concesso il nuovo ruolo personalizzato a un soggetto selezionato, quest'ultimo può modificare le autorizzazioni per qualsiasi utente della tua organizzazione.

Per concedere il ruolo personalizzato a un'entità esistente, completa i seguenti passaggi:

  1. Nella console Google Cloud , vai alla pagina IAM.

    Vai a IAM

  2. Nel campo Filtro, incolla il valore Email di Workload Identity che utilizzi per l'integrazione di Cloud Asset Inventory e cerca l'entità esistente.

  3. Fai clic su Modifica soggetto. Si apre la finestra di dialogo Modifica l'accesso a "PROJECT".

  4. Nella sezione Assegna ruoli, fai clic su Aggiungi un altro ruolo.

  5. Seleziona i ruoli predefiniti per Cloud Asset Inventory.

  6. Fai clic su Salva.

Parametri di integrazione

L'integrazione di Cloud Asset Inventory richiede i seguenti parametri:

Parametro Descrizione
API Root Obbligatorio

La radice dell'API dell'istanza Cloud Asset Inventory.

Il valore predefinito è https://cloudasset.googleapis.com.

Organization ID Optional

L'ID organizzazione da utilizzare nell'integrazione di Cloud Asset Inventory.

Project ID Optional

L'ID progetto da utilizzare per l'integrazione di Cloud Asset Inventory. Se non imposti un valore per questo parametro, l'integrazione recupera l'ID progetto dai contenuti del file JSON forniti nel parametro User's Service Account.

User's Service Account Obbligatorio

Il contenuto del file JSON della chiave dell'account di servizio.

Puoi configurare questo parametro o il parametro Workload Identity Email.

Per configurare questo parametro, fornisci l'intero contenuto del file JSON della chiave dell'account di servizio che hai scaricato durante la creazione di un account di servizio.

Quota Project ID Optional

L'ID progetto Google Cloud che utilizzi per le API e la fatturazione. Google Cloud Questo parametro richiede che tu conceda il ruolo Service Usage Consumer al tuo account di servizio.

Se non imposti alcun valore per questo parametro, l'integrazione recupera l'ID progetto dal tuo service account Google Cloud .

Workload Identity Email Optional

L'indirizzo email client del tuo account di servizio.

Puoi configurare questo parametro o il parametro User's Service Account.

Per simulare l'identità dei service account con la federazione delle identità per i carichi di lavoro, concedi il ruolo Service Account Token Creator al tuo account di servizio. Per maggiori dettagli sulle identità dei workload e su come utilizzarle, consulta Identità per i workload.

Verify SSL Obbligatorio

Se selezionata, l'integrazione verifica che il certificato SSL per la connessione al server Cloud Asset Inventory sia valido.

Questa opzione è selezionata per impostazione predefinita.

Per istruzioni dettagliate sulla configurazione di un'integrazione in Google SecOps, vedi Configurare le integrazioni.

Se necessario, potrai apportare modifiche in un secondo momento. Dopo aver configurato un'istanza di integrazione, puoi utilizzarla nei playbook. Per saperne di più sulla configurazione e sul supporto di più istanze, consulta Supporto di più istanze.

Azioni

Per maggiori informazioni sulle azioni, vedi Rispondere alle azioni in attesa dalla tua scrivania ed Eseguire un'azione manuale.

Arricchisci risorsa

Utilizza l'azione Arricchisci risorsa per arricchire le informazioni su una risorsa Google Cloud utilizzando Cloud Asset Inventory.

L'azione non viene eseguita sulle entità Google SecOps.

Input azione

Per configurare l'azione Arricchisci risorsa, utilizza i seguenti parametri:

Parametro Descrizione
Resource Names Obbligatorio

Un elenco separato da virgole contenente i nomi delle risorse per cui recuperare i dettagli.

Per configurare questo parametro, inserisci il nome completo della risorsa di metadati nel seguente formato: //cloudresourcemanager.googleapis.com/projects/PROJECT_ID.

Fields To Return Optional

Un elenco separato da virgole di campi da restituire.

Il valore predefinito è *.

Di seguito sono riportati alcuni esempi di valori: assetType, project, folders, organization, displayName, description, location, labels, networkTags, kmsKeys, createTime, updateTime, state, additionalAttributes, parentFullResourceName, parentAssetType.

L'azione restituisce sempre il campo displayName.

Esiste anche un'opzione per configurare i filtri avanzati. Ad esempio, per restituire una chiave specifica da additionalAttributes, inserisci additionalAttributes.{key}. Per escludere una chiave specifica da additionalAttributes, inserisci -additionalAttributes.{key}.

Output dell'azione

L'azione Arricchisci risorsa fornisce i seguenti output:

Tipo di output dell'azione Disponibilità
Allegato della bacheca casi Non disponibile
Link alla bacheca richieste Non disponibile
Tabella della bacheca casi Non disponibile
Tabella di arricchimento Non disponibile
Risultato JSON Disponibile
Messaggi di output Disponibile
Risultato dello script Disponibile
Risultato JSON

L'esempio seguente mostra l'output del risultato JSON ricevuto quando si utilizza l'azione Arricchisci risorsa:

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

L'azione Arricchisci risorsa può restituire i seguenti messaggi di output:

Messaggio di output Descrizione del messaggio

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.

L'azione è riuscita.
Error executing action "Enrich resources". Reason: ERROR_REASON

L'azione non è riuscita.

Controlla la connessione al server, i parametri di input o le credenziali.

Risultato dello script

La seguente tabella elenca il valore dell'output del risultato dello script quando utilizzi l'azione Arricchisci risorsa:

Nome del risultato dello script Valore
is_success True o False

Recupero snapshot risorsa

Utilizza l'azione Ottieni snapshot risorsa per ottenere informazioni sulla risorsa utilizzando Cloud Asset Inventory.

Questa azione non viene eseguita sulle entità Google SecOps.

Input azione

Per configurare l'azione Ottieni snapshot risorsa, utilizza i seguenti parametri:

Parametro Descrizione
Resource Names Obbligatorio

Un elenco separato da virgole di risorse per cui recuperare i dettagli.

Per configurare questo parametro, inserisci il nome completo della risorsa di metadati nel seguente formato: //cloudresourcemanager.googleapis.com/projects/PROJECT_ID.

Fields To Return Optional

Un elenco separato da virgole di campi da restituire.

Inserisci ogni campo nel seguente formato:

assets.FIELD

Esempi di valori sono: assets.asset.name, assets.asset.assetType, assets.asset.resource.data.

L'azione restituisce sempre il campo assets.asset.name.

Il valore predefinito è *.

Output dell'azione

L'azione Get Resource Snapshot fornisce i seguenti output:

Tipo di output dell'azione Disponibilità
Allegato della bacheca casi Non disponibile
Link alla bacheca richieste Non disponibile
Tabella della bacheca casi Non disponibile
Tabella di arricchimento Non disponibile
Risultato JSON Disponibile
Messaggi di output Disponibile
Risultato dello script Disponibile
Risultato JSON

Gli esempi riportati di seguito mostrano gli output dei risultati JSON ricevuti quando si utilizza l'azione Ottieni snapshot risorsa:

Risultato JSON per 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"
     }
   }
 }
]
Risultato JSON per 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"
                   }
               }
           ]
       }
   }
]
Messaggi di output

L'azione Ottieni snapshot risorsa può restituire i seguenti messaggi di output:

Messaggio di output Descrizione del messaggio
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.

L'azione è riuscita.
Error executing action "Get Resource Snapshot". Reason: ERROR_REASON

L'azione non è riuscita.

Controlla la connessione al server, i parametri di input o le credenziali.

Risultato dello script

La tabella seguente elenca il valore dell'output del risultato dello script quando utilizzi l'azione Ottieni snapshot risorsa:

Nome del risultato dello script Valore
is_success True o False

Elenco dei ruoli del service account

Utilizza l'azione Elenca ruoli service account per elencare i ruoli correlati al service account Google Cloud utilizzando Cloud Asset Inventory.

Questa azione non viene eseguita sulle entità Google SecOps.

Input azione

Per configurare l'azione Elenca ruoli service account, utilizza i seguenti parametri:

Parametro Descrizione
Service Accounts Obbligatorio

Un elenco separato da virgole di service account per cui recuperare i dettagli.

Check Roles Optional

Un elenco separato da virgole di ruoli da controllare in relazione alaccount di serviziot, ad esempio roles/cloudasset.owner.

Check Permissions Optional

Un elenco separato da virgole di autorizzazioni da controllare in relazione alaccount di serviziot, ad esempio cloudasset.assets.listResource .

Expand Permissions Optional

Se selezionata, l'azione restituisce informazioni su tutte le autorizzazioni uniche relative alla risorsa.

Non selezionato per impostazione predefinita.

Max Roles To Return Obbligatorio

Il numero di ruoli correlati all'account di servizio da restituire.

Il valore predefinito è 100.

Max Permissions To Return Obbligatorio

Il numero di autorizzazioni relative al service account da restituire.

Output dell'azione

L'azione Elenca ruoli service account fornisce i seguenti output:

Tipo di output dell'azione Disponibilità
Allegato della bacheca casi Non disponibile
Link alla bacheca richieste Non disponibile
Tabella della bacheca casi Non disponibile
Tabella di arricchimento Non disponibile
Risultato JSON Disponibile
Messaggi di output Disponibile
Risultato dello script Disponibile
Risultato JSON

L'esempio seguente mostra l'output del risultato JSON ricevuto quando si utilizza l'azione Elenca ruoli service account:

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

L'azione Elenca ruoli service account può restituire i seguenti messaggi di output:

Messaggio di output Descrizione del messaggio

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.

L'azione è riuscita.
Error executing action "List Service Account Roles". Reason: ERROR_REASON

L'azione non è riuscita.

Controlla la connessione al server, i parametri di input o le credenziali.

Dindin

Utilizza l'azione Ping per testare la connettività a Cloud Asset Inventory.

L'azione non viene eseguita sulle entità Google SecOps.

Input azione

Nessuno.

Output dell'azione

L'azione Ping fornisce i seguenti output:

Tipo di output dell'azione Disponibilità
Allegato della bacheca casi Non disponibile
Link alla bacheca richieste Non disponibile
Tabella della bacheca casi Non disponibile
Tabella di arricchimento Non disponibile
Risultato JSON Non disponibile
Messaggi di output Disponibile
Risultato dello script Disponibile
Messaggi di output

L'azione Ping può restituire i seguenti messaggi di output:

Messaggio di output Descrizione del messaggio
Successfully connected to the Google Cloud Asset Inventory server with the provided connection parameters! L'azione è riuscita.
Failed to connect to the Google Cloud Asset Inventory server! L'azione non è riuscita.
Risultato dello script

La seguente tabella elenca il valore dell'output del risultato dello script quando utilizzi l'azione Ping:

Nome del risultato dello script Valore
is_success True o False

Hai bisogno di ulteriore assistenza? Ricevi risposte dai membri della community e dai professionisti di Google SecOps.