Coletar registros do Google Cloud Compute

Compatível com:

Neste documento, explicamos como configurar a exportação de registros do Compute para o Google Security Operations usando o Cloud Storage. Google Cloud O analisador extrai campos, normaliza o campo de mensagem e mapeia os dados extraídos para o esquema do modelo de dados unificado (UDM) para uma representação consistente de ocorrência de segurança. Ele processa vários formatos de registro, incluindo mensagens semelhantes ao syslog e pares de chave-valor, e categoriza eventos com base em campos extraídos, como type e action.

Antes de começar

Verifique se você atende aos seguintes pré-requisitos:

  • Instância do Google SecOps.
  • O Compute está configurado e ativo no seu ambiente Google Cloud .
  • Acesso privilegiado ao Google Cloud.

Crie um bucket do Google Cloud Storage

  1. Faça login no console doGoogle 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 etapa:

    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-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.

        1. Para adicionar um rótulo de bucket, clique na seta de expansão para abrir a seção Rótulos.
        2. 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.

        1. Use o menu do tipo de local para selecionar um Local em que os dados de objetos no bucket serão armazenados permanentemente.
        1. 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 a exportação de registros de computação

  1. No Google Cloud console, acesse Logging > Roteador de registros.
  2. Clique em Criar coletor.
  3. Forneça os seguintes detalhes:

    • Nome do coletor: forneça um nome significativo, por exemplo, Compute-Logs-Sink.
    • Destino do coletor: selecione Cloud Storage .
    • Destino do coletor: selecione "Cloud Storage" e insira o URI do bucket. Por exemplo, gs://<your-bucket-name>/compute-logs.
    • Filtro de registros: defina filtros para capturar registros do Google Cloud Compute da seguinte maneira:

      • Nome e tipo do registro:

        logName="*compute*"
        
      • Campos relacionados à rede (como endereços IP, portas):

        jsonPayload.connection.dest_ip="*" OR jsonPayload.connection.src_ip="*"
        
      • Detalhes da instância:

        jsonPayload.dest_instance.project_id="*"
        jsonPayload.src_instance.project_id="*"
        
      • Detalhes relacionados à segurança:

        jsonPayload.rule_details.action="ALLOW" OR jsonPayload.rule_details.action="BLOCK"
        
  4. Clique em Criar.

Configurar permissões do Cloud Storage

  1. Acesse IAM > IAM e administrador > Contas de serviço.
  2. Encontre a conta de serviço do Cloud Logging. Por exemplo, service-account@logging.iam.gserviceaccount.com.
  3. Forneça a função roles/storage.admin no bucket.

Configurar feeds

Há dois pontos de entrada diferentes para configurar feeds na plataforma do Google SecOps:

  • Configurações do SIEM > Feeds
  • Central de conteúdo > Pacotes de conteúdo

Configure feeds em "Configurações do SIEM" > "Feeds".

Para configurar um feed, siga estas etapas:

  1. Acesse Configurações do SIEM > Feeds.
  2. Clique em Adicionar novo feed.
  3. Na próxima página, clique em Configurar um único feed.
  4. No campo Nome do feed, insira um nome para o feed, por exemplo, Google Cloud Registros do Compute.
  5. Selecione Google Cloud Storage como o Tipo de origem.
  6. Selecione GCP Compute como o Tipo de registro.
  7. Clique em Receber conta de serviço como a Conta de serviço do Chronicle.
  8. Clique em Próxima.
  9. Especifique valores para os seguintes parâmetros de entrada:

    • URI do bucket de armazenamento: Google Cloud URL do bucket de armazenamento no formato gs://my-bucket/<value>.
    • URI Is A: selecione Directory which includes subdirectories.
    • Opções de exclusão de fontes: selecione a opção de exclusão de acordo com sua preferência.

  10. Clique em Próxima.

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

Configurar feeds na Central de conteúdo

Especifique valores para os seguintes campos:

  • URI do bucket de armazenamento: Google Cloud URL do bucket de armazenamento no formato gs://my-bucket/<value>.
  • URI Is A: selecione Directory which includes subdirectories.
  • Opções de exclusão de fontes: selecione a opção de exclusão de acordo com sua preferência.

