Recolha registos do Secure Web Proxy
Este documento explica como exportar e carregar o proxy Web seguro 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). Inicializa os campos UDM, analisa a carga útil JSON, extrai informações da rede, detalhes de segurança, atributos de recursos e define o tipo de evento com base na presença de informações principais e de destino.
Antes de começar
Certifique-se de que tem os seguintes pré-requisitos:
- Instância do Google SecOps.
- O Secure Web Proxy está ativo e configurado no seu Google Cloud ambiente.
- Acesso privilegiado Google Cloud e autorizações adequadas para aceder aos registos do proxy Web seguro.
Crie um contentor do 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 do nome do contentor; por exemplo, gcp-swp-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 do Secure Web Proxy
- Inicie sessão na Google Cloud consola.
- Aceda a Registo > Router de registos.
- Clique em Criar destino.
Forneça os seguintes parâmetros de configuração:
- Nome do destino: introduza um nome significativo; por exemplo,
SWP-Export-Sink. - Destino da sincronização: selecione Armazenamento do Cloud Storage e introduza o URI do seu contentor; por exemplo,
gs://gcp-swp-logs/. - Filtro de registo:
logName="projects/<your-project-id>/logs/networkservices.googleapis.com/gateway_requests"- Nome do destino: introduza um nome significativo; por exemplo,
Clique em Criar.
Configure autorizações para o Cloud Storage
- Aceda a IAM e administrador > IAM.
- Localize a conta de serviço do Cloud Logging.
- Conceda a função roles/storage.admin no contentor.
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, Google Cloud Registos SWP.
- Selecione Google Cloud Storage V2 como Tipo de origem.
- Selecione GCP Secure Web Proxy como o Tipo de registo.
- Clique em Obter conta de serviço junto ao campo Conta de serviço do Chronicle.
- Clicar em Seguinte.
Especifique valores para os seguintes parâmetros de entrada:
- URI do contentor de armazenamento: URL do contentor do Cloud Storage; por exemplo,
gs://gcp-swp-logs/. Este URL tem de terminar com uma barra invertida (/). 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: URL do contentor do Cloud Storage; por exemplo,
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 |
additional.fields[].key: HTTPRequest Latencyadditional.fields[].value.string_value: 0.124462s |
Mapeado diretamente a partir do campo de registo não processado. |
httpRequest.protocol |
network.application_protocol: HTTPnetwork.application_protocol_version: 2 |
O protocolo e a versão são extraídos do campo httpRequest.protocol através de um padrão grok. |
httpRequest.remoteIp |
target.asset.ip: 1.1.0.1target.ip: 1.1.0.1 |
O endereço IP é extraído do campo httpRequest.remoteIp através de um padrão grok. |
httpRequest.requestMethod |
network.http.method: GET |
Mapeado diretamente a partir do campo de registo não processado. |
httpRequest.requestSize |
network.sent_bytes: 144 |
Mapeado diretamente a partir do campo de registo não processado e convertido num número inteiro. |
httpRequest.requestUrl |
target.url: https://github.com/tempuslabs/tempusutils/info/refs?service=git-upload-pack |
Mapeado diretamente a partir do campo de registo não processado. |
httpRequest.responseSize |
network.received_bytes: 225 |
Mapeado diretamente a partir do campo de registo não processado e convertido num número inteiro. |
httpRequest.serverIp |
principal.asset.ip: 1.8.1.4principal.ip: 1.8.1.4 |
O endereço IP é extraído do campo httpRequest.serverIp através de um padrão grok. |
httpRequest.status |
network.http.response_code: 401 |
Mapeado diretamente a partir do campo de registo não processado e convertido num número inteiro. |
httpRequest.userAgent |
network.http.user_agent: git/2.34.1network.http.parsed_user_agent: {family: USER_DEFINED,device: git,device_version: 2.34.1} |
Mapeado diretamente a partir do campo de registo não processado. O campo parsed_user_agent é derivado da análise do campo httpRequest.userAgent. |
insertId |
metadata.product_log_id: 1yh8wczer5o8n |
Mapeado diretamente a partir do campo de registo não processado. |
jsonPayload.@type |
additional.fields[].key: Log Typeadditional.fields[].value.string_value: type.googleapis.com/google.cloud.loadbalancing.type.LoadBalancerLogEntry |
Mapeado diretamente a partir do campo de registo não processado. |
jsonPayload.enforcedGatewaySecurityPolicy.hostname |
target.asset.hostname: github.comtarget.hostname: github.com |
Mapeado diretamente a partir do campo de registo não processado. |
jsonPayload.enforcedGatewaySecurityPolicy.matchedRules[].action |
security_result.action: ALLOWsecurity_result.action_details: ALLOWED |
O security_result.action é derivado com base no valor de jsonPayload.enforcedGatewaySecurityPolicy.matchedRules[].action. Se a ação for ALLOWED, o campo UDM é definido como ALLOW. Se a ação for DENIED, o campo UDM é definido como BLOCK. |
jsonPayload.enforcedGatewaySecurityPolicy.matchedRules[].name |
security_result.rule_name: projects/671807354785/locations/us-central1/gatewaySecurityPolicies/github-access-gateway-security-policy-5cec30cd/rules/github-access-gateway-security-policy-rule-5cec30cd |
Mapeado diretamente a partir do campo de registo não processado. |
jsonPayload.enforcedGatewaySecurityPolicy.requestWasTlsIntercepted |
security_result.detection_fields[].key: requestWasTlsInterceptedsecurity_result.detection_fields[].value: true |
Mapeado diretamente a partir do campo de registo não processado. |
logName |
additional.fields[].key: Log Nameadditional.fields[].value.string_value: projects/rws-w6uza3pn5jzzh6z3hc3d/logs/networkservices.googleapis.com%2Fgateway_requests |
Mapeado diretamente a partir do campo de registo não processado. |
receiveTimestamp |
metadata.collected_timestamp: {seconds: 1710189647,nanos: 661101224} |
Analisado a partir do campo de registo não processado através do formato de data RFC 3339. |
resource.labels.gateway_name |
security_result.detection_fields[].key: gateway-namesecurity_result.detection_fields[].value: github-access-gateway-5cec30cd |
Mapeado diretamente a partir do campo de registo não processado. |
resource.labels.gateway_type |
security_result.detection_fields[].key: gateway-typesecurity_result.detection_fields[].value: SECURE_WEB_GATEWAY |
Mapeado diretamente a partir do campo de registo não processado. |
resource.labels.location |
target.resource.attribute.cloud.availability_zone: us-central1 |
Mapeado diretamente a partir do campo de registo não processado. |
resource.labels.network_name |
target.resource.attribute.labels[].key: rc_network_nametarget.resource.attribute.labels[].value: projects/rws-w6uza3pn5jzzh6z3hc3d/global/networks/rws-tr-pilot-workspace |
Mapeado diretamente a partir do campo de registo não processado. |
resource.type |
target.resource.attribute.labels[].key: Resource Typetarget.resource.attribute.labels[].value: networkservices.googleapis.com/Gateway |
Mapeado diretamente a partir do campo de registo não processado. |
severity |
security_result.severity: MEDIUM |
Mapeado a partir do campo de registo não processado. O valor é traduzido para um nível de gravidade da UDM. Neste caso, WARNING está mapeado para MEDIUM. |
timestamp |
metadata.event_timestamp: {seconds: 1710189639,nanos: 952848000} |
Analisado a partir do campo de registo não processado através do formato de data RFC 3339. |
| (Lógica do analisador) | metadata.event_type: NETWORK_HTTP |
Determinado pela lógica do analisador com base na presença de has_principal, has_target e um protocolo correspondente a http. |
| (Lógica do analisador) | metadata.log_type: GCP_SWP |
Valor codificado com base no produto. |
Precisa de mais ajuda? Receba respostas de membros da comunidade e profissionais da Google SecOps.