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, na sigla em inglês). Ele processa vários formatos de registro, incluindo dados de solicitação HTTP e registros de auditoria do sistema, mapeando campos relevantes para o UDM e enriquecendo os dados com rótulos e metadados específicos do Cloud Run.

Antes de começar

  • Verifique se você tem uma instância do Google SecOps.
  • Verifique se o Cloud Run está configurado e ativado no ambiente Google Cloud .
  • Verifique se você tem acesso privilegiado a Google Cloud.

Crie um bucket do Google 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, 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 Welcome, clique no ícone Cloud Run.
  2. Pesquise Registro na barra de pesquisa na parte de cima e clique em Enter.
  3. No Análise 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 a serem incluídos 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 excluir do coletor: selecione os registros que você não quer enviar para o coletor.
  6. Clique em Criar coletor.

Configurar um feed no Google SecOps para processar registros do Cloud Run

  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, Logs do Cloud Run.
  4. Selecione Google Cloud Storage como o Tipo de origem.
  5. Selecione GCP Cloud Run como o Tipo de registro.
  6. Clique em Pegar conta de serviço como a 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 Cloud Storage: Google Cloud URL do bucket do Cloud Storage no formato gs://my-bucket/<value>.
    • URI Is A: selecione Directory which includes subdirectories.
    • Opções de exclusão da origem: selecione a opção de exclusão de acordo com sua preferência.

    • Namespace de recursos: o namespace de recursos.

    • 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
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 diferenciação entre maiúsculas e 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, o valor será definido como NETWORK_HTTP. Fixado em GCP_RUN. Fixado em GCP_RUN. Fixado em Google Cloud Platform. Fixado em GOOGLE_CLOUD_PLATFORM.

Alterações

2024-01-22

Melhoria:

  • Mapeamento adicionado para registros em que logName é projects/1234/logs/run.googleapis.com%2Fstderr, projects/1234/logs/run.googleapis.com%2Fstdout, projects/1234/logs/run.googleapis.com%2Frequests e projects/1234/logs/run.googleapis.com%2Fvarlog%2Fsystem.
  • httpRequest.latency foi mapeado para target.resource.attribute.labels.
  • resource.labels.configuration_name foi mapeado para target.resource.attribute.labels.
  • resource.labels.revision_name foi mapeado para target.resource.attribute.labels.
  • resource.labels.service_name foi mapeado para target.resource.attribute.labels.
  • httpRequest.protocol foi mapeado para network.application_protocol.
  • httpRequest.requestMethod foi mapeado para network.http.method.
  • httpRequest.requestSize foi mapeado para network.sent_bytes.
  • httpRequest.requestUrl foi mapeado para target.url.
  • httpRequest.responseSize foi mapeado para network.received_bytes.
  • Mapeamento de httpRequest.remoteIp para principal.ip e principal.asset.ip.
  • httpRequest.serverIp foi mapeado para target.ipandtarget.asset.ip.
  • httpRequest.status foi mapeado para network.http.response_code.
  • httpRequest.userAgent foi mapeado para network.http.user_agent.
  • logName foi mapeado para metadata.product_event_type.
  • textPayload foi mapeado para additional.fields.
  • labels.run.googleapis.com_execution_name foi mapeado para additional.fields.
  • labels.run.googleapis.com_task_attempt foi mapeado para additional.fields.
  • labels.run.googleapis.com_task_index foi mapeado para additional.fields.
  • labels.instanceId foi mapeado para additional.fields.
  • resource.labels.job_name foi mapeado para additional.fields.

2023-04-13

Melhoria:

  • Defina target.resource.attribute.cloud.environment como GOOGLE_CLOUD_PLATFORM.
  • Defina target.resource.name como o valor do nome completo do recurso.

2022-07-13

  • Analisador criado recentemente.

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