Integrar o Inventário de recursos do Cloud ao Google SecOps

Este documento explica como integrar o Inventário de recursos do Cloud ao Google Security Operations (Google SecOps).

Versão da integração: 12.0

Na plataforma Google SecOps, a integração do Inventário de recursos do Cloud é chamada de Inventário de recursos do Google Cloud.

Antes de começar

Para usar a integração, você precisa de um papel do Identity and Access Management (IAM) e de uma Google Cloud conta de serviço.

Criar e configurar um papel personalizado do IAM

Para criar um papel personalizado do IAM e configurar uma permissão específica para ele, siga estas etapas:

  1. No console do Google Cloud , acesse a página Papéis do IAM.

    Acessar "Papéis"

  2. Clique em Criar papel para criar um papel personalizado com as permissões necessárias para a integração.

  3. Para uma nova função personalizada, forneça o Título, a Descrição e um ID exclusivo.

  4. Defina o Estágio de lançamento da função como Disponibilidade geral.

  5. Adicione a seguinte permissão ao papel criado:

    cloudasset.assets.searchAllResources
    

Criar e configurar uma conta de serviço

Para integrar o Inventário de recursos do Cloud ao Google SecOps, use uma conta de serviço atual ou crie uma nova. Para orientações sobre como criar uma conta de serviço, consulte Criar contas de serviço.

A integração do Inventário de recursos do Cloud exige que você conceda à sua conta de serviço o papel personalizado criado na seção anterior e o papel Cloud Asset Viewer.

Se você não usar um e-mail de identidade da carga de trabalho para configurar a integração, crie uma chave de conta de serviço em JSON depois de criar uma conta de serviço. Você precisa fornecer todo o conteúdo do arquivo de chave JSON baixado ao configurar os parâmetros de integração.

Por motivos de segurança, recomendamos que você use endereços de e-mail de identidade da carga de trabalho em vez de chaves JSON da conta de serviço. Para mais informações sobre as identidades de carga de trabalho, consulte Identidades para cargas de trabalho.

Conceder uma função personalizada a um principal

Depois de conceder a nova função personalizada a um principal selecionado, ele poderá mudar permissões para qualquer usuário na sua organização.

Para conceder o papel personalizado a um principal, siga estas etapas:

  1. No console do Google Cloud , acesse a página IAM.

    Acessar IAM

  2. No campo Filtro, cole o valor do e-mail da identidade de carga de trabalho que você usa para a integração do Inventário de recursos do Cloud e pesquise o principal atual.

  3. Clique em Editar principal. A caixa de diálogo Editar acesso a "PROJECT" será aberta.

  4. Em Atribuir papéis, clique em Adicionar outro papel.

  5. Selecione os papéis predefinidos do Inventário de recursos do Cloud.

  6. Clique em Salvar.

Parâmetros de integração

A integração do Cloud Asset Inventory exige os seguintes parâmetros:

Parâmetro Descrição
API Root Obrigatório

A raiz da API da instância do Inventário de recursos do Cloud.

O valor padrão é https://cloudasset.googleapis.com.

Organization ID Opcional

O ID da organização a ser usado na integração do Inventário de recursos do Cloud.

Project ID Opcional

O ID do projeto a ser usado para a integração do Inventário de recursos do Cloud. Se você não definir um valor para esse parâmetro, a integração vai recuperar o ID do projeto do conteúdo do arquivo JSON fornecido no parâmetro User's Service Account.

User's Service Account Obrigatório

O conteúdo do arquivo JSON da chave da conta de serviço.

É possível configurar esse parâmetro ou o Workload Identity Email.

Para configurar esse parâmetro, forneça todo o conteúdo do arquivo JSON da chave da conta de serviço que você baixou ao criar uma conta de serviço.

Quota Project ID Opcional

O ID do projeto Google Cloud que você usa para APIs Google Cloud e faturamento. Para usar esse parâmetro, conceda o papel Service Usage Consumer à sua conta de serviço.

Se você não definir um valor para esse parâmetro, a integração vai extrair o ID do projeto da sua conta de serviço Google Cloud .

Workload Identity Email Opcional

O endereço de e-mail do cliente da sua conta de serviço.