Opções avançadas

  • Nome do feed: um valor pré-preenchido que identifica o feed.
  • Tipo de origem: método usado para coletar registros no Google SecOps.
  • Namespace do recurso: namespace associado ao feed.
  • Rótulos de ingestão: rótulos aplicados a todos os eventos deste feed.

Tabela de mapeamento do UDM

Campo de registro Mapeamento da UDM Lógica
addr read_only_udm.principal.ip Mesclado na lista de endereços IP principais se o campo não estiver vazio ou for "?".
jsonPayload.connection.dest_ip read_only_udm.target.ip Será mesclado na lista de endereços IP de destino se o campo existir.
jsonPayload.connection.dest_port read_only_udm.target.port Convertido para string, depois para número inteiro e mapeado se não ocorrerem erros durante a conversão.
jsonPayload.connection.protocol read_only_udm.network.ip_protocol Convertido em string e depois em número inteiro. Usado para determinar o protocolo IP (TCP, UDP etc.) usando uma tabela de pesquisa e mapeado se não ocorrerem erros durante a conversão.
jsonPayload.connection.src_ip read_only_udm.principal.ip Unidos à lista de endereços IP principais se o campo existir.
jsonPayload.connection.src_port read_only_udm.principal.port Convertido para string, depois para número inteiro e mapeado se não ocorrerem erros durante a conversão.
jsonPayload.dest_instance.project_id read_only_udm.target.resource.product_object_id Mapeado condicionalmente se jsonPayload.dest_vpc.project_id existir.
jsonPayload.dest_instance.region read_only_udm.target.location.name Mapeado condicionalmente se jsonPayload.dest_vpc.project_id existir.
jsonPayload.dest_instance.vm_name read_only_udm.target.resource.attribute.cloud.project.name Mapeado condicionalmente se jsonPayload.dest_vpc.project_id existir.
jsonPayload.dest_instance.zone read_only_udm.target.resource.attribute.cloud.availability_zone Mapeado condicionalmente se jsonPayload.dest_vpc.project_id existir.
jsonPayload.dest_vpc.project_id read_only_udm.target.cloud.vpc.product_object_id Usado como uma condição para mapear campos relacionados.
jsonPayload.dest_vpc.subnetwork_name read_only_udm.target.cloud.vpc.name Mapeado condicionalmente se jsonPayload.dest_vpc.project_id existir.
jsonPayload.instance.project_id read_only_udm.target.resource.product_object_id Mapeado condicionalmente se jsonPayload.instance.project_id existir.
jsonPayload.instance.region read_only_udm.target.location.name Mapeado condicionalmente se jsonPayload.instance.project_id existir.
jsonPayload.instance.vm_name read_only_udm.target.resource.attribute.cloud.project.name Mapeado condicionalmente se jsonPayload.instance.project_id existir.
jsonPayload.instance.zone read_only_udm.target.resource.attribute.cloud.availability_zone Mapeado condicionalmente se jsonPayload.instance.project_id existir.
jsonPayload.message read_only_udm.metadata.product_event_type, read_only_udm.principal.application, read_only_udm.target.process.pid, read_only_udm.target.user.userid, read_only_udm.principal.hostname, read_only_udm.target.process.command_line, read_only_udm.security_result.description, read_only_udm.principal.process.file.full_path Analisados e mapeados para diferentes campos com base em padrões grok e lógica condicional.
jsonPayload.rule_details.action read_only_udm.security_result.action Usado para determinar a ação do resultado de segurança (ALLOW/BLOCK) e mapeado.
jsonPayload.rule_details.direction read_only_udm.network.direction Usado para determinar a direção da rede (INBOUND/OUTBOUND/UNKNOWN_DIRECTION) e mapeado.
jsonPayload.rule_details.priority read_only_udm.security_result.priority_details Convertido para string e mapeado se nenhum erro ocorrer durante a conversão.
jsonPayload.rule_details.reference read_only_udm.security_result.rule_labels.value Mapeado para o valor do rótulo da regra.
jsonPayload.src_instance.project_id read_only_udm.principal.resource.product_object_id Mapeado condicionalmente se jsonPayload.src_vpc.project_id existir.
jsonPayload.src_instance.region read_only_udm.principal.location.name Mapeado condicionalmente se jsonPayload.src_vpc.project_id existir.
jsonPayload.src_instance.vm_name read_only_udm.principal.resource.attribute.cloud.project.name Mapeado condicionalmente se jsonPayload.src_vpc.project_id existir.
jsonPayload.src_instance.zone read_only_udm.principal.resource.attribute.cloud.availability_zone Mapeado condicionalmente se jsonPayload.src_vpc.project_id existir.
jsonPayload.src_vpc.project_id read_only_udm.principal.cloud.vpc.product_object_id Usado como uma condição para mapear campos relacionados.
jsonPayload.src_vpc.subnetwork_name read_only_udm.principal.cloud.vpc.name Mapeado condicionalmente se jsonPayload.src_vpc.project_id existir.
jsonPayload.vpc.project_id read_only_udm.target.cloud.vpc.product_object_id Mapeado condicionalmente se jsonPayload.vpc.project_id existir.
jsonPayload.vpc.subnetwork_name read_only_udm.target.cloud.vpc.name Mapeado condicionalmente se jsonPayload.vpc.project_id existir.
logName read_only_udm.security_result.category_details Mapeado diretamente.
resource.labels.instance_id read_only_udm.principal.resource.product_object_id, read_only_udm.principal.asset_id Mapeado condicionalmente. Se o tipo for "PROCTITLE", ele será usado para criar o ID do recurso.
resource.labels.location read_only_udm.principal.location.name Mapeado condicionalmente se o campo existir.
resource.labels.project_id read_only_udm.metadata.product_deployment_id Mapeado condicionalmente se o campo existir.
resource.labels.zone read_only_udm.principal.resource.attribute.cloud.availability_zone Mapeado condicionalmente se o campo existir.
resource.type read_only_udm.metadata.event_type Usado para determinar o tipo de evento e mapeado.
timestamp read_only_udm.metadata.event_timestamp Mapeado diretamente.
tipo read_only_udm.metadata.product_event_type, read_only_udm.metadata.event_type, read_only_udm.extensions.auth.type Usado para determinar o tipo de evento, o tipo de evento do produto e o tipo de autenticação e mapeado de acordo.
read_only_udm.metadata.event_type A lógica define o tipo de evento com base no campo "type" e em outras condições. Se nenhuma correspondência específica for encontrada, o padrão será "GENERIC_EVENT".
read_only_udm.metadata.log_type Valor da constante "GCP_COMPUTE".
read_only_udm.metadata.vendor_name Valor constante "Google Cloud Platform".
read_only_udm.metadata.product_name Valor constante "Google Cloud Platform".
read_only_udm.security_result.rule_labels.key Valor constante "Referência".
read_only_udm.target.cloud.vpc.resource_type Definido condicionalmente como "VPC_NETWORK" se jsonPayload.instance.project_id ou jsonPayload.dest_vpc.project_id existir.
read_only_udm.target.resource.attribute.cloud.environment Definido condicionalmente como "GOOGLE_CLOUD_PLATFORM" se jsonPayload.instance.project_id, jsonPayload.dest_vpc.project_id ou jsonPayload.src_vpc.project_id existir.
read_only_udm.principal.administrative_domain Mapeado do campo "Domínio da conta" extraído do campo "kv_data".
read_only_udm.principal.user.user_display_name Mapeado do campo "Nome da conta" extraído do campo "kv_data".
read_only_udm.target.resource.name Mapeado do campo "Nome do objeto" extraído do campo "kv_data".
read_only_udm.target.resource.type Mapeado do campo "Tipo de objeto" extraído do campo "kv_data".
read_only_udm.principal.process.pid Mapeado do campo "ID do processo" extraído do campo "kv_data".
read_only_udm.target.user.windows_sid Mapeado do campo "ID de segurança" extraído do campo "kv_data".
read_only_udm.network.session_id Mapeado do campo "auid".

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