Coletar registros de contexto do Cloud Compute

Compatível com:

Este documento explica como exportar e transferir Google Cloud registros de contexto do Compute para o Google Security Operations usando o Cloud Storage. O analisador extrai informações dos registros no formato JSON. Em seguida, ele normaliza e estrutura os dados extraídos no formato UDM do Google SecOps, com foco em detalhes sobre máquinas virtuais, como especificações de hardware, configuração de rede, configurações de segurança e relacionamentos com outras entidades.

Antes de começar

  • Verifique se você tem uma instância do Google SecOps.
  • Verifique se o Compute está configurado e ativo no ambiente Google Cloud .
  • Verifique se você tem acesso privilegiado a Google Cloud e as permissões adequadas.

Criar um bucket do Cloud Storage

  1. Faça login no console do Google Cloud.
  2. Acesse a página Buckets do Cloud Storage.

    Acessar buckets

  3. Clique em Criar.

  4. Na página Criar um bucket, insira as informações do seu bucket. Após cada uma das etapas a seguir, clique em Continuar para prosseguir para a próxima:

    1. Na seção Começar, faça o seguinte:

      1. Insira um nome exclusivo que atenda aos requisitos de nome de bucket. Por exemplo, compute-context-logs.
      2. Para ativar o namespace hierárquico, clique na seta de expansão para abrir a seção Otimizar para cargas de trabalho orientadas a arquivos e com uso intensivo de dados e selecione Ativar namespace hierárquico neste bucket.

      3. Para adicionar um rótulo de bucket, clique na seta de expansão para abrir a seção Rótulos.

      4. Clique em Adicionar rótulo e especifique uma chave e um valor para o rótulo.

    2. Na seção Escolha onde armazenar seus dados, faça o seguinte:

      1. Selecione um tipo de local.
      2. Use o menu do tipo de local para selecionar um Local em que os dados de objetos no bucket serão armazenados permanentemente.

      3. Para configurar a replicação entre buckets, abra a seção Configurar a replicação entre buckets.

    3. Na seção Escolha uma classe de armazenamento para seus dados, selecione uma classe de armazenamento padrão para o bucket ou selecione Classe automática para gerenciamento automático da classe de armazenamento dos dados do bucket.

    4. Na seção Escolha como controlar o acesso a objetos, selecione não para aplicar a prevenção de acesso público e selecione um modelo de controle de acesso para os objetos do bucket.

    5. Na seção Escolha como proteger os dados do objeto, faça o seguinte:

      1. Selecione qualquer uma das opções em Proteção de dados que você quer definir para o bucket.
      2. Para escolher como os dados do objeto serão criptografados, clique na seta de expansão identificada como Criptografia de dados e selecione um método de criptografia de dados.
  5. Clique em Criar.

Configurar Google Cloud exportação de registros do Compute

  1. Faça login no console do Google Cloud.
  2. Acesse Logging > Roteador de registros.
  3. Clique em Criar coletor.
  4. Informe os seguintes parâmetros de configuração:

    • Nome do coletor: insira um nome significativo. Por exemplo, Compute-Context-Sink.
    • Destino do sink: selecione Cloud Storage e insira o URI do bucket. Por exemplo, gs://compute-context-logs.
    • Filtro de registro:

      logName="*compute*"
      resource.type="gce_instance"
      
  5. Clique em Criar.

Configurar permissões do Cloud Storage

  1. Acesse IAM e administrador > IAM.
  2. Localize a conta de serviço do Cloud Logging.
  3. Conceda o papel roles/storage.admin no bucket.

Configurar um feed no Google SecOps para ingerir Google Cloud registros de contexto do Compute

  1. Acesse Configurações do SIEM > Feeds.
  2. Clique em Adicionar novo.
  3. No campo Nome do feed, insira um nome para o feed. Por exemplo, Google Cloud Registros de contexto de computação.
  4. Selecione Google Cloud Storage como o Tipo de origem.
  5. Selecione Contexto de computação do GCP como o Tipo de registro.
  6. Clique em Pegar conta de serviço ao lado do campo Conta de serviço do Chronicle.
  7. Clique em Próxima.
  8. Especifique valores para os seguintes parâmetros de entrada:

    • URI do bucket do Storage: URL do bucket do Cloud Storage. Por exemplo, gs://compute-context-logs.
    • URI Is A: selecione Directory which includes subdirectories.
    • Opções de exclusão de origem: selecione a opção de exclusão de acordo com sua preferência.

    • Namespace do recurso: o namespace do recurso.

    • Rótulos de ingestão: o rótulo aplicado aos eventos desse feed.

  9. Clique em Próxima.

  10. Revise a configuração do novo feed na tela Finalizar e clique em Enviar.

Tabela de mapeamento do UDM

