Coletar registros do Gateway de Aplicativo do Azure

Compatível com:

Este documento explica como coletar registros do gateway de aplicativo do Azure configurando um feed de operações de segurança do Google. Esse analisador processa estruturas JSON de registro único e múltiplo, extrai campos da matriz "records", realiza conversões de tipo de dados, mapeia campos para o UDM e enriquece os dados com metadados e campos derivados, como o tipo de conexão de rede. Ele também processa a lógica específica para diferentes valores de operationName, extraindo endereços IP, sub-redes e outros detalhes de configuração relevantes.

Antes de começar

Certifique-se de que você:

  • Uma instância do Google SecOps.
  • Acesso privilegiado a uma assinatura do Azure.
  • Um ambiente de gateway de aplicativo do Azure (locatário) no Azure.

Configurar a conta de armazenamento do Azure

  1. No console do Azure, pesquise Contas de armazenamento.
  2. Clique em Criar.
  3. Especifique valores para os seguintes parâmetros de entrada:
    • Assinatura: selecione a assinatura.
    • Grupo de recursos: selecione o grupo de recursos.
    • Região: selecione a região.
    • Performance: selecione a performance (padrão recomendado).
    • Redundância: selecione a redundância (GRS ou LRS recomendado).
    • Nome da conta de armazenamento: insira um nome para a nova conta de armazenamento.
  4. Clique em Revisar + criar.
  5. Leia a visão geral da conta e clique em Criar.
  6. Na página Visão geral da conta de armazenamento, selecione o submenu Chaves de acesso em Segurança e rede.
  7. Clique em Mostrar ao lado de chave1 ou chave2.
  8. Clique em Copiar para a área de transferência para copiar a chave.
  9. Salve a chave em um local seguro para uso futuro.
  10. Na página Visão geral da conta de armazenamento, selecione o submenu Endpoints em Configurações.
  11. Clique em Copiar para a área de transferência para copiar o URL do endpoint do serviço Blob. Por exemplo, https://<storageaccountname>.blob.core.windows.net.
  12. Salve o URL do endpoint em um local seguro para uso futuro.

Configurar o Application Gateway do Azure

  1. Faça login no portal do Azure.
  2. Acesse o grupo de recursos que você quer.
  3. Selecione Gateway do aplicativo. A janela Gateway do aplicativo vai aparecer.
  4. Na seção Monitoramento, selecione Configurações de diagnóstico > Ativar diagnóstico.
  5. Selecione Adicionar configuração de diagnóstico. A janela Configurações de diagnóstico mostra as configurações dos registros de diagnóstico.
  6. Na seção registro, faça o seguinte:
    1. Marque a caixa de seleção ApplicationGatewayAccessLog.
    2. Marque a caixa de seleção ApplicationGatewayFirewallLog.
  7. Para armazenar registros na conta de armazenamento, faça o seguinte:
    1. Marque a caixa de seleção Arquivar em uma conta de armazenamento.
    2. Na lista Assinatura, selecione uma assinatura.
    3. Na lista Conta de armazenamento, selecione uma conta de armazenamento existente.

