Nota
O acesso a esta página requer autorização. Podes tentar iniciar sessão ou mudar de diretório.
O acesso a esta página requer autorização. Podes tentar mudar de diretório.
Você pode monitorar os recursos do Web Application Firewall usando logs. Você pode salvar desempenho, acesso e outros dados ou consumi-los de um recurso para fins de monitoramento.
Nota
Recomendamos que utilize o módulo Azure Az do PowerShell para interagir com o Azure. Para começar, consulte Instalar o Azure PowerShell. Para saber como migrar para o módulo do Az PowerShell, veja Migrar o Azure PowerShell do AzureRM para o Az.
Registos de diagnósticos
Você pode usar diferentes tipos de logs no Azure para gerenciar e solucionar problemas de gateways de aplicativos. Pode aceder a alguns destes registos através do portal. Todos os logs podem ser extraídos do armazenamento de Blob do Azure e exibidos em diferentes ferramentas, como logs do Azure Monitor, Excel e Power BI. Você pode saber mais sobre os diferentes tipos de logs na lista a seguir:
- Log de atividades: você pode usar os logs de atividades do Azure para exibir todas as operações enviadas à sua assinatura do Azure e seu status. As entradas de registos de atividades são recolhidas por predefinição e pode visualizá-las no portal do Azure.
- Log de recursos de acesso: você pode usar esse log para exibir padrões de acesso do Application Gateway e analisar informações importantes. Isso inclui o IP do chamador, URL solicitado, latência de resposta, código de retorno e bytes de entrada e saída. Esse log contém registros individuais para cada solicitação e associa essa solicitação ao Gateway de Aplicativo exclusivo que processou a solicitação. Instâncias exclusivas do Application Gateway podem ser identificadas pela propriedade instanceId.
- Log de recursos de desempenho: você pode usar esse log para exibir o desempenho das instâncias do Application Gateway. Esse log captura informações de desempenho para cada instância, incluindo o total de solicitações atendidas, a taxa de transferência em bytes, o total de solicitações atendidas, a contagem de solicitações com falha e a contagem de instâncias de back-end íntegras e não íntegras. Um log de desempenho é coletado a cada 60 segundos. O log de desempenho está disponível apenas para a SKU v1. Para o SKU v2, use Métricas para dados de desempenho.
- Log de recursos do firewall: Pode utilizar este log para visualizar as solicitações registadas por meio do modo de deteção ou de prevenção de um gateway de aplicações configurado com o firewall da aplicação web.
Nota
Os logs estão disponíveis apenas para recursos implantados no modelo de implantação do Azure Resource Manager. Não é possível usar logs para recursos no modelo de implantação clássico. Para uma melhor compreensão dos dois modelos, consulte o artigo Compreensão da implementação do Resource Manager e da implementação clássica.
Tem três opções para armazenar os registos:
- Conta de armazenamento: as contas de armazenamento são ideais para os registos quando estes são armazenados durante um período mais longo e revistos quando necessário.
- Hubs de eventos: os hubs de eventos são uma ótima opção para integração com outras ferramentas de gerenciamento de eventos e informações de segurança (SIEM) para receber alertas sobre seus recursos.
- Logs do Azure Monitor: os logs do Azure Monitor são melhor usados para monitoramento geral em tempo real do seu aplicativo ou para observar tendências.
Habilitar o registro em log por meio do PowerShell
O registo de atividades é ativado automaticamente para todos os recursos do Resource Manager. Você deve habilitar o log de acesso e desempenho para começar a coletar os dados disponíveis por meio desses logs. Para habilitar o registro em log, use as seguintes etapas:
Anote o ID de recurso da conta de armazenamento, onde os dados de registo são armazenados. Esse valor tem o formato: /subscriptions/<subscriptionId>/resourceGroups/<nome do grupo de recursos>/providers/Microsoft.Storage/storageAccounts/<nome da conta de armazenamento>. Pode utilizar qualquer conta de armazenamento na sua subscrição. Pode utilizar o portal do Azure para encontrar estas informações.
Anote o ID de recurso do gateway de aplicativo para o qual o log está habilitado. Este valor tem o formato: /subscriptions/<subscriptionId>/resourceGroups/<nome do grupo de recursos>/providers/Microsoft.Network/applicationGateways/<nome do gateway de aplicação>. Pode utilizar o portal para encontrar estas informações.
Habilite o log de recursos usando o seguinte cmdlet do PowerShell:
Set-AzDiagnosticSetting -ResourceId /subscriptions/<subscriptionId>/resourceGroups/<resource group name>/providers/Microsoft.Network/applicationGateways/<application gateway name> -StorageAccountId /subscriptions/<subscriptionId>/resourceGroups/<resource group name>/providers/Microsoft.Storage/storageAccounts/<storage account name> -Enabled $true
Gorjeta
Os logs de atividades não exigem uma conta de armazenamento separada. A utilização do armazenamento para registo do acesso e do desempenho incorre em encargos de serviços.
Ativar o registo através do portal do Azure
No portal do Azure, localize seu recurso e selecione Configurações de diagnóstico.
Para o Application Gateway, três logs estão disponíveis:
- Registo de acesso
- Registo de desempenho
- Registo da firewall
Selecione Adicionar definição de diagnóstico.
A página Configuração de diagnóstico fornece as configurações para os logs de recursos. Neste exemplo, o Log Analytics armazena os logs. Você também pode usar um hub de eventos, uma conta de armazenamento ou uma solução de parceiro para salvar os logs de recursos.
Digite um nome para as configurações, confirme as configurações e selecione Salvar.
Registo de atividades
O Azure gera o log de atividades por padrão. Os logs são preservados por 90 dias no repositório de logs de eventos do Azure. Saiba mais sobre esses logs lendo o artigo Exibir eventos e registro de atividades.
Registo de acesso
O log de acesso será gerado somente se você o tiver habilitado em cada instância do Application Gateway, conforme detalhado nas etapas anteriores. Os dados são armazenados na conta de armazenamento que você especificou quando ativou o registro. Cada acesso do Application Gateway é registrado no formato JSON, conforme mostrado no exemplo a seguir para v1:
| valor | Descrição |
|---|---|
| instanceId | Instância do Application Gateway que atendeu à solicitação. |
| IP do cliente | IP de origem para a solicitação. |
| clientPort [en] | Porta de origem para a solicitação. |
| Método http | Método HTTP usado pela solicitação. |
| URI de pedido | URI da solicitação recebida. |
| RequestQuery |
Server-Routed: instância do pool de back-end que recebeu a solicitação. X-AzureApplicationGateway-LOG-ID: ID de correlação usada para a solicitação. Ele pode ser usado para solucionar problemas de tráfego nos servidores back-end. SERVER-STATUS: Código de resposta HTTP que o Application Gateway recebeu do back-end. |
| UserAgent (Agente de Utilizador) | Agente de usuário do cabeçalho de solicitação HTTP. |
| httpStatus | Código de status HTTP retornado ao cliente do Application Gateway. |
| Versão http | Versão HTTP da solicitação. |
| receivedBytes | Tamanho do pacote recebido, em bytes. |
| bytes enviados | Tamanho do pacote enviado, em bytes. |
| timeTaken | Período de tempo (em milissegundos) que leva para uma solicitação ser processada e sua resposta ser enviada. Isso é calculado como o intervalo entre o momento em que o Application Gateway recebe o primeiro byte de uma solicitação HTTP até o momento em que a operação de envio de resposta é concluída. É importante observar que o campo Tempo Decorrido geralmente inclui o tempo que os pacotes de solicitação e resposta demoram a viajar pela rede. |
| sslAtivado | Se a comunicação com os pools de back-end usou TLS/SSL. Os valores válidos estão ativados e desativados. |
| alojar | O nome do host com o qual a solicitação foi enviada para o servidor back-end. Se o nome do host de back-end estiver sendo substituído, esse nome refletirá isso. |
| originalAnfitrião | O nome do host com o qual a solicitação foi recebida pelo Application Gateway do cliente. |
{
"resourceId": "/SUBSCRIPTIONS/{subscriptionId}/RESOURCEGROUPS/PEERINGTEST/PROVIDERS/MICROSOFT.NETWORK/APPLICATIONGATEWAYS/{applicationGatewayName}",
"operationName": "ApplicationGatewayAccess",
"timestamp": "2017-04-26T19:27:38Z",
"category": "ApplicationGatewayAccessLog",
"properties": {
"instanceId": "ApplicationGatewayRole_IN_0",
"clientIP": "203.0.113.97",
"clientPort": 46886,
"httpMethod": "GET",
"requestUri": "/phpmyadmin/scripts/setup.php",
"requestQuery": "X-AzureApplicationGateway-CACHE-HIT=0&SERVER-ROUTED=10.4.0.4&X-AzureApplicationGateway-LOG-ID=aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e&SERVER-STATUS=404",
"userAgent": "-",
"httpStatus": 404,
"httpVersion": "HTTP/1.0",
"receivedBytes": 65,
"sentBytes": 553,
"timeTaken": 205,
"sslEnabled": "off",
"host": "www.contoso.com",
"originalHost": "www.contoso.com"
}
}
Para o Application Gateway e o WAF v2, os logs mostram um pouco mais de informações:
| valor | Descrição |
|---|---|
| instanceId | Instância do Application Gateway que atendeu à solicitação. |
| IP do cliente | IP de origem para a solicitação. |
| clientPort [en] | Porta de origem para a solicitação. |
| Método http | Método HTTP usado pela solicitação. |
| URI de pedido | URI da solicitação recebida. |
| UserAgent (Agente de Utilizador) | Agente de usuário do cabeçalho de solicitação HTTP. |
| httpStatus | Código de status HTTP retornado ao cliente do Application Gateway. |
| Versão http | Versão HTTP da solicitação. |
| receivedBytes | Tamanho do pacote recebido, em bytes. |
| bytes enviados | Tamanho do pacote enviado, em bytes. |
| timeTaken | Período de tempo (em milissegundos) que leva para uma solicitação ser processada e sua resposta ser enviada. Isso é calculado como o intervalo entre o momento em que o Application Gateway recebe o primeiro byte de uma solicitação HTTP até o momento em que a operação de envio de resposta é concluída. É importante observar que o campo Tempo Decorrido geralmente inclui o tempo que os pacotes de solicitação e resposta demoram a viajar pela rede. |
| sslAtivado | Se a comunicação com os pools de back-end utilizava TLS. Os valores válidos estão ativados e desativados. |
| cifra SSL | Suíte de cifras a ser usada para a comunicação TLS (se o TLS estiver habilitado). |
| Protocolo SSL | Protocolo TLS que está sendo usado (se o TLS estiver habilitado). |
| servidorEncaminhado | O servidor back-end para o qual o gateway de aplicativo roteia a solicitação. |
| status do servidor | Código de status HTTP do servidor back-end. |
| latênciaDeRespostaDoServidor | Latência da resposta do servidor back-end. |
| alojar | Endereço listado no cabeçalho do host da solicitação. |
{
"resourceId": "/SUBSCRIPTIONS/{subscriptionId}/RESOURCEGROUPS/PEERINGTEST/PROVIDERS/MICROSOFT.NETWORK/APPLICATIONGATEWAYS/{applicationGatewayName}",
"operationName": "ApplicationGatewayAccess",
"time": "2017-04-26T19:27:38Z",
"category": "ApplicationGatewayAccessLog",
"properties": {
"instanceId": "appgw_1",
"clientIP": "203.0.113.97",
"clientPort": 46886,
"httpMethod": "GET",
"requestUri": "/phpmyadmin/scripts/setup.php",
"userAgent": "-",
"httpStatus": 404,
"httpVersion": "HTTP/1.0",
"receivedBytes": 65,
"sentBytes": 553,
"timeTaken": 205,
"sslEnabled": "off",
"sslCipher": "",
"sslProtocol": "",
"serverRouted": "104.41.114.59:80",
"serverStatus": "200",
"serverResponseLatency": "0.023",
"host": "www.contoso.com",
}
}
Registo de desempenho
O log de desempenho será gerado somente se você o tiver habilitado em cada instância do Application Gateway, conforme detalhado nas etapas anteriores. Os dados são armazenados na conta de armazenamento que você especificou quando ativou o registro. Os dados do log de desempenho são gerados em intervalos de 1 minuto. Está disponível apenas para o SKU v1. Para o SKU v2, use Métricas para dados de desempenho. Os seguintes dados são registrados:
| valor | Descrição |
|---|---|
| instanceId | Instância do Application Gateway para a qual os dados de desempenho estão sendo gerados. Para um gateway de aplicativo de várias instâncias, há uma linha por instância. |
| healthyHostCount | Número de hosts saudáveis no pool de back-end. |
| unHealthyHostCount | Número de hosts não saudáveis no pool de back-end. |
| Contagem de Pedidos | Número de pedidos atendidos. |
| latência | Latência média (em milissegundos) de solicitações da instância para o back-end que atende às solicitações. |
| contadorDePedidosFalhados | Número de pedidos falhados. |
| débito | Taxa de transferência média desde o último log, medida em bytes por segundo. |
{
"resourceId": "/SUBSCRIPTIONS/{subscriptionId}/RESOURCEGROUPS/{resourceGroupName}/PROVIDERS/MICROSOFT.NETWORK/APPLICATIONGATEWAYS/{applicationGatewayName}",
"operationName": "ApplicationGatewayPerformance",
"time": "2016-04-09T00:00:00Z",
"category": "ApplicationGatewayPerformanceLog",
"properties":
{
"instanceId":"ApplicationGatewayRole_IN_1",
"healthyHostCount":"4",
"unHealthyHostCount":"0",
"requestCount":"185",
"latency":"0",
"failedRequestCount":"0",
"throughput":"119427"
}
}
Nota
A latência é calculada desde o momento em que o primeiro byte da solicitação HTTP é recebido até o momento em que o último byte da resposta HTTP é enviado. É a soma do tempo de processamento do Application Gateway mais o custo de rede para o back-end, mais o tempo que o back-end leva para processar a solicitação.
Registo da firewall
O log do firewall é gerado somente se você o tiver habilitado para cada gateway de aplicativo, conforme detalhado nas etapas anteriores. Esse log também requer que o firewall do aplicativo Web esteja configurado em um gateway de aplicativo. Os dados são armazenados no destino que você especificou quando ativou o registro. Os seguintes dados são registrados:
Gateway de Aplicação
Formato de log
| valor | Descrição |
|---|---|
| instanceId | Instância do Application Gateway para a qual os dados de firewall estão sendo gerados. Para um gateway de aplicativo de várias instâncias, há uma linha por instância. |
| clienteIp | IP de origem para a solicitação. |
| URI de pedido | URL do pedido recebido. |
| tipoDeConjuntoDeRegras | Tipo de conjunto de regras. O valor disponível é OWASP. |
| ruleSetVersion | Versão do conjunto de regras usada. Os valores disponíveis são 2.2.9 e 3.0. |
| ruleId | ID da regra do evento de acionamento. |
| mensagem | Mensagem amigável para ativar o evento. Mais detalhes são fornecidos na seção de detalhes. |
| ação |
Modo de política: deteção - detetado - Esta é a única ação para o WAF quando no modo de deteção. Todas as condições para uma determinada regra foram correspondidas e a solicitação foi registada e, em seguida, passada para o back-end. Modo de Política: Prevenção - Permitida - Todas as condições se adequaram para uma regra específica e a solicitação foi passada para o back-end. - Bloqueado - Todas as condições foram correspondidas para uma determinada regra e a solicitação foi bloqueada. - Combinado - Uma ou mais condições foram satisfeitas em relação a uma determinada regra, mas a decisão de bloquear ou aprovar a solicitação precisará de uma avaliação mais aprofundada e será feita com base na regra final de pontuação de anomalias. Modo de política: desafio JS - JSChallengeIssued: Emitido devido a autorização de desafio ausente/inválida, resposta não fornecida. Esse log é criado quando um cliente solicita acesso a um aplicativo Web pela primeira vez e não foi contestado anteriormente. Este cliente recebe a página de desafio JavaScript e prossegue para resolver o desafio JavaScript. Após o cálculo bem-sucedido, o cliente recebe o cookie de validade. - JSChallengePass: Aprovado devido a uma resposta de desafio válida. Esse log é criado quando um cliente resolve o desafio JS e reenvia a solicitação com a resposta correta. Nesse caso, o WAF do Azure valida o cookie e prossegue processando as regras restantes sem gerar outro desafio JS. - JSChallengeValid: Registado/passa adiante devido a desafio válido Esse log é criado quando um cliente já resolveu um desafio. Nesse caso, o WAF do Azure registra a solicitação e prossegue processando as regras restantes. - JSChallengeBlock: Bloqueado Esse log é criado quando uma computação de desafio JS falha. |
| site | Site para o qual o log foi gerado. Atualmente, apenas Global está listado porque as regras são globais. |
| detalhes | Detalhes do evento desencadeador. |
| detalhes da mensagem | Descrição da regra. |
| detalhes.dados | Dados específicos encontrados na solicitação que correspondiam à regra. |
| detalhes do arquivo | Arquivo de configuração que continha a regra. |
| detalhes.line | Número da linha no arquivo de configuração que disparou o evento. |
| nome do anfitrião | Nome do host ou endereço IP do Application Gateway. |
| transactionId | ID exclusivo para uma determinada transação que ajuda a agrupar várias violações de regras que ocorreram dentro da mesma solicitação. |
| policyId | ID exclusiva da Política de Firewall associada ao Gateway de Aplicativo, Ouvinte ou Caminho. |
| âmbito de aplicação da política | A localização da política - os valores podem ser "Global", "Listener" ou "Location". |
| NomeDoÂmbitoDaPolítica | O nome do objeto onde a política é aplicada. |
Exemplo
{
"resourceId": "/SUBSCRIPTIONS/{subscriptionId}/RESOURCEGROUPS/{resourceGroupName}/PROVIDERS/MICROSOFT.NETWORK/APPLICATIONGATEWAYS/{applicationGatewayName}",
"operationName": "ApplicationGatewayFirewall",
"time": "2017-03-20T15:52:09.1494499Z",
"category": "ApplicationGatewayFirewallLog",
"properties": {
"instanceId": "ApplicationGatewayRole_IN_0",
"clientIp": "203.0.113.147",
"requestUri": "/",
"ruleSetType": "OWASP",
"ruleSetVersion": "3.0",
"ruleId": "920350",
"ruleGroup": "920-PROTOCOL-ENFORCEMENT",
"message": "Host header is a numeric IP address",
"action": "Matched",
"site": "Global",
"details": {
"message": "Warning. Pattern match \"^[\\\\d.:]+$\" at REQUEST_HEADERS:Host ....",
"data": "127.0.0.1",
"file": "rules/REQUEST-920-PROTOCOL-ENFORCEMENT.conf",
"line": "791"
},
"hostname": "127.0.0.1",
"transactionId": "16861477007022634343",
"policyId": "/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourceGroups/drewRG/providers/Microsoft.Network/ApplicationGatewayWebApplicationFirewallPolicies/perListener",
"policyScope": "Listener",
"policyScopeName": "httpListener1"
}
}
}
Ver e analisar o registo de atividades
Pode ver e analisar os dados de registo de atividades através de um dos seguintes métodos:
- Ferramentas do Azure: recuperar informações de registo de atividades através do Azure PowerShell, a CLI do Azure, a API REST do Azure ou o portal do Azure. As instruções passo-a-passo para cada método estão detalhadas no artigo Operações de atividades com o Resource Manager.
- Power BI: se ainda não tiver uma conta do Power BI, pode experimentá-lo gratuitamente. Ao utilizar as aplicações de modelos do Power BI, pode analisar os seus dados.
Visualize e analise os logs de acesso, desempenho e firewall
Os logs do Azure Monitor podem recolher os ficheiros de log de contador e de eventos da sua conta de armazenamento de blobs. Inclui visualizações e capacidades de pesquisa poderosas para analisar os seus registos.
Também pode ligar à sua conta de armazenamento e obter os registos JSON para os registos de acesso e desempenho. Depois de transferir os ficheiros JSON, pode convertê-los em CSV e visualizá-los no Excel, Power BI ou qualquer outra ferramenta de visualização de dados.
Gorjeta
Se estiver familiarizado com os conceitos básicos do Visual Studio para alterar os valores de constantes e variáveis em C#, pode utilizar as ferramentas de conversor de registo disponíveis no GitHub.
Analisando logs de acesso através do GoAccess
Publicamos um modelo do Resource Manager que instala e executa o popular analisador de logs GoAccess para logs de acesso do Application Gateway. O GoAccess fornece estatísticas valiosas de tráfego HTTP, como visitantes únicos, arquivos solicitados, hosts, sistemas operacionais, navegadores, códigos de status HTTP e muito mais. Para obter mais detalhes, consulte o ficheiro Readme na pasta do modelo do Gerenciador de Recursos no GitHub.
Próximos passos
- Visualize contadores e logs de eventos usando os logs do Azure Monitor.
- Visualize seu log de atividades do Azure com a postagem do blog do Power BI .
- Exiba e analise os logs de atividade do Azure no Power BI e mais postagens de blog.