Integrar Inventario de Recursos de Cloud 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 Google SecOps, la integración de Inventario de Recursos de Cloud se llama Inventario de Recursos de Google Cloud.
Antes de empezar
Para usar la integración, necesitas un rol de Gestión de Identidades y Accesos (IAM) y unaGoogle Cloud cuenta de servicio.
Crear y configurar un rol de gestión de identidades y accesos personalizado
Para crear un rol de gestión de identidades y accesos personalizado y configurarle un permiso específico, sigue estos pasos:
En la Google Cloud consola, ve a la página Roles de gestión de identidades y accesos.
Haz clic en Crear rol para crear un rol personalizado con los permisos necesarios para la integración.
Para crear un rol personalizado, indica el título, la descripción y un ID único.
En Fase de lanzamiento del rol, selecciona Disponibilidad general.
Añade el siguiente permiso al rol creado:
cloudasset.assets.searchAllResources
Crear y configurar una cuenta de servicio
Para integrar Inventario de Recursos de Cloud con Google SecOps, puedes usar una cuenta de servicio que ya tengas o crear una. Para obtener instrucciones sobre cómo crear una cuenta de servicio, consulta el artículo Crear cuentas de servicio.
Para integrar Cloud Asset Inventory, debes conceder a tu cuenta de servicio el rol personalizado que has creado en la sección anterior y el rol Cloud Asset Viewer.
Si no usas un correo de identidad de carga de trabajo para configurar la integración, crea una clave de cuenta de servicio en JSON después de crear una cuenta de servicio. Debes proporcionar todo el contenido del archivo de clave JSON descargado al configurar los parámetros de integración.
Por motivos de seguridad, te recomendamos que utilices direcciones de correo de identidad de carga de trabajo en lugar de claves JSON de cuentas de servicio. Para obtener más información sobre las identidades de carga de trabajo, consulta Identidades de cargas de trabajo.
Asignar un rol personalizado a una cuenta principal
Una vez que hayas concedido tu nuevo rol personalizado a un principal seleccionado, este podrá cambiar los permisos de cualquier usuario de tu organización.
Para asignar el rol personalizado a una cuenta principal, sigue estos pasos:
En la consola de Google Cloud , ve a la página Gestión de identidades y accesos.
En el campo Filter (Filtro), pega el valor de Workload Identity Email (Correo de identidad de carga de trabajo) que usas para la integración de Cloud Asset Inventory y busca el principal.
Haz clic en Editar principal. Se abrirá el cuadro de diálogo Editar acceso a "PROJECT".
En Asignar roles, haz clic en Añadir otro rol.
Selecciona los roles predefinidos de Cloud Asset Inventory.
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
La raíz de la API de la instancia de Inventario de Recursos de Cloud. El valor predeterminado es |
Organization ID |
Optional
El ID de organización que se va a usar en la integración del Inventario de Recursos de Cloud. |
Project ID |
Optional El ID de proyecto que se usará para la integración del Inventario de Recursos de Cloud. Si no asigna ningún valor a este parámetro, la integración obtiene el ID del proyecto del contenido del archivo JSON proporcionado en el parámetro |
User's Service Account |
Obligatorio
El contenido del archivo JSON de la clave de la cuenta de servicio. Puede configurar este parámetro o el parámetro Para configurar este parámetro, proporciona el contenido completo del archivo JSON de la clave de la cuenta de servicio que has descargado al crear una cuenta de servicio. |
Quota Project ID |
Optional El Google Cloud ID de proyecto que usas para las APIs Google Cloud y la facturación. Para usar este parámetro, debe conceder el rol Si no asignas ningún valor a este parámetro, la integración obtiene el ID de proyecto de tu cuenta de servicio Google Cloud . |
Workload Identity Email |
Optional La dirección de correo del cliente de tu cuenta de servicio. Puede configurar este parámetro o el parámetro Para suplantar cuentas de servicio con la federación de identidades de cargas de trabajo,
asigna el rol |
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 está seleccionada de forma predeterminada. |
Para obtener instrucciones detalladas sobre cómo configurar una integración en Google SecOps, consulta Configurar integraciones.
Si es necesario, puedes hacer cambios más adelante. Después de configurar una instancia de integración, puedes usarla en los cuadernos de estrategias. Para obtener más información sobre cómo configurar y admitir varias instancias, consulta Admitir varias instancias.
Acciones
Para obtener más información sobre las acciones, consulta Responder a las acciones pendientes de Mi mesa de trabajo y Realizar una acción manual.
Recurso Enrich
Usa la acción Enriquecer recurso para enriquecer la información sobre un Google Cloud recurso mediante Inventario de Recursos de Cloud.
La acción no se ejecuta en entidades de Google SecOps.
Entradas de acciones
Para configurar la acción Enrich Resource (Enriquecer recurso), usa los siguientes parámetros:
| Parámetro | Descripción |
|---|---|
Resource Names |
Obligatorio
Lista separada por comas que contiene los nombres de los recursos de los que se quieren obtener los detalles. Para configurar este parámetro, introduce el nombre completo del recurso de metadatos con el siguiente formato:
|
Fields To Return |
Optional
Lista de campos separados por comas que se devolverán. El valor predeterminado es Estos son algunos ejemplos de valores:
La acción siempre devuelve el campo También hay una opción para configurar filtros avanzados. Por ejemplo, para devolver una clave específica de |
Resultados de la acción
La acción Enriquecer recurso proporciona los siguientes resultados:
| Tipo de salida de la acción | Disponibilidad |
|---|---|
| Adjunto del panel de casos | No disponible |
| Enlace del panel de casos | No disponible |
| Tabla del panel de casos | No disponible |
| Tabla de enriquecimiento | No disponible |
| Resultado de JSON | Disponible |
| Mensajes de salida | Disponible |
| Resultado de la secuencia de comandos | Disponible |
Resultado de JSON
En el siguiente ejemplo se muestra la salida del resultado JSON recibida al usar la acción Enrich Resource (Enriquecer recurso):
[
{
"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 resultante | Descripción del mensaje |
|---|---|
|
La acción se ha realizado correctamente. |
Error executing action "Enrich resources". Reason:
ERROR_REASON |
No se ha podido realizar la acción. Comprueba la conexión al servidor, los parámetros de entrada o las credenciales. |
Resultado de la secuencia de comandos
En la siguiente tabla se muestra el valor de la salida del resultado de la secuencia de comandos al usar la acción Enriquecer recurso:
| Nombre del resultado del script | Valor |
|---|---|
is_success |
True o False |
Obtener captura de recurso
Usa la acción Obtener una instantánea de un recurso para obtener información sobre el recurso mediante Inventario de Recursos de Cloud.
Esta acción no se ejecuta en entidades de Google SecOps.
Entradas de acciones
Para configurar la acción Obtener información de recursos, usa los siguientes parámetros:
| Parámetro | Descripción |
|---|---|
Resource Names |
Obligatorio Lista de recursos separados por comas de los que se deben obtener los detalles. Para configurar este parámetro, introduce el nombre completo del recurso de metadatos con el siguiente formato:
|
Fields To Return |
Optional Lista de campos separados por comas que se devolverán. Introduce todos los campos con el siguiente formato: assets.FIELD
Estos son algunos ejemplos de valores: La acción siempre devuelve el campo El valor predeterminado es |
Resultados de la acción
La acción Obtener información general del recurso proporciona los siguientes resultados:
| Tipo de salida de la acción | Disponibilidad |
|---|---|
| Adjunto del panel de casos | No disponible |
| Enlace del panel de casos | No disponible |
| Tabla del panel de casos | No disponible |
| Tabla de enriquecimiento | No disponible |
| Resultado de JSON | Disponible |
| Mensajes de salida | Disponible |
| Resultado de la secuencia de comandos | Disponible |
Resultado de JSON
En los siguientes ejemplos se muestran las salidas de resultados JSON recibidas al usar la acción Obtener una instantánea de un recurso:
Resultado en JSON de 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 JSON de 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 Obtener una vista de un recurso puede devolver los siguientes mensajes de salida:
| Mensaje resultante | Descripción del mensaje |
|---|---|
Successfully returned information about the following resources
using Google Cloud Asset Inventory:
ASSET_IDENTIFIER
|
La acción se ha realizado correctamente. |
Error executing action "Get Resource Snapshot". Reason:
ERROR_REASON |
No se ha podido realizar la acción. Comprueba la conexión al servidor, los parámetros de entrada o las credenciales. |
Resultado de la secuencia de comandos
En la siguiente tabla se muestra el valor del resultado de la secuencia de comandos cuando se usa la acción Obtener una copia de un recurso:
| Nombre del resultado del script | Valor |
|---|---|
is_success |
True o False |
Mostrar roles de cuentas de servicio
Usa la acción List Service Account Roles (Listar roles de cuenta de servicio) para enumerar los roles relacionados con la cuenta de servicio Google Cloud mediante Inventario de Recursos de Cloud.
Esta acción no se ejecuta en entidades de Google SecOps.
Entradas de acciones
Para configurar la acción List Service Account Roles (Listar roles de cuenta de servicio), usa los siguientes parámetros:
| Parámetro | Descripción |
|---|---|
Service Accounts |
Obligatorio Lista separada por comas de las cuentas de servicio de las que se quieren obtener detalles. |
Check Roles |
Optional Lista de roles separados por comas que se deben comprobar en relación con la cuenta de servicio, como |
Check Permissions |
Optional Lista separada por comas de permisos que se deben comprobar en relación con la cuenta de servicio, como |
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 Número de roles relacionados con la cuenta de servicio que se van a devolver. El valor predeterminado es 100. |
Max Permissions To Return |
Obligatorio Número de permisos relacionados con la cuenta de servicio que se devolverán. |
Resultados de la acción
La acción List Service Account Roles (Listar roles de cuenta de servicio) proporciona los siguientes resultados:
| Tipo de salida de la acción | Disponibilidad |
|---|---|
| Adjunto del panel de casos | No disponible |
| Enlace del panel de casos | No disponible |
| Tabla del panel de casos | No disponible |
| Tabla de enriquecimiento | No disponible |
| Resultado de JSON | Disponible |
| Mensajes de salida | Disponible |
| Resultado de la secuencia de comandos | Disponible |
Resultado de JSON
En el siguiente ejemplo se muestra la salida del resultado JSON recibida al usar la acción List Service Account Roles (Listar roles de cuenta de servicio):
{
"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 resultante | Descripción del mensaje |
|---|---|
|
La acción se ha realizado correctamente. |
Error executing action "List Service Account Roles". Reason:
ERROR_REASON |
No se ha podido realizar la acción. Comprueba la conexión al servidor, los parámetros de entrada o las credenciales. |
Ping
Usa la acción Ping para probar la conectividad con Inventario de Recursos de Cloud.
La acción no se ejecuta en entidades de Google SecOps.
Entradas de acciones
Ninguno
Resultados de la acción
La acción Ping proporciona las siguientes salidas:
| Tipo de salida de la acción | Disponibilidad |
|---|---|
| Adjunto del panel de casos | No disponible |
| Enlace del panel de casos | No disponible |
| Tabla del panel de casos | No disponible |
| Tabla de enriquecimiento | No disponible |
| Resultado de JSON | No disponible |
| Mensajes de salida | Disponible |
| Resultado de la secuencia de comandos | Disponible |
Mensajes de salida
La acción Ping puede devolver los siguientes mensajes de salida:
| Mensaje resultante | Descripción del mensaje |
|---|---|
Successfully connected to the Google Cloud Asset Inventory
server with the provided connection parameters! |
La acción se ha realizado correctamente. |
Failed to connect to the Google Cloud Asset Inventory server!
|
No se ha podido realizar la acción. |
Resultado de la secuencia de comandos
En la siguiente tabla se muestra el valor de la salida del resultado de la secuencia de comandos al usar la acción Ping:
| Nombre del resultado del script | Valor |
|---|---|
is_success |
True o False |
¿Necesitas más ayuda? Recibe respuestas de los miembros de la comunidad y de los profesionales de Google SecOps.