Coletar registros do Cloud Run

Compatível com:

Este guia explica como exportar registros do Cloud Run para o Google Security Operations usando o Cloud Storage. O analisador extrai campos de registros JSON, transformando-os no modelo de dados unificado (UDM). Ele processa vários formatos de registro, incluindo dados de solicitação HTTP e registros de auditoria do sistema, mapeando campos relevantes para a UDM e enriquecendo os dados com rótulos e metadados específicos do Cloud Run.

Antes de começar

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

  • Instância do Google SecOps.
  • O Cloud Run 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, cloudrun-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 a exportação de registros no Cloud Run

  1. Na página Google Cloud Boas-vindas, clique no ícone Cloud Run.
  2. Pesquise Logging na barra de pesquisa na parte de cima e clique em Enter.
  3. No Explorador de registros, filtre os registros escolhendo Cloud Run em Nome do registro e clique em Aplicar.
  4. Clique em Mais ações > Criar coletor no menu.
  5. Forneça as seguintes configurações:
    1. Detalhes do coletor: insira um nome e uma descrição.
    2. Clique em Próxima.
    3. Destino do coletor: selecione Bucket do Cloud Storage.
    4. Bucket do Cloud Storage: selecione o bucket criado anteriormente ou crie um novo.
    5. Clique em Próxima.
    6. Escolher os registros para incluir no coletor: um registro padrão é preenchido quando você seleciona uma opção no bucket do Cloud Storage.
    7. Clique em Próxima.
    8. Opcional: Escolher registros para filtrar do coletor: selecione os registros que você não quer que sejam coletados.
  6. Clique em Criar coletor.

Configurar 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, Registros do Cloud Run.
  5. Selecione Google Cloud Storage como o Tipo de origem.
  6. Selecione GCP Cloud Run 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.

Tabela de mapeamento do UDM

Campo de registro Mapeamento do UDM Lógica
httpRequest.latency target.resource.attribute.labels.[] O valor de httpRequest.latency do registro bruto é usado como o valor de um rótulo com a chave http_request_latency em target.resource.attribute.labels.
httpRequest.protocol network.application_protocol Se httpRequest.protocol contiver HTTP, o campo UDM será definido como HTTP.
httpRequest.remoteIp principal.asset.ip O valor de httpRequest.remoteIp do registro bruto é usado.
httpRequest.remoteIp principal.ip O valor de httpRequest.remoteIp do registro bruto é usado.
httpRequest.requestMethod network.http.method O valor de httpRequest.requestMethod do registro bruto é usado.
httpRequest.requestSize network.sent_bytes O valor de httpRequest.requestSize do registro bruto é convertido em um número inteiro sem sinal e usado.
httpRequest.requestUrl target.url O valor de httpRequest.requestUrl do registro bruto é usado.
httpRequest.responseSize network.received_bytes O valor de httpRequest.responseSize do registro bruto é convertido em um número inteiro sem sinal e usado.
httpRequest.serverIp target.asset.ip O valor de httpRequest.serverIp do registro bruto é usado.
httpRequest.serverIp target.ip O valor de httpRequest.serverIp do registro bruto é usado.
httpRequest.status network.http.response_code O valor de httpRequest.status do registro bruto é convertido em um número inteiro e usado.
httpRequest.userAgent network.http.parsed_user_agent O valor de httpRequest.userAgent do registro bruto é analisado como uma string de user agent.
httpRequest.userAgent network.http.user_agent O valor de httpRequest.userAgent do registro bruto é usado.
insertId metadata.product_log_id O valor de insertId do registro bruto é usado.
labels.instanceId additional.fields.[] O valor de labels.instanceId é usado como o valor de um rótulo com a chave instanceId em additional.fields.
labels.run.googleapis.com_execution_name additional.fields.[] O valor de labels.run.googleapis.com_execution_name é usado como o valor de um rótulo com a chave execution_name em additional.fields.
labels.run.googleapis.com_task_attempt additional.fields.[] O valor de labels.run.googleapis.com_task_attempt é usado como o valor de um rótulo com a chave task_attempt em additional.fields.
labels.run.googleapis.com_task_index additional.fields.[] O valor de labels.run.googleapis.com_task_index é usado como o valor de um rótulo com a chave task_index em additional.fields.
logName metadata.product_event_type O valor de logName do registro bruto é usado.
resource.labels.configuration_name target.resource.attribute.labels.[] O valor de resource.labels.configuration_name é usado como o valor de um rótulo com a chave configuration_name em target.resource.attribute.labels.
resource.labels.job_name additional.fields.[] O valor de resource.labels.job_name é usado como o valor de um rótulo com a chave job_name em additional.fields.
resource.labels.location target.location.name O valor de resource.labels.location do registro bruto é usado.
resource.labels.project_id target.resource.attribute.labels.[] O valor de resource.labels.project_id é usado como o valor de um rótulo com a chave project_id em target.resource.attribute.labels.
resource.labels.revision_name target.resource.attribute.labels.[] O valor de resource.labels.revision_name é usado como o valor de um rótulo com a chave revision_name em target.resource.attribute.labels.
resource.labels.service_name target.resource.attribute.labels.[] O valor de resource.labels.service_name é usado como o valor de um rótulo com a chave service_name em target.resource.attribute.labels.
resource.type target.resource.resource_subtype O valor de resource.type do registro bruto é usado.
severity security_result.severity Se o valor de severity corresponder a Info (sem diferenciar maiúsculas de minúsculas), o campo do UDM será definido como INFORMATIONAL.
textPayload additional.fields.[] O valor de textPayload é usado como o valor de um rótulo com a chave Textpayload em additional.fields.
timestamp metadata.event_timestamp O valor de timestamp do registro bruto é analisado como um carimbo de data/hora.
timestamp timestamp O valor de timestamp do registro bruto é analisado como um carimbo de data/hora. Determinado pela lógica do analisador com base na presença de determinados campos. O padrão é GENERIC_EVENT. Se has_principal_ip, has_target_ip e httpRequest.protocol corresponderem a HTTP, ele será definido como NETWORK_HTTP. Fixado no código como GCP_RUN. Fixado no código como GCP_RUN. Fixado no código como Google Cloud Platform. Fixado no código como GOOGLE_CLOUD_PLATFORM.

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