Coletar registros do Proxy seguro da Web do Cloud

Compatível com:

Este documento explica como exportar e processar o Cloud Secure Web Proxy no 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 inicializa os campos do UDM, analisa o payload JSON, extrai informações de 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

  • Verifique se você tem uma instância do Google SecOps.
  • Verifique se o proxy da Web seguro do Cloud está ativo e configurado no seu Google Cloud ambiente.
  • Verifique se você tem acesso privilegiado a Google Cloud e as permissões adequadas para acessar os registros do Secure Web Proxy.

Criar um bucket do 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, gcp-swp-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 Google Cloud a exportação de registros do Secure Web Proxy

  1. Faça login no console do Google Cloud.
  2. Acesse Logging > Roteador de registros.
  3. Clique em Criar coletor.
  4. Informe os seguintes parâmetros de configuração:

    • Nome do coletor: insira um nome significativo. Por exemplo, SWP-Export-Sink.
    • Destino do sink: selecione Cloud Storage e insira o URI do bucket. Por exemplo, gs://gcp-swp-logs.
    • Filtro de registro:
    logName="projects/<your-project-id>/logs/networkservices.googleapis.com/gateway_requests"
    
  5. Clique em Criar.

Configurar permissões do Cloud Storage

  1. Acesse IAM e administrador > IAM.
  2. Localize a conta de serviço do Cloud Logging.
  3. Conceda o papel roles/storage.admin no bucket.

Configurar um feed no Google SecOps para ingerir Google Cloud registros do Secure Web Proxy

  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, Google Cloud SWP Logs.
  4. Selecione Google Cloud Storage como o Tipo de origem.
  5. Selecione Proxy da Web seguro do GCP como o Tipo de registro.
  6. Clique em Pegar conta de serviço ao lado do campo 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 Storage: URL do bucket do Cloud Storage. Por exemplo, gs://gcp-swp-logs.
    • URI Is A: selecione Directory which includes subdirectories.
    • Opções de exclusão de 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 additional.fields[].key: HTTPRequest Latency
additional.fields[].value.string_value: 0.124462s
Mapeado diretamente do campo de registro bruto.
httpRequest.protocol network.application_protocol: HTTP
network.application_protocol_version: 2
O protocolo e a versão são extraídos do campo httpRequest.protocol usando um padrão grok.
httpRequest.remoteIp target.asset.ip: 1.1.0.1
target.ip: 1.1.0.1
O endereço IP é extraído do campo httpRequest.remoteIp usando um padrão grok.
httpRequest.requestMethod network.http.method: GET Mapeado diretamente do campo de registro bruto.
httpRequest.requestSize network.sent_bytes: 144 Mapeado diretamente do campo de registro bruto e convertido em um número inteiro.
httpRequest.requestUrl target.url: https://github.com/tempuslabs/tempusutils/info/refs?service=git-upload-pack Mapeado diretamente do campo de registro bruto.
httpRequest.responseSize network.received_bytes: 225 Mapeado diretamente do campo de registro bruto e convertido em um número inteiro.
httpRequest.serverIp principal.asset.ip: 1.8.1.4
principal.ip: 1.8.1.4
O endereço IP é extraído do campo httpRequest.serverIp usando um padrão grok.
httpRequest.status network.http.response_code: 401 Mapeado diretamente do campo de registro bruto e convertido em um número inteiro.
httpRequest.userAgent network.http.user_agent: git/2.34.1
network.http.parsed_user_agent: {
family: USER_DEFINED,
device: git,
device_version: 2.34.1
}
Mapeado diretamente do campo de registro bruto. O campo parsed_user_agent é derivado da análise do campo httpRequest.userAgent.
insertId metadata.product_log_id: 1yh8wczer5o8n Mapeado diretamente do campo de registro bruto.
jsonPayload.@type additional.fields[].key: Log Type
additional.fields[].value.string_value: type.googleapis.com/google.cloud.loadbalancing.type.LoadBalancerLogEntry
Mapeado diretamente do campo de registro bruto.
jsonPayload.enforcedGatewaySecurityPolicy.hostname target.asset.hostname: github.com
target.hostname: github.com
Mapeado diretamente do campo de registro bruto.
jsonPayload.enforcedGatewaySecurityPolicy.matchedRules[].action security_result.action: ALLOW
security_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 será definido como ALLOW. Se a ação for DENIED, o campo UDM será 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 do campo de registro bruto.
jsonPayload.enforcedGatewaySecurityPolicy.requestWasTlsIntercepted security_result.detection_fields[].key: requestWasTlsIntercepted
security_result.detection_fields[].value: true
Mapeado diretamente do campo de registro bruto.
logName additional.fields[].key: Log Name
additional.fields[].value.string_value: projects/rws-w6uza3pn5jzzh6z3hc3d/logs/networkservices.googleapis.com%2Fgateway_requests
Mapeado diretamente do campo de registro bruto.
receiveTimestamp metadata.collected_timestamp: {
seconds: 1710189647,
nanos: 661101224
}
Analisado do campo de registro bruto usando o formato de data RFC 3339.
resource.labels.gateway_name security_result.detection_fields[].key: gateway-name
security_result.detection_fields[].value: github-access-gateway-5cec30cd
Mapeado diretamente do campo de registro bruto.
resource.labels.gateway_type security_result.detection_fields[].key: gateway-type
security_result.detection_fields[].value: SECURE_WEB_GATEWAY
Mapeado diretamente do campo de registro bruto.
resource.labels.location target.resource.attribute.cloud.availability_zone: us-central1 Mapeado diretamente do campo de registro bruto.
resource.labels.network_name target.resource.attribute.labels[].key: rc_network_name
target.resource.attribute.labels[].value: projects/rws-w6uza3pn5jzzh6z3hc3d/global/networks/rws-tr-pilot-workspace
Mapeado diretamente do campo de registro bruto.
resource.type target.resource.attribute.labels[].key: Resource Type
target.resource.attribute.labels[].value: networkservices.googleapis.com/Gateway
Mapeado diretamente do campo de registro bruto.
severity security_result.severity: MEDIUM Mapeado do campo de registro bruto. O valor é convertido em um nível de gravidade do UDM. Nesse caso, WARNING é mapeado para MEDIUM.
timestamp metadata.event_timestamp: {
seconds: 1710189639,
nanos: 952848000
}
Analisado do campo de registro bruto usando o formato de data RFC 3339.
(Parser Logic) 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.
(Parser Logic) metadata.log_type: GCP_SWP Valor fixado no código com base no produto.

Alterações

2024-04-15

  • Parser recém-criado.

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