Integra Cloud Asset Inventory con Google SecOps

En este documento, se explica cómo integrar Cloud Asset Inventory con Google Security Operations (Google SecOps).

Versión de integración: 12.0

En la plataforma de SecOps de Google, la integración de Cloud Asset Inventory se llama Google Cloud Asset Inventory.

Antes de comenzar

Para usar la integración, necesitas un rol de Identity and Access Management (IAM) y unaGoogle Cloud cuenta de servicio.

Crea y configura un rol de IAM personalizado

Para crear un rol de IAM personalizado y configurar un permiso específico para él, completa los siguientes pasos:

  1. En la consola de Google Cloud , ve a la página Roles de IAM.

    Ir a Funciones

  2. Haz clic en Crear rol para crear un rol personalizado con los permisos necesarios para la integración.

  3. Para un nuevo rol personalizado, proporciona el Título, la Descripción y un ID único.

  4. Establece la etapa de lanzamiento del rol en Disponibilidad general.

  5. Agrega el siguiente permiso al rol creado:

    cloudasset.assets.searchAllResources
    

Crea y configura una cuenta de servicio

Para integrar Cloud Asset Inventory con Google SecOps, puedes usar una cuenta de servicio existente o crear una nueva. Para obtener orientación sobre cómo crear una cuenta de servicio, consulta Crea cuentas de servicio.

La integración de Cloud Asset Inventory requiere que le otorgues a tu cuenta de servicio el rol personalizado que creaste en la sección anterior y el rol Cloud Asset Viewer.

Si no usas un correo electrónico de identidad de cargas de trabajo para configurar la integración, crea una clave de cuenta de servicio en JSON después de crear una cuenta de servicio. Cuando configures los parámetros de integración, deberás proporcionar el contenido completo del archivo de claves JSON descargado.

Por motivos de seguridad, te recomendamos que uses direcciones de correo electrónico de identidades para cargas de trabajo en lugar de claves JSON de cuentas de servicio. Para obtener más información sobre las identidades para cargas de trabajo, consulta Identidades para cargas de trabajo.

Otorga un rol personalizado a una principal existente

Después de otorgar tu nueva función personalizada a un principal seleccionado, este podrá cambiar los permisos de cualquier usuario de tu organización.

Para otorgar el rol personalizado a una principal existente, completa los siguientes pasos:

  1. En la consola de Google Cloud , ve a la página IAM.

    Ir a IAM

  2. En el campo Filtro, pega el valor de Correo electrónico de Workload Identity que usas para la integración de Cloud Asset Inventory y busca la principal existente.

  3. Haz clic en Editar principal. Se abrirá el cuadro de diálogo Editar acceso a “PROJECT.

  4. En Asignar roles, haz clic en Agregar otro rol.

  5. Selecciona los roles predefinidos para Cloud Asset Inventory.

  6. Haz clic en Guardar.

Parámetros de integración

La integración de Cloud Asset Inventory requiere los siguientes parámetros:

Parámetro Descripción
API Root Obligatorio

Es la raíz de la API de la instancia de Cloud Asset Inventory.

El valor predeterminado es https://cloudasset.googleapis.com.

Organization ID Optional

Es el ID de la organización que se usará en la integración de Cloud Asset Inventory.

Project ID Optional

Es el ID del proyecto que se usará para la integración de Cloud Asset Inventory. Si no estableces un valor para este parámetro, la integración recupera el ID del proyecto del contenido del archivo JSON proporcionado en el parámetro User's Service Account.

User's Service Account Obligatorio

Es el contenido del archivo JSON de la clave de la cuenta de servicio.

Puedes configurar este parámetro o el parámetro Workload Identity Email.

Para configurar este parámetro, proporciona el contenido completo del archivo JSON de la clave de la cuenta de servicio que descargaste cuando creaste una cuenta de servicio.

Quota Project ID Optional

El ID del proyecto Google Cloud que usas para las APIs y la facturación. Google Cloud Este parámetro requiere que otorgues el rol Service Usage Consumer a tu cuenta de servicio.

Si no configuras ningún valor para este parámetro, la integración recupera el ID del proyecto de tu cuenta de servicio Google Cloud .

Workload Identity Email Optional

Es la dirección de correo electrónico del cliente de tu cuenta de servicio.

Puedes configurar este parámetro o el parámetro User's Service Account.

