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 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 ativo 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 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:

    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. Escolha 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 excluir do coletor: selecione os registros que você não quer que sejam enviados ao 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 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
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 recém-criado.

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