Registos de recursos do Azure Firewall de Aplicações Web
Pode monitorizar Firewall de Aplicações Web recursos através de registos. Pode guardar o desempenho, o acesso e outros dados ou consumi-lo a partir de um recurso para fins de monitorização.
Nota
Recomendamos que utilize o módulo do Azure Az PowerShell para interagir com o Azure. Veja Instalar o Azure PowerShell para começar. 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
Pode utilizar diferentes tipos de registos no Azure para gerir e resolver problemas de gateways de aplicação. Pode aceder a alguns destes registos através do portal. Todos os registos podem ser extraídos do armazenamento de Blobs do Azure e visualizados em diferentes ferramentas, como os registos do Azure Monitor, o Excel e o Power BI. Pode saber mais sobre os diferentes tipos de registos na seguinte lista:
- Registo de atividades: pode utilizar os registos de atividades do Azure para ver todas as operações submetidas para a sua subscrição do Azure e o respetivo estado. As entradas de registos de atividades são recolhidas por predefinição e pode visualizá-las no portal do Azure.
- Registo de recursos do Access: pode utilizar este registo para ver Gateway de Aplicação padrões de acesso e analisar informações importantes. Isto inclui o IP do autor da chamada, o URL pedido, a latência de resposta, o código de retorno e os bytes para dentro e para fora. Este registo contém registos individuais para cada pedido e associa esse pedido ao Gateway de Aplicação exclusivo que processou o pedido. As instâncias Gateway de Aplicação exclusivas podem ser identificadas pelo instanceId da propriedade.
- Registo de Recursos de Desempenho: pode utilizar este registo para ver o desempenho Gateway de Aplicação instâncias. Este registo captura informações de desempenho para cada instância, incluindo o total de pedidos servidos, débito em bytes, total de pedidos servidos, contagem de pedidos falhados e contagem de instâncias de back-end em bom estado de funcionamento e em mau estado de funcionamento. É recolhido um registo de desempenho a cada 60 segundos. O Registo de desempenho está disponível apenas para o SKU v1. Para o SKU v2, utilize Métricas para dados de desempenho.
- Registo de Recursos da Firewall: pode utilizar este registo para ver os pedidos registados através do modo de deteção ou prevenção de um gateway de aplicação configurado com a firewall de aplicações Web.
Nota
Os registos só estão disponíveis para recursos implementados no modelo de implementação do Azure Resource Manager. Não pode utilizar registos para recursos no modelo de implementação clássica. Para compreender melhor os dois modelos, veja o artigo Understanding Resource Manager deployment and classic deployment (Compreender Resource Manager implementação e 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 integrar com outras ferramentas de gestão de informações e eventos de segurança (SIEM) para obter alertas sobre os seus recursos.
- Registos do Azure Monitor: os registos do Azure Monitor são mais utilizados para monitorização geral em tempo real da sua aplicação ou para analisar tendências.
Ativar o registo através do PowerShell
O registo de atividades é ativado automaticamente para todos os recursos do Resource Manager. Tem de ativar o registo de acesso e desempenho para começar a recolher os dados disponíveis através desses registos. Para ativar o registo, utilize os seguintes passos:
Anote o ID de recurso da conta de armazenamento, onde os dados de registo são armazenados. Este valor é do formulário: /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.
Tenha em atenção o ID de recurso do gateway de aplicação para o qual o registo está ativado. Este valor é do formulário: /subscriptions/subscriptionId>/resourceGroups/<resource group name>/providers/Microsoft.Network/applicationGateways/<application gateway name>.< Pode utilizar o portal para encontrar estas informações.
Ative o registo de recursos com 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
Dica
Os registos de atividades não necessitam de 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
Na portal do Azure, localize o recurso e selecione Definições de diagnóstico.
Para Gateway de Aplicação, estão disponíveis três registos:
- Registo de acesso
- Registo de desempenho
- Registo da firewall
Selecione Adicionar definição de diagnóstico.
A página Definição de diagnóstico fornece as definições para os registos de recursos. Neste exemplo, o Log Analytics armazena os registos. Também pode utilizar um hub de eventos, uma conta de armazenamento ou uma solução de parceiro para guardar os registos de recursos.
Escreva um nome para as definições, confirme as definições e selecione Guardar.
Registo de atividades
O Azure gera o registo de atividades por predefinição. Os registos são preservados durante 90 dias no arquivo de registos de eventos do Azure. Saiba mais sobre estes registos ao ler o artigo Ver eventos e registo de atividades .
Registo de acesso
O registo de acesso só é gerado se o tiver ativado em cada instância Gateway de Aplicação, conforme detalhado nos passos anteriores. Os dados são armazenados na conta de armazenamento que especificou quando ativou o registo. Cada acesso de Gateway de Aplicação é registado no formato JSON, conforme mostrado no exemplo seguinte para v1:
Valor | Descrição |
---|---|
instanceId | Gateway de Aplicação instância que serviu o pedido. |
clientIP | IP de origem para o pedido. |
clientPort | Porta de origem para o pedido. |
httpMethod | Método HTTP utilizado pelo pedido. |
requestUri | URI do pedido recebido. |
RequestQuery | Server-Routed: instância do conjunto de back-end que foi enviada o pedido. X-AzureApplicationGateway-LOG-ID: ID de Correlação utilizado para o pedido. Pode ser utilizado para resolver problemas de tráfego nos servidores de back-end. SERVER-STATUS: código de resposta HTTP que Gateway de Aplicação recebido do back-end. |
UserAgent | Agente de utilizador do cabeçalho do pedido HTTP. |
httpStatus | Código de estado HTTP devolvido ao cliente a partir de Gateway de Aplicação. |
httpVersion | Versão HTTP do pedido. |
receivedBytes | Tamanho do pacote recebido, em bytes. |
sentBytes | Tamanho do pacote enviado, em bytes. |
timeTaken | Período de tempo (em milissegundos) que demora a processar um pedido e a respetiva resposta a ser enviada. Isto é calculado como o intervalo desde o momento em que Gateway de Aplicação recebe o primeiro byte de um pedido HTTP até ao momento em que a operação de envio de resposta é concluída. É importante ter em atenção que o campo Time-Taken geralmente inclui o tempo durante o qual os pacotes de pedidos e respostas estão a passar pela rede. |
sslEnabled | Se a comunicação com os conjuntos de back-end utilizou o TLS/SSL. Os valores válidos estão ativados e desativados. |
anfitrião | O nome do anfitrião com o qual o pedido foi enviado para o servidor de back-end. Se o nome do anfitrião de back-end estiver a ser substituído, este nome irá refletir isso. |
originalHost | O nome do anfitrião com o qual o pedido foi recebido pelo Gateway de Aplicação 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": "191.96.249.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=874f1f0f-6807-41c9-b7bc-f3cfa74aa0b1&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 Gateway de Aplicação e WAF v2, os registos mostram um pouco mais de informações:
Valor | Descrição |
---|---|
instanceId | Gateway de Aplicação instância que serviu o pedido. |
clientIP | IP de origem para o pedido. |
clientPort | Porta de origem para o pedido. |
httpMethod | Método HTTP utilizado pelo pedido. |
requestUri | URI do pedido recebido. |
UserAgent | Agente de utilizador do cabeçalho do pedido HTTP. |
httpStatus | Código de estado HTTP devolvido ao cliente a partir de Gateway de Aplicação. |
httpVersion | Versão HTTP do pedido. |
receivedBytes | Tamanho do pacote recebido, em bytes. |
sentBytes | Tamanho do pacote enviado, em bytes. |
timeTaken | Período de tempo (em milissegundos) que demora a processar um pedido e a respetiva resposta a ser enviada. Isto é calculado como o intervalo desde o momento em que Gateway de Aplicação recebe o primeiro byte de um pedido HTTP até ao momento em que a operação de envio de resposta é concluída. É importante ter em atenção que o campo Time-Taken geralmente inclui o tempo durante o qual os pacotes de pedidos e respostas estão a passar pela rede. |
sslEnabled | Se a comunicação com os conjuntos de back-end utilizou o TLS. Os valores válidos estão ativados e desativados. |
sslCipher | Conjunto de cifras a ser utilizado para comunicação TLS (se o TLS estiver ativado). |
sslProtocol | Protocolo TLS a ser utilizado (se o TLS estiver ativado). |
serverRouted | O servidor de back-end para o qual o gateway de aplicação encaminha o pedido. |
serverStatus | Código de estado HTTP do servidor de back-end. |
serverResponseLatency | Latência da resposta do servidor de back-end. |
anfitrião | Endereço listado no cabeçalho do anfitrião do pedido. |
{
"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": "191.96.249.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 registo de desempenho só é gerado se o tiver ativado em cada instância Gateway de Aplicação, conforme detalhado nos passos anteriores. Os dados são armazenados na conta de armazenamento que especificou quando ativou o registo. Os dados do registo de desempenho são gerados em intervalos de 1 minuto. Está disponível apenas para o SKU v1. Para o SKU v2, utilize Métricas para dados de desempenho. São registados os seguintes dados:
Valor | Descrição |
---|---|
instanceId | Gateway de Aplicação instância para a qual os dados de desempenho estão a ser gerados. Para um gateway de aplicação de várias instâncias, existe uma linha por instância. |
healthyHostCount | Número de anfitriões em bom estado de funcionamento no conjunto de back-end. |
unHealthyHostCount | Número de anfitriões em mau estado de funcionamento no conjunto de back-end. |
requestCount | Número de pedidos servidos. |
Latência | Latência média (em milissegundos) de pedidos da instância para o back-end que serve os pedidos. |
failedRequestCount | Número de pedidos falhados. |
de transferência de dados | Débito médio desde o último registo, medido 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 a partir do momento em que o primeiro byte do pedido HTTP é recebido até ao momento em que o último byte da resposta HTTP é enviado. É a soma do tempo de processamento Gateway de Aplicação mais o custo de rede para o back-end, além do tempo que o back-end demora a processar o pedido.
Registo da firewall
O registo da firewall só é gerado se o tiver ativado para cada gateway de aplicação, conforme detalhado nos passos anteriores. Este registo também requer que a firewall de aplicações Web esteja configurada num gateway de aplicação. Os dados são armazenados no destino que especificou quando ativou o registo. São registados os seguintes dados:
Valor | Descrição |
---|---|
instanceId | Gateway de Aplicação instância para a qual os dados da firewall estão a ser gerados. Para um gateway de aplicação de várias instâncias, existe uma linha por instância. |
clientIp | IP de origem para o pedido. |
clientPort | Porta de origem para o pedido. |
requestUri | URL do pedido recebido. |
ruleSetType | Tipo de conjunto de regras. O valor disponível é OWASP. |
ruleSetVersion | Versão do conjunto de regras utilizada. Os valores disponíveis são 2.2.9 e 3.0. |
ruleId | ID da regra do evento de acionamento. |
message | Mensagem amigável para o evento de acionamento. São fornecidos mais detalhes na secção de detalhes. |
action | Modo de Política: Deteção - Detetada – esta é a única ação para a WAF quando está no modo de deteção. Todas as condições para uma determinada regra foram correspondidas e o pedido foi registado e, em seguida, passado para o back-end. Modo de Política: Prevenção - Permitida – todas as condições foram correspondidas para uma determinada regra e o pedido foi transmitido para o back-end. - Bloqueado – todas as condições foram correspondidas a uma determinada regra e o pedido foi bloqueado. - Correspondida – uma/mais condições foram correspondidas para uma determinada regra, mas a decisão de bloquear ou passar o pedido precisará de uma avaliação adicional e será avaliada com base na regra final de classificação de anomalias. |
site | Site para o qual o registo foi gerado. Atualmente, apenas Global está listado porque as regras são globais. |
detalhes | Detalhes do evento de acionamento. |
details.message | Descrição da regra. |
details.data | Dados específicos encontrados no pedido que correspondem à regra. |
details.file | Ficheiro de configuração que continha a regra. |
details.line | Número de linha no ficheiro de configuração que acionou o evento. |
Nome do anfitrião | Nome do anfitrião ou endereço IP do Gateway de Aplicação. |
transactionId | ID exclusivo de uma determinada transação que ajuda a agrupar várias violações de regras que ocorreram no mesmo pedido. |
policyId | ID exclusivo da Política de Firewall associada à Gateway de Aplicação, Serviço de Escuta ou Caminho. |
policyScope | A localização da política – os valores podem ser "Global", "Serviço de Escuta" ou "Localização". |
policyScopeName | O nome do objeto onde a política é aplicada. |
{
"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": "52.161.109.147",
"clientPort": "0",
"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/1496a758-b2ff-43ef-b738-8e9eb5161a86/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 modelo do Power BI, pode analisar os seus dados.
Ver e analisar os registos de acesso, desempenho e firewall
Os registos do Azure Monitor podem recolher os ficheiros de registo de contadores e 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 as entradas de registo 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.
Dica
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.
Analisar registos do Access através do GoAccess
Publicámos um modelo de Resource Manager que instala e executa o popular analisador de registos goAccess para Gateway de Aplicação Registos de Acesso. O GoAccess fornece estatísticas de tráfego HTTP valiosas, tais como Visitantes Exclusivos, Ficheiros Pedidos, Anfitriões, Sistemas Operativos, Browsers, códigos de Estado HTTP e muito mais. Para obter mais detalhes, veja o ficheiro Readme na pasta Resource Manager modelo no GitHub.
Passos seguintes
- Visualize o contador e os registos de eventos com os registos do Azure Monitor.
- Visualize o registo de atividades do Azure com a mensagem de blogue do Power BI.
- Veja e analise os registos de atividades do Azure no Power BI e mais publicações de blogue.