Recolha Google Cloud registos de computação

Compatível com:

Este documento explica como configurar a Google Cloud exportação de registos de computação para o Google Security Operations através do Cloud Storage. O analisador sintático 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 eventos de segurança. Processa vários formatos de registos, incluindo mensagens semelhantes a syslog e pares de chave-valor, e categoriza eventos com base em campos extraídos, como type e action.

Antes de começar

Certifique-se de que tem os seguintes pré-requisitos:

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

Crie um contentor do Google Cloud Storage

  1. Inicie sessão na Google Cloud consola.
  2. Aceda à página Contentores do Cloud Storage.

    Aceda aos contentores

  3. Clique em Criar.

  4. Na página Criar um depósito, introduza as informações do depósito. Após cada um dos passos seguintes, clique em Continuar para avançar para o passo seguinte:

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

      1. Introduza um nome exclusivo que cumpra os requisitos de nome do contentor; por exemplo, compute-logs.
      2. Para ativar o espaço de nomes hierárquico, clique na seta de expansão para expandir a secção Otimizar para cargas de trabalho orientadas para ficheiros e com grande volume de dados e, de seguida, selecione Ativar espaço de nomes hierárquico neste contentor.

        1. Para adicionar uma etiqueta de grupo, clique na seta de expansão para expandir a secção Etiquetas.
        2. Clique em Adicionar etiqueta e especifique uma chave e um valor para a etiqueta.
    2. Na secção Escolha onde quer armazenar os seus dados, faça o seguinte:

      1. Selecione um Tipo de localização.

        1. Use o menu de tipo de localização para selecionar uma Localização onde os dados de objetos no seu contentor vão ser armazenados permanentemente.
        1. Para configurar a replicação entre contentores, expanda a secção Configurar replicação entre contentores.
    3. Na secção Escolha uma classe de armazenamento para os seus dados, selecione uma classe de armazenamento predefinida para o contentor ou selecione Autoclass para a gestão automática da classe de armazenamento dos dados do seu contentor.

    4. Na secçã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 controlo de acesso para os objetos do seu contentor.

    5. Na secção Escolha como proteger os dados de objetos, faça o seguinte:

      1. Selecione qualquer uma das opções em Proteção de dados que quer definir para o seu contentor.
      2. Para escolher como os dados de objetos vão ser encriptados, clique na seta de expansão com a etiqueta Encriptação de dados e selecione um Método de encriptação de dados.
  5. Clique em Criar.

Configure a Google Cloud exportação de registos do Compute

  1. Na Google Cloud consola, aceda a Registo > Router de registos.
  2. Clique em Criar destino.
  3. Forneça os seguintes detalhes:

    • Nome do destino: indique um nome significativo; por exemplo, Compute-Logs-Sink.
    • Destino da sincronização: selecione Cloud Storage .
    • Destino da sincronização: selecione Cloud Storage e introduza o URI do contentor; por exemplo, gs://<your-bucket-name>/compute-logs.
    • Filtro de registo: defina filtros para capturar Google Cloud registos de computação da seguinte forma:

      • Nome e tipo do registo:

        logName="*compute*"
        
      • Campos relacionados com a rede (como endereços IP e 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 com a segurança:

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

Configure autorizações para o Cloud Storage

  1. Aceda a 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. Atribua-lhe a função roles/storage.admin no contentor.

Configure feeds

Existem dois pontos de entrada diferentes para configurar feeds na plataforma Google SecOps:

  • Definições do SIEM > Feeds > Adicionar novo
  • Content Hub > Pacotes de conteúdo > Começar

Como configurar o Google Cloud feed de computação

  1. Clique no pacote Google Cloud Compute platform.
  2. Localize o tipo de registo GCP Compute Feed e clique em Adicionar novo feed.
  3. Especifique valores para os seguintes campos:

    • Tipo de origem: Google Cloud Storage V2.
    • URI do contentor de armazenamento: URL do contentor do Cloud Storage; por exemplo, gs://compute-context-logs.
    • Opção de eliminação da origem: selecione a opção de eliminação de acordo com a sua preferência.
  • Idade máxima do ficheiro: inclua ficheiros modificados no número de dias mais recente. A predefinição é 180 dias.
  • Conta de serviço do Chronicle: copie a conta de serviço. Precisa desta conta para adicionar autorizações no contentor para que o Google SecOps possa ler ou eliminar dados no contentor.

Opções avançadas

  • Nome do feed: um valor pré-preenchido que identifica o feed.
  • Espaço de nomes do recurso: espaço de nomes associado ao feed.
  • Etiquetas de carregamento: etiquetas aplicadas a todos os eventos deste feed.
  1. Clique em Criar feed.

Para mais informações sobre a configuração de vários feeds para diferentes tipos de registos nesta família de produtos, consulte o artigo Configure feeds por produto.

Tabela de mapeamento da UDM

Campo de registo Mapeamento do UDM Lógica
addr read_only_udm.principal.ip Unido à lista de endereços IP principal se o campo não estiver vazio ou for "?".
jsonPayload.connection.dest_ip read_only_udm.target.ip Unidos na lista de endereços IP de destino, se o campo existir.
jsonPayload.connection.dest_port read_only_udm.target.port Convertido em string e, em seguida, em 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, em seguida, em número inteiro. Usado para determinar o protocolo IP (TCP, UDP, etc.) através de uma tabela de pesquisa e mapeado se não ocorrerem erros durante a conversão.
jsonPayload.connection.src_ip read_only_udm.principal.ip Unido à lista de endereços IP principal, se o campo existir.
jsonPayload.connection.src_port read_only_udm.principal.port Convertido em string e, em seguida, em 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 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 (PERMITIR/BLOQUEAR) 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 em string e mapeado se não ocorrerem erros durante a conversão.
jsonPayload.rule_details.reference read_only_udm.security_result.rule_labels.value Mapeado para o valor da etiqueta 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 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", é 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.
escrever 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 em conformidade.
read_only_udm.metadata.event_type A lógica define o tipo de evento com base no campo "tipo" e noutras condições. Se não for encontrada nenhuma correspondência específica, a predefinição é "GENERIC_EVENT".
read_only_udm.metadata.log_type Valor 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 "Reference".
read_only_udm.target.cloud.vpc.resource_type Condicionalmente definido como "VPC_NETWORK" se jsonPayload.instance.project_id ou jsonPayload.dest_vpc.project_id existir.
read_only_udm.target.resource.attribute.cloud.environment Condicionalmente definido 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 a partir do campo "Domínio da conta" extraído do campo "kv_data".
read_only_udm.principal.user.user_display_name Mapeado a partir do campo "Nome da conta" extraído do campo "kv_data".
read_only_udm.target.resource.name Mapeado a partir do campo "Object Name" extraído do campo "kv_data".
read_only_udm.target.resource.type Mapeado a partir do campo "Tipo de objeto" extraído do campo "kv_data".
read_only_udm.principal.process.pid Mapeado a partir do campo "Process ID" extraído do campo "kv_data".
read_only_udm.target.user.windows_sid Mapeado a partir do campo "ID de segurança" extraído do campo "kv_data".
read_only_udm.network.session_id Mapeado a partir do campo "auid".

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