Para actuar como cuentas de servicio con la federación de identidades para cargas de trabajo, otorga el rol de Service Account Token Creator a tu cuenta de servicio. Para obtener más detalles sobre las identidades de cargas de trabajo y cómo trabajar con ellas, consulta Identidades para cargas de trabajo.

Verify SSL Obligatorio

Si se selecciona esta opción, la integración verifica que el certificado SSL para conectarse al servidor de Cloud Asset Inventory sea válido.

Esta opción se selecciona de forma predeterminada.

Si quieres obtener instrucciones detalladas para configurar una integración en Google SecOps, consulta Configura integraciones.

Si es necesario, puedes hacer cambios más adelante. Después de configurar una instancia de integración, puedes usarla en las guías. Para obtener más información sobre cómo configurar y admitir varias instancias, consulta Compatibilidad con varias instancias.

Acciones

Para obtener más información sobre las acciones, consulta Cómo responder a las acciones pendientes de Tu Workdesk y Cómo realizar una acción manual.

Enriquece el recurso

Usa la acción Enrich Resource para enriquecer la información sobre un recurso Google Cloudcon Cloud Asset Inventory.

La acción no se ejecuta en las entidades de Google SecOps.

Entradas de acción

Para configurar la acción Enrich Resource, usa los siguientes parámetros:

Parámetro Descripción
Resource Names Obligatorio

Es una lista separada por comas que contiene los nombres de los recursos para los que se recuperarán los detalles.

Para configurar este parámetro, ingresa el nombre completo del recurso de metadatos en el siguiente formato: //cloudresourcemanager.googleapis.com/projects/PROJECT_ID.

Fields To Return Optional

Es una lista de campos separados por comas que se devolverán.

El valor predeterminado es *.

Estos son algunos ejemplos de valores: assetType, project, folders, organization, displayName, description, location, labels, networkTags, kmsKeys, createTime, updateTime, state, additionalAttributes, parentFullResourceName, parentAssetType.

La acción siempre devuelve el campo displayName.

También hay una opción para configurar filtros avanzados. Por ejemplo, para devolver una clave específica de additionalAttributes, ingresa additionalAttributes.{key}. Para excluir una clave específica de additionalAttributes, ingresa -additionalAttributes.{key}.

Resultados de la acción

La acción Enrich Resource proporciona los siguientes resultados:

Tipo de salida de la acción Disponibilidad
Adjunto del muro de casos No disponible
Vínculo al muro de casos No disponible
Tabla del muro de casos No disponible
Tabla de enriquecimiento No disponible
Resultado de JSON Disponible
Mensajes de salida Disponible
Resultado de secuencia de comandos Disponible
Resultado de JSON

En el siguiente ejemplo, se muestra el resultado JSON que se recibe cuando se usa la acción 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"
    }
  }
]
Mensajes de salida

La acción Enrich Resource puede devolver los siguientes mensajes de salida:

Mensaje de salida Descripción del mensaje

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.

La acción se completó correctamente.
Error executing action "Enrich resources". Reason: ERROR_REASON

No se pudo realizar la acción.

Verifica la conexión al servidor, los parámetros de entrada o las credenciales.

Resultado de secuencia de comandos

En la siguiente tabla, se muestra el valor del resultado de la secuencia de comandos cuando se usa la acción Enrich Resource:

Nombre del resultado de la secuencia de comandos Valor
is_success True o False

Obtén una instantánea del recurso

Usa la acción Get Resource Snapshot para obtener información sobre el recurso con Cloud Asset Inventory.

Esta acción no se ejecuta en las entidades de Google SecOps.

Entradas de acción

Para configurar la acción Get Resource Snapshot, usa los siguientes parámetros:

Parámetro Descripción
Resource Names Obligatorio

Es una lista de recursos separados por comas para los que se recuperarán detalles.

Para configurar este parámetro, ingresa el nombre completo del recurso de metadatos en el siguiente formato: //cloudresourcemanager.googleapis.com/projects/PROJECT_ID.

Fields To Return Optional

Es una lista de campos separados por comas que se devolverán.

Ingresa cada campo en el siguiente formato:

assets.FIELD

Estos son algunos ejemplos de valores: assets.asset.name, assets.asset.assetType, assets.asset.resource.data.

La acción siempre devuelve el campo assets.asset.name.

El valor predeterminado es *.

Resultados de la acción

La acción Get Resource Snapshot proporciona los siguientes resultados:

Tipo de salida de la acción Disponibilidad
Adjunto del muro de casos No disponible
Vínculo al muro de casos No disponible
Tabla del muro de casos No disponible
Tabla de enriquecimiento No disponible
Resultado de JSON Disponible
Mensajes de salida Disponible
Resultado de secuencia de comandos Disponible
Resultado de JSON