Campo de registro Mapeamento do UDM Lógica
ancestrais event.idm.entity.entity.asset.attribute.labels.value Cada valor de ancestral na matriz de ancestrais é mapeado para um rótulo separado com a chave ancestors.
assetType event.idm.entity.entity.asset.category Mapeado diretamente do campo "assetType".
asset_type event.idm.entity.entity.asset.category Mapeado diretamente do campo asset_type.
nome event.idm.entity.entity.resource.name Mapeado diretamente do campo de nome.
resource.data.cpuPlatform event.idm.entity.entity.asset.hardware.cpu_platform Mapeado diretamente do campo resource.data.cpuPlatform.
resource.data.creationTimestamp event.idm.entity.entity.asset.attribute.creation_time Analisado para um formato de carimbo de data/hora do campo resource.data.creationTimestamp.
resource.data.id event.idm.entity.entity.asset.product_object_id Mapeado diretamente do campo resource.data.id.
resource.data.labels.business_function event.idm.entity.entity.asset.attribute.labels.value Mapeado diretamente do campo resource.data.labels.business_function, com a chave definida como business_function.
resource.data.labels.environment event.idm.entity.entity.asset.attribute.labels.value Mapeado diretamente do campo resource.data.labels.environment, com a chave definida como environment.
resource.data.labels.infra_location event.idm.entity.entity.asset.attribute.labels.value Mapeado diretamente do campo resource.data.labels.infra_location, com a chave definida como infra_location.
resource.data.labels.instance_group event.idm.entity.user.group_identifiers Mapeado diretamente do campo resource.data.labels.instance_group.
resource.data.labels.os event.idm.entity.entity.asset.platform_software.platform_version Mapeado diretamente do campo resource.data.labels.os.
resource.data.labels.primary_application event.idm.entity.entity.asset.attribute.labels.value Mapeado diretamente do campo resource.data.labels.primary_application, com a chave definida como primary_application.
resource.data.labels.project_code event.idm.entity.entity.asset.attribute.labels.value Mapeado diretamente do campo resource.data.labels.project_code, com a chave definida como project_code.
resource.data.lastStartTimestamp event.idm.entity.entity.asset.last_boot_time Analisado para um formato de carimbo de data/hora do campo resource.data.lastStartTimestamp.
resource.data.machineType event.idm.entity.entity.asset.hardware.model O tipo de máquina é extraído do campo resource.data.machineType usando uma expressão regular.
resource.data.name event.idm.entity.entity.asset.hostname Mapeado diretamente do campo resource.data.name.
resource.data.networkInterfaces.0.accessConfigs.0.natIP event.idm.entity.entity.asset.nat_ip O primeiro endereço IP NAT da primeira interface de rede é mapeado.
resource.data.networkInterfaces.0.network event.idm.entity.entity.asset.attribute.cloud.vpc.name O ID da rede é extraído do campo resource.data.networkInterfaces.0.network usando uma expressão regular.
resource.data.networkInterfaces.0.networkIP event.idm.entity.entity.asset.ip O endereço IP da primeira interface de rede é mapeado.
resource.data.networkInterfaces.1.networkIP event.idm.entity.entity.asset.ip O endereço IP da segunda interface de rede é mapeado.
resource.data.selfLink event.idm.entity.entity.url Mapeado diretamente do campo resource.data.selfLink.
resource.data.serviceAccounts.0.email event.idm.entity.relations.entity.user.email_addresses O endereço de e-mail da primeira conta de serviço é mapeado.
resource.data.status event.idm.entity.entity.asset.deployment_status É associado a ACTIVE se o status for RUNNING, PROVISIONING, STAGING, STOPPING, SUSPENDING, SUSPENDED, REPAIRING ou TERMINATED. Caso contrário, será mapeado para DEPLOYMENT_STATUS_UNSPECIFIED.
event.idm.entity.entity.asset.attribute.cloud.availability_zone A zona de disponibilidade é criada pela combinação dos campos "region" e "zone_suffix".
event.idm.entity.entity.asset.attribute.cloud.environment Defina como GOOGLE_CLOUD_PLATFORM.
event.idm.entity.entity.asset.attribute.cloud.project.name O ID do projeto é extraído do campo de nome usando uma expressão regular.
event.idm.entity.entity.asset.attribute.cloud.project.resource_type Defina como CLOUD_PROJECT.
event.idm.entity.entity.asset.attribute.cloud.vpc.resource_type Defina como VPC_NETWORK.
event.idm.entity.entity.resource.resource_type Defina como VIRTUAL_MACHINE se asset_type ou assetType contiver Instance.
event.idm.entity.entity.resource.type Defina como VIRTUAL_MACHINE se asset_type ou assetType contiver Instance.
event.idm.entity.metadata.collected_timestamp Defina o carimbo de data/hora do evento do Logstash.
event.idm.entity.metadata.entity_type Defina como ASSET.
event.idm.entity.metadata.product_name Defina como GCP Compute Context.
event.idm.entity.metadata.vendor_name Defina como Google Cloud Platform.
event.idm.entity.relations.entity.user.attribute.cloud.environment Defina como GOOGLE_CLOUD_PLATFORM.
event.idm.entity.relations.entity_type Defina como USER.
event.idm.entity.relations.relationship Defina como ADMINISTERS.

Alterações

2024-01-27

Correção de bugs:

  • Os mapeamentos de name, resource.data.id, resource.data.name, region, resource.data.selfLink, project_id, asset_network_id e {region}-%{zone_suffix} foram separados em blocos de mutação distintos.

2024-01-05

Melhoria:

  • O mapeamento de event.idm.entity.entity.namespace foi removido.
  • Foi adicionado suporte para analisar todos os networkIP de resource.data.networkInterfaces.

2022-07-29

  • Foi adicionada uma verificação condicional para resource.data.lastStartTimestamp e mapeada para entity.asset.last_boot_time.
  • Foi adicionada uma verificação condicional para resource.data.networkInterfaces.0.networkIP e mapeada para entity.asset.ip.

2022-04-04

  • Atualização do nome do fornecedor.

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