Coletar registros do Cloud Run
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
- Faça login no console doGoogle Cloud .
Acesse a página Buckets do Cloud Storage.
Clique em Criar.
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:
Na seção Começar, faça o seguinte:
- Insira um nome exclusivo que atenda aos requisitos de nome de bucket, por exemplo, cloudrun-logs.
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.
Para adicionar um rótulo de bucket, clique na seta de expansão para abrir a seção Rótulos.
Clique em Adicionar rótulo e especifique uma chave e um valor para o rótulo.
Na seção Escolha onde armazenar seus dados, faça o seguinte:
- Selecione um tipo de local.
Use o menu do tipo de local para selecionar um Local em que os dados de objetos no bucket serão armazenados permanentemente.
Para configurar a replicação entre buckets, abra a seção Configurar a replicação entre buckets.
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.
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.
Na seção Escolha como proteger os dados do objeto, faça o seguinte:
- Selecione qualquer uma das opções em Proteção de dados que você quer definir para o bucket.
- 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.
Clique em Criar.
Configurar a exportação de registros no Cloud Run
- Na página Google Cloud Boas-vindas, clique no ícone Cloud Run.
- Pesquise Logging na barra de pesquisa na parte de cima e clique em Enter.
- No Explorador de registros, filtre os registros escolhendo Cloud Run em Nome do registro e clique em Aplicar.
- Clique em Mais ações > Criar coletor no menu.
- Forneça as seguintes configurações:
- Detalhes do coletor: insira um nome e uma descrição.
- Clique em Próxima.
- Destino do coletor: selecione Bucket do Cloud Storage.
- Bucket do Cloud Storage: selecione o bucket criado anteriormente ou crie um novo.
- Clique em Próxima.
- Escolher os registros para incluir no coletor: um registro padrão é preenchido quando você seleciona uma opção no bucket do Cloud Storage.
- Clique em Próxima.
- Opcional: Escolher registros para filtrar do coletor: selecione os registros que você não quer que sejam coletados.
- Clique em Criar coletor.
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:
- Acesse Configurações do SIEM > Feeds.
- Clique em Adicionar novo feed.
- Na próxima página, clique em Configurar um único feed.
- No campo Nome do feed, insira um nome para o feed, por exemplo, Registros do Cloud Run.
- Selecione Google Cloud Storage como o Tipo de origem.
- Selecione GCP Cloud Run como o Tipo de registro.
- Clique em Receber conta de serviço como a Conta de serviço do Chronicle.
- Clique em Próxima.
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.
- URI do bucket de armazenamento: Google Cloud URL do bucket de armazenamento no formato
Clique em Próxima.
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 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.