Recolha registos do Cloud Run
Este guia explica como exportar registos do Cloud Run para o Google Security Operations através do Cloud Storage. O analisador extrai campos de registos JSON, transformando-os no modelo de dados unificado (UDM). Processa vários formatos de registo, incluindo dados de pedidos HTTP e registos de auditoria do sistema, mapeando os campos relevantes para o UDM e enriquecendo os dados com etiquetas e metadados específicos do Cloud Run.
Antes de começar
Certifique-se de que tem os seguintes pré-requisitos:
- Instância do Google SecOps.
- O Cloud Run está configurado e ativo no seu Google Cloud ambiente.
- Acesso privilegiado a Google Cloud.
Crie um contentor do Google Cloud Storage
- Inicie sessão na Google Cloud consola.
Aceda à página Contentores do Cloud Storage.
Clique em Criar.
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:
Na secção Começar, faça o seguinte:
- Introduza um nome exclusivo que cumpra os requisitos de nome do contentor; por exemplo, cloudrun-logs.
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.
Para adicionar uma etiqueta de grupo, clique na seta de expansão para expandir a secção Etiquetas.
Clique em Adicionar etiqueta e especifique uma chave e um valor para a etiqueta.
Na secção Escolha onde quer armazenar os seus dados, faça o seguinte:
- Selecione um Tipo de localização.
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.
Para configurar a replicação entre contentores, expanda a secção Configurar replicação entre contentores.
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.
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.
Na secção Escolha como proteger os dados de objetos, faça o seguinte:
- Selecione qualquer uma das opções em Proteção de dados que quer definir para o seu contentor.
- 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.
Clique em Criar.
Configure a exportação de registos no Cloud Run
- Na página Google Cloud Boas-vindas, clique no ícone Cloud Run.
- Pesquise Iniciar sessão na barra de pesquisa na parte superior e clique em Enter.
- No Explorador de registos, filtre os registos escolhendo Cloud Run em Nome do registo e clique em Aplicar.
- Clique em Mais ações > Criar destino no menu.
- Forneça as seguintes configurações:
- Detalhes do destino: introduza um nome e uma descrição.
- Clicar em Seguinte.
- Destino do fluxo: selecione Contentor do Cloud Storage.
- Contentor do Cloud Storage: selecione o contentor criado anteriormente ou crie um novo.
- Clicar em Seguinte.
- Escolha os registos a incluir no destino: um registo predefinido é preenchido quando seleciona uma opção no contentor do Cloud Storage.
- Clicar em Seguinte.
- Opcional: escolha os registos a filtrar do sink: selecione os registos que não quer sincronizar.
- Clique em Criar destino.
Configure feeds
Para configurar um feed, siga estes passos:
- Aceda a Definições do SIEM > Feeds.
- Clique em Adicionar novo feed.
- Na página seguinte, clique em Configurar um único feed.
- No campo Nome do feed, introduza um nome para o feed; por exemplo, Registos do Cloud Run.
- Selecione Google Cloud Storage V2 como Tipo de origem.
- Selecione GCP Cloud Run como o Tipo de registo.
- Clique em Obter conta de serviço como a conta de serviço do Chronicle.
- Clicar em Seguinte.
Especifique valores para os seguintes parâmetros de entrada:
- URI do contentor de armazenamento: Google Cloud URL do contentor de armazenamento no formato
gs://my-bucket/<value>
. Opções de eliminação de origens: selecione a opção de eliminação de acordo com a sua preferência.
Idade máxima do ficheiro: inclui ficheiros modificados no último número de dias. A predefinição é 180 dias.
- URI do contentor de armazenamento: Google Cloud URL do contentor de armazenamento no formato
Clicar em Seguinte.
Reveja a nova configuração do feed no ecrã Finalizar e, de seguida, clique em Enviar.
Tabela de mapeamento da UDM
Campo de registo | Mapeamento de UDM | Lógica |
---|---|---|
httpRequest.latency |
target.resource.attribute.labels.[] |
O valor de httpRequest.latency do registo não processado é usado como o valor de uma etiqueta com a chave http_request_latency em target.resource.attribute.labels . |
httpRequest.protocol |
network.application_protocol |
Se httpRequest.protocol contiver HTTP , o campo UDM é definido como HTTP . |
httpRequest.remoteIp |
principal.asset.ip |
É usado o valor de httpRequest.remoteIp do registo não processado. |
httpRequest.remoteIp |
principal.ip |
É usado o valor de httpRequest.remoteIp do registo não processado. |
httpRequest.requestMethod |
network.http.method |
É usado o valor de httpRequest.requestMethod do registo não processado. |
httpRequest.requestSize |
network.sent_bytes |
O valor de httpRequest.requestSize do registo não processado é convertido num número inteiro sem sinal e usado. |
httpRequest.requestUrl |
target.url |
É usado o valor de httpRequest.requestUrl do registo não processado. |
httpRequest.responseSize |
network.received_bytes |
O valor de httpRequest.responseSize do registo não processado é convertido num número inteiro sem sinal e usado. |
httpRequest.serverIp |
target.asset.ip |
É usado o valor de httpRequest.serverIp do registo não processado. |
httpRequest.serverIp |
target.ip |
É usado o valor de httpRequest.serverIp do registo não processado. |
httpRequest.status |
network.http.response_code |
O valor de httpRequest.status do registo não processado é convertido num número inteiro e usado. |
httpRequest.userAgent |
network.http.parsed_user_agent |
O valor de httpRequest.userAgent do registo não processado é analisado como uma string de agente do utilizador. |
httpRequest.userAgent |
network.http.user_agent |
É usado o valor de httpRequest.userAgent do registo não processado. |
insertId |
metadata.product_log_id |
É usado o valor de insertId do registo não processado. |
labels.instanceId |
additional.fields.[] |
O valor de labels.instanceId é usado como o valor de uma etiqueta 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 uma etiqueta 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 uma etiqueta 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 uma etiqueta com a chave task_index em additional.fields . |
logName |
metadata.product_event_type |
É usado o valor de logName do registo não processado. |
resource.labels.configuration_name |
target.resource.attribute.labels.[] |
O valor de resource.labels.configuration_name é usado como o valor de uma etiqueta 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 uma etiqueta com a chave job_name em additional.fields . |
resource.labels.location |
target.location.name |
É usado o valor de resource.labels.location do registo não processado. |
resource.labels.project_id |
target.resource.attribute.labels.[] |
O valor de resource.labels.project_id é usado como o valor de uma etiqueta 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 uma etiqueta 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 uma etiqueta com a chave service_name em target.resource.attribute.labels . |
resource.type |
target.resource.resource_subtype |
É usado o valor de resource.type do registo não processado. |
severity |
security_result.severity |
Se o valor de severity corresponder a Info (sem distinção entre maiúsculas e minúsculas), o campo UDM é definido como INFORMATIONAL . |
textPayload |
additional.fields.[] |
O valor de textPayload é usado como o valor de uma etiqueta com a chave Textpayload em additional.fields . |
timestamp |
metadata.event_timestamp |
O valor de timestamp do registo não processado é analisado como uma data/hora. |
timestamp |
timestamp |
O valor de timestamp do registo não processado é analisado como uma data/hora. Determinado pela lógica do analisador com base na presença de determinados campos. A predefinição é GENERIC_EVENT . Se has_principal_ip , has_target_ip e httpRequest.protocol corresponderem a HTTP , a definição é NETWORK_HTTP . Codificado para GCP_RUN . Codificado para GCP_RUN . Codificado para Google Cloud Platform . Codificado para GOOGLE_CLOUD_PLATFORM . |
Precisa de mais ajuda? Receba respostas de membros da comunidade e profissionais da Google SecOps.