Configurar um feed no Google SecOps para processar os registros do gateway de aplicativos do Azure

  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 gateway de aplicativo do Azure).
  4. Selecione Armazenamento de Blobs do Microsoft Azure como o Tipo de origem.
  5. Selecione "Azure Application Gateway" como o tipo de registro.
  6. Clique em Próxima.
  7. Especifique valores para os seguintes parâmetros de entrada:

    • URI do Azure: o URL do endpoint do blob.
      • ENDPOINT_URL/BLOB_NAME
        • Substitua:
          • ENDPOINT_URL: o URL do endpoint do blob. (https://<storageaccountname>.blob.core.windows.net)
          • BLOB_NAME: o nome do blob. (por exemplo, insights-logs-<logname>)
    • URI é um: selecione o TIPO DE URI de acordo com a configuração do fluxo de registros (Arquivo único | Diretório | Diretório que inclui subdiretórios).
    • Opções de exclusão da origem: selecione a opção de exclusão de acordo com sua preferência.
    • Chave compartilhada: a chave de acesso ao Armazenamento de blobs do Azure.
    • Namespace de recursos: o namespace de recursos.
    • Rótulos de ingestão: o rótulo a ser aplicado aos eventos desse feed.
  8. Clique em Próxima.

  9. 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
Category metadata.product_event_type Mapeado diretamente do campo Category.
ClientOperationId additional.fields[].key:"ClientOperationId", value.string_value Mapeado diretamente do campo ClientOperationId.
CorrelationRequestId additional.fields[].key:"CorrelationRequestId", value.string_value Mapeado diretamente do campo CorrelationRequestId.
GatewayManagerVersion additional.fields[].key:"GatewayManagerVersion", value.string_value Mapeado diretamente do campo GatewayManagerVersion.
category metadata.product_event_type Mapeado diretamente do campo category.
level security_result.severity Mapeado diretamente do campo level, convertido em letras maiúsculas. Se o valor for "WARNING", a gravidade será definida como "HIGH" e security_result.severity_details será definido como o valor original.
properties.clientIP principal.ip, principal.asset.ip Mapeado diretamente do campo properties.clientIP.
properties.clientPort principal.port Mapeado diretamente do campo properties.clientPort, convertido em um número inteiro.
properties.clientResponseTime additional.fields[].key:"clientResponseTime", value.string_value Mapeado diretamente do campo properties.clientResponseTime.
properties.configuration.BgpConfiguration.GatewayConfig.Asn security_result.detection_fields[].key:"ASN", value Mapeado diretamente do campo properties.configuration.BgpConfiguration.GatewayConfig.Asn quando operationName é "SetGatewayConfiguration".
properties.configuration.BgpConfiguration.GatewayConfig.PeerAddress target.ip, target.asset.ip Mapeado diretamente do campo properties.configuration.BgpConfiguration.GatewayConfig.PeerAddress quando operationName é "SetGatewayConfiguration".
properties.configuration.BgpConfiguration.GatewayConfig.PeerType security_result.detection_fields[].key:"PeerType", value Mapeado diretamente do campo properties.configuration.BgpConfiguration.GatewayConfig.PeerType quando operationName é "SetGatewayConfiguration".
properties.configuration.IkeVersion principal.resource.attribute.labels[].key:"ike_version", value Mapeado diretamente do campo properties.configuration.IkeVersion quando operationName é "SetConnectionConfiguration".
properties.configuration.LocalSubnets principal.resource.attribute.labels[].key:"local subnets", value String concatenada de endereços IP da matriz properties.configuration.LocalSubnets quando operationName é "SetConnectionConfiguration".
properties.configuration.LocalTunnelEndpoint principal.ip, principal.asset.ip Mapeado diretamente do campo properties.configuration.LocalTunnelEndpoint quando operationName é "SetConnectionConfiguration".
properties.configuration.Name principal.hostname, principal.asset.hostname Mapeado diretamente do campo properties.configuration.Name. Se estiver vazio, o valor será retirado de properties.instance.
properties.configuration.RemoteSite target.hostname, target.asset.hostname Mapeado diretamente do campo properties.configuration.RemoteSite.
properties.configuration.RemoteSubnets principal.resource.attribute.labels[].key:"remote subnets", value String concatenada de endereços IP da matriz properties.configuration.RemoteSubnets quando operationName é "SetConnectionConfiguration".
properties.configuration.RemoteTunnelEndpoint target.ip, target.asset.ip Mapeado diretamente do campo properties.configuration.RemoteTunnelEndpoint quando operationName é "SetConnectionConfiguration".
properties.configuration.VIPAddress principal.ip, principal.asset.ip Mapeado diretamente do campo properties.configuration.VIPAddress quando operationName é "SetGatewayConfiguration".
properties.configuration.VirtualNetworkRanges principal.resource.attribute.labels[].key:"virutal network ranges", value String concatenada de endereços IP da matriz properties.configuration.VirtualNetworkRanges quando operationName é "SetGatewayConfiguration".
properties.configuration.VirtualNetworkSubnets principal.resource.attribute.labels[].key:"virtual network subnets", value String concatenada de endereços IP da matriz properties.configuration.VirtualNetworkSubnets quando operationName é "SetGatewayConfiguration".
properties.error_info additional.fields[].key:"error_info", value.string_value Mapeado diretamente do campo properties.error_info.
properties.host principal.hostname, principal.asset.hostname Mapeado diretamente do campo properties.host se properties.originalHost estiver vazio.
properties.httpMethod network.http.method Mapeado diretamente do campo properties.httpMethod.
properties.httpStatus network.http.response_code Mapeado diretamente do campo properties.httpStatus, convertido em um número inteiro.
properties.httpVersion network.application_protocol Defina como "HTTP" se o campo properties.httpVersion contiver "HTTP".
properties.instance principal.hostname, principal.asset.hostname Usado como o valor de principal.hostname se properties.configuration.Name estiver vazio.
properties.message metadata.description Mapeado diretamente do campo properties.message.
properties.operationName additional.fields[].key:"operationName", value.string_value Mapeado diretamente do campo properties.operationName.
properties.operationStatus security_result.category_details Mapeado diretamente do campo properties.operationStatus. Se o valor for "Success" ou "InProgress", security_result.action será definido como "ALLOW".
properties.originalHost principal.hostname, principal.asset.hostname Mapeado diretamente do campo properties.originalHost.
properties.originalRequestUriWithArgs additional.fields[].key:"originalRequestUriWithArgs", value.string_value Mapeado diretamente do campo properties.originalRequestUriWithArgs.
properties.receivedBytes network.received_bytes Mapeado diretamente do campo properties.receivedBytes, convertido em um número inteiro não assinado.
properties.requestQuery additional.fields[].key:"requestQuery", value.string_value Mapeado diretamente do campo properties.requestQuery.
properties.requestUri target.url Mapeado diretamente do campo properties.requestUri.
properties.sentBytes network.sent_bytes Mapeado diretamente do campo properties.sentBytes, convertido em um número inteiro não assinado.
properties.serverResponseLatency additional.fields[].key:"Server Response Latency", value.string_value Mapeado diretamente do campo properties.serverResponseLatency.
properties.serverRouted target.ip, target.asset.ip, target.port O IP e a porta são extraídos do campo properties.serverRouted usando uma expressão regular.
properties.sslCipher network.tls.cipher Mapeado diretamente do campo properties.sslCipher.
properties.sslClientCertificateIssuerName network.tls.server.certificate.issuer Mapeado diretamente do campo properties.sslClientCertificateIssuerName.
properties.sslProtocol network.tls.version Mapeado diretamente do campo properties.sslProtocol.
properties.timeTaken additional.fields[].key:"timeTaken", value.string_value Mapeado diretamente do campo properties.timeTaken.
properties.transactionId network.session_id Mapeado diretamente do campo properties.transactionId.
properties.userAgent network.http.user_agent, network.http.parsed_user_agent Mapeado diretamente do campo properties.userAgent. Além disso, o campo é convertido em um user agent analisado e mapeado para network.http.parsed_user_agent.
properties.WAFEvaluationTime additional.fields[].key:"WAFEvaluationTime", value.string_value Mapeado diretamente do campo properties.WAFEvaluationTime.
properties.WAFMode additional.fields[].key:"WAFMode", value.string_value Mapeado diretamente do campo properties.WAFMode.
resourceId target.resource.id Mapeado diretamente do campo resourceId.
resourceid target.resource.product_object_id Mapeado diretamente do campo resourceid.
ruleName security_result.rule_name Mapeado diretamente do campo ruleName.
time / timeStamp metadata.event_timestamp, timestamp Analisado como um carimbo de data/hora usando o formato RFC 3339 ou ISO8601. timeStamp é a preferência, mas time é usado se timeStamp não estiver presente.
(Parser Logic) metadata.event_type Defina como "NETWORK_CONNECTION" se o principal e o destino estiverem presentes, "STATUS_UPDATE" se apenas o principal estiver presente e "GENERIC_EVENT" caso contrário.
(Parser Logic) metadata.product_name Defina como "Gateway do Azure".
(Parser Logic) metadata.vendor_name Defina como "Microsoft".
(Parser Logic) has_principal Uma flag booleana, definida como "true" se qualquer informação principal (nome do host, IP ou porta) for extraída e "false", caso contrário.
(Parser Logic) has_target Uma flag booleana definida como "true" se qualquer informação de destino (nome do host, IP, porta, ID de recurso ou URL) for extraída e como "false" caso contrário.
(Parser Logic) disambiguation_key Adicionado quando vários eventos são extraídos de uma única entrada de registro.

Alterações

2024-04-19

  • Foi adicionado suporte a vários registros JSON de eventos.

2023-12-22

  • Mapeamos "resourceid" para "target.resource.id".
  • "properties.operationStatus" foi mapeado para "security_result.category_details".
  • O mapeamento "properties.configuration.Name" foi alterado para "principal.hostname".
  • "properties.message" foi mapeado para "metadata.description".
  • "properties.configuration.RemoteStie" foi mapeado para "target.hostname".
  • "level" foi mapeado para "security_result.severity_details".
  • "properties.configuration.Ikeversion" foi mapeado para "principal.resource.attribute.labels".
  • "properties.configuration.LocalTunnelEndpoint" foi mapeado para "principal.ip".
  • "properties.configuration.RemoteTunnelEndpoint" foi mapeado para "target.ip".
  • Mapeou "properties.configuration.LocalSubnets", "properties.configuration.RemoteSubnets", "properties.configuration.VirtualNetworkRanges" e "properties.configuration.VirtualNetworkSubnets" para "principal.resource.attribute.labels".
  • "properties.configuration.VIPAddress" foi mapeado para "principal.ip".
  • "properties.configuration.BgpConfiguration.GatewayConfig.PeerAddress" foi mapeado para "targrt.ip".
  • Mapeou "properties.configuration.BgpConfiguration.GatewayConfig.PeerType" e "properties.configuration.BgpConfiguration.GatewayConfig.Asn" para "security_result.detection_fields".

2023-11-16

  • Parser recém-criado.