En los siguientes ejemplos, se muestran los resultados JSON que se reciben cuando se usa la acción Get Resource Snapshot:

Resultado de JSON para 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"
     }
   }
 }
]
Resultado de JSON para 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"
                   }
               }
           ]
       }
   }
]
Mensajes de salida

La acción Get Resource Snapshot puede devolver los siguientes mensajes de salida:

Mensaje de salida Descripción del mensaje
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.

La acción se completó correctamente.
Error executing action "Get Resource Snapshot". Reason: ERROR_REASON

No se pudo realizar la acción.

Verifica la conexión al servidor, los parámetros de entrada o las credenciales.

Resultado de secuencia de comandos

En la siguiente tabla, se muestra el valor del resultado de la secuencia de comandos cuando se usa la acción Get Resource Snapshot:

Nombre del resultado de la secuencia de comandos Valor
is_success True o False

Enumera los roles de la cuenta de servicio

Usa la acción List Service Account Roles para enumerar los roles relacionados con la cuenta de servicio Google Cloud con Cloud Asset Inventory.

Esta acción no se ejecuta en las entidades de Google SecOps.

Entradas de acción

Para configurar la acción List Service Account Roles, usa los siguientes parámetros:

Parámetro Descripción
Service Accounts Obligatorio

Es una lista separada por comas de las cuentas de servicio para las que se recuperarán detalles.

Check Roles Optional

Lista de roles separados por comas que se deben verificar en relación con la cuenta de servicio, como roles/cloudasset.owner.

Check Permissions Optional

Lista separada por comas de permisos para verificar en relación con la cuenta de servicio, como cloudasset.assets.listResource .

Expand Permissions Optional

Si se selecciona, la acción devuelve información sobre todos los permisos únicos relacionados con el recurso.

No está seleccionada de forma predeterminada.

Max Roles To Return Obligatorio

Es la cantidad de roles relacionados con la cuenta de servicio que se devolverán.

El valor predeterminado es 100.

Max Permissions To Return Obligatorio

Es la cantidad de permisos relacionados con la cuenta de servicio que se devolverán.

Resultados de la acción

La acción List Service Account Roles proporciona los siguientes resultados:

Tipo de salida de la acción Disponibilidad
Adjunto del muro de casos No disponible
Vínculo al muro de casos No disponible
Tabla del muro de casos No disponible
Tabla de enriquecimiento No disponible
Resultado de JSON Disponible
Mensajes de salida Disponible
Resultado de secuencia de comandos Disponible
Resultado de JSON

En el siguiente ejemplo, se muestra el resultado JSON que se recibe cuando se usa la acción List Service Account Roles:

{
   "roles": ["role1", "role2"],
   "unique_permissions": ["permission1", "permission2"]
}
Mensajes de salida

La acción List Service Account Roles puede devolver los siguientes mensajes de salida:

Mensaje de salida Descripción del mensaje

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.

La acción se completó correctamente.
Error executing action "List Service Account Roles". Reason: ERROR_REASON

No se pudo realizar la acción.

Verifica la conexión al servidor, los parámetros de entrada o las credenciales.

Ping

Usa la acción Ping para probar la conectividad a Cloud Asset Inventory.

La acción no se ejecuta en las entidades de Google SecOps.

Entradas de acción

Ninguno

Resultados de la acción

La acción Ping proporciona los siguientes resultados:

Tipo de salida de la acción Disponibilidad
Adjunto del muro de casos No disponible
Vínculo al muro de casos No disponible
Tabla del muro de casos No disponible
Tabla de enriquecimiento No disponible
Resultado de JSON No disponible
Mensajes de salida Disponible
Resultado de secuencia de comandos Disponible
Mensajes de salida

La acción Ping puede devolver los siguientes mensajes de salida:

Mensaje de salida Descripción del mensaje
Successfully connected to the Google Cloud Asset Inventory server with the provided connection parameters! La acción se completó correctamente.
Failed to connect to the Google Cloud Asset Inventory server! No se pudo realizar la acción.
Resultado de secuencia de comandos

En la siguiente tabla, se indica el valor del resultado de la secuencia de comandos cuando se usa la acción Ping:

Nombre del resultado de la secuencia de comandos Valor
is_success True o False

¿Necesitas más ayuda? Obtén respuestas de miembros de la comunidad y profesionales de Google SecOps.