É possível configurar esse parâmetro ou o User's Service Account.

Para representar contas de serviço com a federação de identidade da carga de trabalho, conceda o papel Service Account Token Creator à sua conta de serviço. Para mais detalhes sobre identidades de carga de trabalho e como trabalhar com elas, consulte Identidades para cargas de trabalho.

Verify SSL Obrigatório

Se selecionada, a integração verifica se o certificado SSL para conexão com o servidor do Inventário de recursos do Cloud é válido.

Essa opção é selecionada por padrão.

Para instruções detalhadas sobre como configurar uma integração no Google SecOps, consulte Configurar integrações.

Você pode fazer mudanças mais tarde, se necessário. Depois de configurar uma instância de integração, você pode usá-la em playbooks. Para mais informações sobre como configurar e oferecer suporte a várias instâncias, consulte Suporte a várias instâncias.

Ações

Para mais informações sobre ações, consulte Responder a ações pendentes na Sua mesa de trabalho e Realizar uma ação manual.

Recurso de enriquecimento

Use a ação Enriquecer recurso para enriquecer informações sobre um recurso Google Cloudusando o Inventário de recursos do Cloud.

A ação não é executada em entidades do Google SecOps.

Entradas de ação

Para configurar a ação Enriquecer recurso, use os seguintes parâmetros:

Parâmetro Descrição
Resource Names Obrigatório

Uma lista separada por vírgulas que contém os nomes dos recursos para buscar detalhes.

Para configurar esse parâmetro, insira o nome completo do recurso de metadados no seguinte formato: //cloudresourcemanager.googleapis.com/projects/PROJECT_ID.

Fields To Return Opcional

Uma lista de campos separados por vírgulas a serem retornados.

O valor padrão é *.

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

A ação sempre retorna o campo displayName.

Há também uma opção para configurar filtros avançados. Por exemplo, para retornar uma chave específica de additionalAttributes, digite additionalAttributes.{key}. Para excluir uma chave específica de additionalAttributes, insira -additionalAttributes.{key}.

Saídas de ação

A ação Enriquecer recurso fornece as seguintes saídas:

Tipo de saída da ação Disponibilidade
Anexo do Painel de Casos Indisponível
Link do Painel de Casos Indisponível
Tabela do painel de casos Indisponível
Tabela de enriquecimento Indisponível
Resultado JSON Disponível
Mensagens de saída Disponível
Resultado do script Disponível
Resultado JSON

O exemplo a seguir mostra a saída do resultado JSON recebida ao usar a ação 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"
    }
  }
]
Mensagens de saída

A ação Enrich Resource pode retornar as seguintes mensagens de saída:

Mensagem de resposta Descrição da mensagem

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.

A ação foi concluída.
Error executing action "Enrich resources". Reason: ERROR_REASON

A ação falhou.

Verifique a conexão com o servidor, os parâmetros de entrada ou as credenciais.

Resultado do script

A tabela a seguir lista o valor da saída do resultado do script ao usar a ação Enriquecer recurso:

Nome do resultado do script Valor
is_success True ou False

Acessar snapshot de recurso

Use a ação Receber snapshot de recurso para receber informações sobre o recurso usando o Inventário de recursos do Cloud.

Essa ação não é executada em entidades do Google SecOps.

Entradas de ação

Para configurar a ação Get Resource Snapshot, use os seguintes parâmetros:

Parâmetro Descrição
Resource Names Obrigatório

Uma lista separada por vírgulas de recursos para buscar detalhes.

Para configurar esse parâmetro, insira o nome completo do recurso de metadados no seguinte formato: //cloudresourcemanager.googleapis.com/projects/PROJECT_ID.

Fields To Return Opcional

Uma lista de campos separados por vírgulas a serem retornados.

Insira cada campo no seguinte formato:

assets.FIELD

Exemplos de valores: assets.asset.name, assets.asset.assetType, assets.asset.resource.data.

A ação sempre retorna o campo assets.asset.name.

O valor padrão é *.

Saídas de ação

A ação Receber snapshot de recurso fornece as seguintes saídas:

Tipo de saída da ação Disponibilidade
Anexo do Painel de Casos Indisponível
Link do Painel de Casos Indisponível
Tabela do painel de casos Indisponível
Tabela de enriquecimento Indisponível
Resultado JSON Disponível
Mensagens de saída Disponível
Resultado do script Disponível
Resultado JSON

Os exemplos a seguir mostram as saídas de resultados JSON recebidas ao usar a ação Receber snapshot de recurso:

Resultado 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 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"
                   }
               }
           ]
       }
   }
]
Mensagens de saída

A ação Get Resource Snapshot pode retornar as seguintes mensagens de saída:

Mensagem de resposta Descrição da mensagem
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.

A ação foi concluída.
Error executing action "Get Resource Snapshot". Reason: ERROR_REASON

A ação falhou.

Verifique a conexão com o servidor, os parâmetros de entrada ou as credenciais.

Resultado do script

A tabela a seguir lista o valor da saída do resultado do script ao usar a ação Receber snapshot do recurso:

Nome do resultado do script Valor
is_success True ou False

Listar papéis da conta de serviço

Use a ação List Service Account Roles para listar os papéis relacionados à conta de serviço Google Cloud usando o Inventário de recursos do Cloud.

Essa ação não é executada em entidades do Google SecOps.

Entradas de ação

Para configurar a ação List Service Account Roles, use os seguintes parâmetros:

Parâmetro Descrição
Service Accounts Obrigatório

Uma lista separada por vírgulas de contas de serviço para buscar detalhes.

Check Roles Opcional

Uma lista separada por vírgulas de papéis a serem verificados em relação à conta de serviço, como roles/cloudasset.owner.

Check Permissions Opcional

Uma lista separada por vírgulas de permissões a serem verificadas em relação à conta de serviço, como cloudasset.assets.listResource .

Expand Permissions Opcional

Se selecionada, a ação vai retornar informações sobre todas as permissões exclusivas relacionadas ao recurso.

Não selecionada por padrão.

Max Roles To Return Obrigatório

O número de papéis relacionados à conta de serviço que serão retornados.

O valor padrão é 100.

Max Permissions To Return Obrigatório

O número de permissões relacionadas à conta de serviço a serem retornadas.

Saídas de ação

A ação List Service Account Roles fornece as seguintes saídas:

Tipo de saída da ação Disponibilidade
Anexo do Painel de Casos Indisponível
Link do Painel de Casos Indisponível
Tabela do painel de casos Indisponível
Tabela de enriquecimento Indisponível
Resultado JSON Disponível
Mensagens de saída Disponível
Resultado do script Disponível
Resultado JSON

O exemplo a seguir mostra a saída do resultado JSON recebida ao usar a ação List Service Account Roles:

{
   "roles": ["role1", "role2"],
   "unique_permissions": ["permission1", "permission2"]
}
Mensagens de saída

A ação List Service Account Roles pode retornar as seguintes mensagens de saída:

Mensagem de resposta Descrição da mensagem

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.

A ação foi concluída.
Error executing action "List Service Account Roles". Reason: ERROR_REASON

A ação falhou.

Verifique a conexão com o servidor, os parâmetros de entrada ou as credenciais.

Ping

Use a ação Ping para testar a conectividade com o Inventário de recursos do Cloud.

A ação não é executada em entidades do Google SecOps.

Entradas de ação

Nenhuma.

Saídas de ação

A ação Ping fornece as seguintes saídas:

Tipo de saída da ação Disponibilidade
Anexo do Painel de Casos Indisponível
Link do Painel de Casos Indisponível
Tabela do painel de casos Indisponível
Tabela de enriquecimento Indisponível
Resultado JSON Indisponível
Mensagens de saída Disponível
Resultado do script Disponível
Mensagens de saída

A ação Ping pode retornar as seguintes mensagens de saída:

Mensagem de resposta Descrição da mensagem
Successfully connected to the Google Cloud Asset Inventory server with the provided connection parameters! A ação foi concluída.
Failed to connect to the Google Cloud Asset Inventory server! A ação falhou.
Resultado do script

A tabela a seguir lista o valor da saída do resultado do script ao usar a ação Ping:

Nome do resultado do script Valor
is_success True ou False

Precisa de mais ajuda? Receba respostas de membros da comunidade e profissionais do Google SecOps.