Configurar uma regra de limite de taxa do Firewall de Aplicativo Web
A regra de limite de taxa do Firewall de Aplicativo Web do Azure para o Azure Front Door controla o número de solicitações permitidas de um determinado endereço IP de origem para o aplicativo durante uma duração de limite de taxa. Para obter mais informações sobre a limitação de taxa, confira O que é a limitação de taxa para o Azure Front Door?.
Este artigo mostra como você pode configurar uma regra de limitação de taxa do Firewall de Aplicativo Web (WAF) nas camadas Standard e Premium do Azure Front Door.
Cenário
Suponha que você seja responsável por um site público. Você acabou de adicionar uma página com informações sobre uma promoção que a sua organização está executando. Você está preocupado com o fato de que, se os clientes visitarem essa página com muita frequência, alguns dos seus serviços de back-end poderão não ser dimensionados rapidamente e o aplicativo poderá ter problemas de desempenho.
Você decide criar uma regra de limite de taxa para restringir cada endereço IP de origem a um máximo de 1.000 solicitações por minuto. Você só aplica essa regra às solicitações que contêm */promo*
na URL de solicitação.
Dica
Se você não tiver uma assinatura do Azure, crie uma conta gratuita antes de começar.
Crie um perfil do Azure Front Door e uma política WAF
No portal do Azure, selecione Criar um recurso.
Pesquise Front Door e selecione perfis do Front Door e CDN.
Selecione Criar.
Selecione Continuar para criar um Front Door para usar o processo de criação rápida do portal.
Insira as informações necessárias na página Básico:
- Grupo de recursos: Selecione um grupo de recursos existente ou crie um novo grupo de recursos para os recursos do Azure Front Door e do WAF.
- Nome: insira o nome do seu perfil do Azure Front Door.
- Camada: selecione Standard ou Premium. Para esse cenário, ambas as camadas dão suporte à limitação de taxa.
- Nome do ponto de extremidade: forneça um nome exclusivo para seu ponto de extremidade porque os pontos de extremidade do Azure Front Door devem ter nomes globalmente exclusivos.
- Tipo de origem e Nome do host de origem: selecione o aplicativo de origem que você deseja proteger com sua regra de limite de taxa.
Ao lado da Política de WAF, selecione Criar novo.
Insira o nome de uma política de WAF e selecione Criar.
Selecione Examinar + criar>Criar.
Depois que a implantação for concluída, selecione Acessar o recurso.
Criar uma regra de limite de taxa
Selecione Regras personalizadas>Adicionar regra personalizada.
Insira as informações exigidas para que você crie uma regra de limite de taxa:
- Nome da regra personalizada: insira o nome da regra personalizada, como rateLimitRule.
- Tipo de regra: selecione Limite de taxa.
- Prioridade: insira a prioridade da regra, como 1.
- Duração do limite de taxa: selecione 1 minuto.
- Limite de taxa (solicitações): insira 1000.
Em Condições, insira as informações necessárias para especificar uma condição de correspondência para identificar solicitações cuja URL contém a cadeia de caracteres
*/promo*
:- Tipo de correspondência: selecione Cadeia de caracteres.
- Variável de correspondência: insira RequestUri.
- Operação: selecione is.
- Operator: selecione Contains.
- Valores de correspondência: insira /promo.
Para Ação, selecione Log ou Bloquear.
As regras de limite de taxa só têm suporte para as ações
Log
eBlock
. Não há suporte paraAllow
.Selecione Adicionar.
Clique em Salvar.
Usar o modo de prevenção no WAF
Por padrão, o portal do Azure cria políticas de WAF no modo de detecção. Essa configuração significa que o WAF não bloqueia as solicitações. Para saber mais, confira Modos do WAF.
Ajuste seu WAF antes de utilizar o modo de prevenção. O ajuste ajuda a evitar detecções de falsos positivos. Ele também ajuda a evitar que o WAF bloqueie solicitações legítimas.
Aqui você reconfigura o WAF para utilizar o modo de prevenção.
Abra a política de WAF.
Observe que Modo de política está definido como Detecção.
Selecione Alternar para o modo de prevenção.
Pré-requisitos
Antes de você começar a configurar uma política de limite de taxa, configure seu ambiente do PowerShell e crie um perfil do Azure Front Door.
Configurar o ambiente do PowerShell
O Azure PowerShell fornece um conjunto de cmdlets que usa o modelo do Azure Resource Manager para gerenciar os recursos do Azure.
Você pode instalar o Azure PowerShell no computador local e usá-lo em qualquer sessão do PowerShell. Aqui você entra com suas credenciais do Azure e instala o módulo do Azure PowerShell para o Azure Front Door Standard ou Premium.
Conecte-se ao Azure com um diálogo interativo para entrar
Execute o seguinte comando para entrar no Azure:
Connect-AzAccount
Instalar o PowerShellGet
Certifique-se de que a versão atual do PowerShellGet esteja instalada. Execute o comando a seguir:
Install-Module PowerShellGet -Force -AllowClobber
Em seguida, reinicie o PowerShell para certificar-se de que você utiliza a versão mais recente.
Instale os módulos do Azure Front Door PowerShell
Instale os módulos Az.FrontDoor
e Az.Cdn
para que você trabalhe com o Azure Front Door Standard ou Premium a partir do PowerShell.
Install-Module -Name Az.FrontDoor
Install-Module -Name Az.Cdn
Você utiliza o módulo Az.Cdn
para trabalhar com os recursos do Azure Front Door Standard ou Premium. Utilize o módulo Az.FrontDoor
para trabalhar com recursos do WAF.
Criar um grupo de recursos
Utilize o cmdlet New-AzResourceGroup para criar um novo grupo de recursos para o perfil do Azure Front Door e a política do WAF. Atualize o nome e o local do grupo de recursos para os seus próprios requisitos:
$resourceGroupName = 'FrontDoorRateLimit'
New-AzResourceGroup -Name $resourceGroupName -Location 'westus'
Criar um perfil do Azure Front Door
Utilize o cmdlet New-AzFrontDoorCdnProfile para criar um novo perfil do Azure Front Door.
Neste exemplo, você criará um perfil padrão do Azure Front Door chamado MyFrontDoorProfile
:
$frontDoorProfile = New-AzFrontDoorCdnProfile `
-Name 'MyFrontDoorProfile' `
-ResourceGroupName $resourceGroupName `
-Location global `
-SkuName Standard_AzureFrontDoor
Crie um ponto de extremidade do Azure Front Door
Utilize o cmdlet New-AzFrontDoorCdnEndpoint para adicionar um ponto de extremidade ao seu perfil do Azure Front Door.
Os pontos de extremidade do Azure Front Door devem ter nomes globalmente exclusivos, portanto, atualize o valor da variável $frontDoorEndpointName
para algo exclusivo.
$frontDoorEndpointName = '<unique-front-door-endpoint-name>'
$frontDoorEndpoint = New-AzFrontDoorCdnEndpoint `
-EndpointName $frontDoorEndpointName `
-ProfileName $frontDoorProfile.Name `
-ResourceGroupName $frontDoorProfile.ResourceGroupName `
-Location $frontDoorProfile.Location
Definir condições de correspondência de uma URL
Utilize o cmdlet New-AzFrontDoorWafMatchConditionObject para criar uma condição de correspondência para identificar solicitações que devem ter o limite de taxa aplicado.
O exemplo a seguir corresponde às solicitações em que a variável RequestUri
contém a cadeia de caracteres /promo:
$promoMatchCondition = New-AzFrontDoorWafMatchConditionObject `
-MatchVariable RequestUri `
-OperatorProperty Contains `
-MatchValue '/promo'
Crie uma regra de limite de taxa personalizada
Utilize o cmdlet New-AzFrontDoorWafCustomRuleObject para criar a regra de limitação de taxa, que inclui a condição de correspondência que você definiu na etapa anterior e o limite da solicitação.
O exemplo a seguir define o limite como 1000
:
$promoRateLimitRule = New-AzFrontDoorWafCustomRuleObject `
-Name 'rateLimitRule' `
-RuleType RateLimitRule `
-MatchCondition $promoMatchCondition `
-RateLimitThreshold 1000 `
-Action Block `
-Priority 1
Quando qualquer endereço IP de origem envia mais de 1.000 solicitações em um minuto, o WAF bloqueia as solicitações subsequentes até o início do próximo minuto.
Criar uma política de WAF
Utilize o cmdlet New-AzFrontDoorWafPolicy para criar uma política do WAF, que inclui a regra personalizada que você criou.
$wafPolicy = New-AzFrontDoorWafPolicy `
-Name 'MyWafPolicy' `
-ResourceGroupName $frontDoorProfile.ResourceGroupName `
-Sku Standard_AzureFrontDoor `
-CustomRule $promoRateLimitRule
Configure uma política de segurança para associar o perfil do Azure Front Door à política do WAF
Utilize o cmdlet New-AzFrontDoorCdnSecurityPolicy para criar uma política de segurança para o perfil do Azure Front Door. Uma política de segurança associa a sua política de WAF a domínios que você deseja proteger pela regra de WAF.
Neste exemplo, você associa o nome de host padrão do ponto de extremidade à política de WAF:
$securityPolicyAssociation = New-AzFrontDoorCdnSecurityPolicyWebApplicationFirewallAssociationObject `
-PatternsToMatch @("/*") `
-Domain @(@{"Id"=$($frontDoorEndpoint.Id)})
$securityPolicyParameters = New-AzFrontDoorCdnSecurityPolicyWebApplicationFirewallParametersObject `
-Association $securityPolicyAssociation `
-WafPolicyId $wafPolicy.Id
$frontDoorSecurityPolicy = New-AzFrontDoorCdnSecurityPolicy `
-Name 'MySecurityPolicy' `
-ProfileName $frontDoorProfile.Name `
-ResourceGroupName $frontDoorProfile.ResourceGroupName `
-Parameter $securityPolicyParameters
Pré-requisitos
Antes de você começar a configurar uma política de limite de taxa, configure seu ambiente da CLI do Azure e crie um perfil do Azure Front Door.
Configurar o ambiente da CLI do Azure
A CLI do Azure fornece um conjunto de comandos que usam o modelo do Azure Resource Manager para gerenciar os recursos do Azure.
É possível instalar a CLI do Azure no computador local e usá-la em qualquer sessão de shell. Aqui você entra com suas credenciais do Azure e instala a extensão da CLI do Azure para o Azure Front Door Standard ou Premium.
Conecte-se ao Azure com um diálogo interativo para entrar
Execute o seguinte comando para entrar no Azure:
az login
Instalar a extensão do Azure Front Door para a CLI do Azure
Instale a extensão front-door
para que você trabalhe com o WAF do Azure Front Door a partir da CLI do Azure:
az extension add --name front-door
Você utiliza os comandos az afd
para trabalhar com os recursos do Azure Front Door Standard ou Premium. Utilize os comandos az network front-door waf-policy
para trabalhar com os recursos do WAF.
Criar um grupo de recursos
Utilize o comando az group create para criar um novo grupo de recursos para o perfil do Azure Front Door e a política do WAF. Atualize o nome e o local do grupo de recursos para os seus próprios requisitos:
resourceGroupName='FrontDoorRateLimit'
az group create \
--name $resourceGroupName \
--location westus
Criar um perfil do Azure Front Door
Utilize o comando az afd profile create para criar um novo perfil do Azure Front Door.
Neste exemplo, você criará um perfil padrão do Azure Front Door chamado MyFrontDoorProfile
:
frontDoorProfileName='MyFrontDoorProfile'
az afd profile create \
--profile-name $frontDoorProfileName \
--resource-group $resourceGroupName \
--sku Standard_AzureFrontDoor
Crie um ponto de extremidade do Azure Front Door
Utilize o comando az afd endpoint create para adicionar um ponto de extremidade ao seu perfil do Azure Front Door.
Os pontos de extremidade do Azure Front Door devem ter nomes globalmente exclusivos, portanto, atualize o valor da variável frontDoorEndpointName
para algo exclusivo.
frontDoorEndpointName='<unique-front-door-endpoint-name>'
az afd endpoint create \
--endpoint-name $frontDoorEndpointName \
--profile-name $frontDoorProfileName \
--resource-group $resourceGroupName \
Criar uma política de WAF
Use o comando az network front-door waf-policy create para criar uma política de WAF:
wafPolicyName='MyWafPolicy'
az network front-door waf-policy create \
--name $wafPolicyName \
--resource-group $resourceGroupName \
--sku Standard_AzureFrontDoor
Prepare-se para adicionar uma regra de limite de taxa personalizada
Utilize o comando az network front-door waf-policy rule create para criar uma regra de limite de taxa personalizada. O exemplo a seguir define o limite para 1.000 solicitações por minuto.
As regras de limitação de taxa devem conter uma condição de correspondência, que você criará na próxima etapa. Nesse comando, você inclui o argumento --defer
, que diz à CLI do Azure para não enviar a regra para o Azure ainda.
az network front-door waf-policy rule create \
--name rateLimitRule \
--policy-name $wafPolicyName \
--resource-group $resourceGroupName \
--rule-type RateLimitRule \
--rate-limit-duration 1 \
--rate-limit-threshold 1000 \
--action Block \
--priority 1 \
--defer
Quando qualquer endereço IP de origem envia mais de 1.000 solicitações em um minuto, o WAF bloqueia as solicitações subsequentes até o início do próximo minuto.
Adicionar uma condição de correspondência
Use o comando az network front-door waf-policy rule match-condition add para adicionar uma condição de correspondência à regra personalizada. A condição de correspondência identificará as solicitações que deverão ter o limite de taxa aplicado.
O exemplo a seguir corresponde às solicitações em que a variável RequestUri
contém a cadeia de caracteres /promo:
az network front-door waf-policy rule match-condition add \
--match-variable RequestUri \
--operator Contains \
--values '/promo' \
--name rateLimitRule \
--policy-name $wafPolicyName \
--resource-group $resourceGroupName
Quando você envia esse comando, a CLI do Azure cria a regra de limite de taxa e a condição de correspondência juntas.
Configure uma política de segurança para associar o perfil do Azure Front Door à política do WAF
Utilize o comando az afd security-policy create para criar uma política de segurança para seu perfil do Azure Front Door. Uma política de segurança associa a sua política de WAF a domínios que você deseja proteger pela regra de WAF.
Neste exemplo, você associa o nome de host padrão do ponto de extremidade à política de WAF:
securityPolicyName='MySecurityPolicy'
wafPolicyResourceId=$(az network front-door waf-policy show --name $wafPolicyName --resource-group $resourceGroupName --query id --output tsv)
frontDoorEndpointResourceId=$(az afd endpoint show --endpoint-name $frontDoorEndpointName --profile-name $frontDoorProfileName --resource-group $resourceGroupName --query id --output tsv)
az afd security-policy create \
--security-policy-name $securityPolicyName \
--profile-name $frontDoorProfileName \
--resource-group $resourceGroupName \
--domains $frontDoorEndpointResourceId \
--waf-policy $wafPolicyResourceId
O código anterior procura os identificadores de recursos do Azure para a política do WAF e o ponto de extremidade do Azure Front Door para que você possa associá-los à política de segurança.
Observação
Sempre que fizer alterações na sua política do WAF, você não precisará criar novamente a política de segurança do Azure Front Door. As atualizações da política do WAF são aplicadas automaticamente aos domínios do Azure Front Door.
Início Rápido
Para criar um perfil do Azure Front Door com uma regra de limite de taxa utilizando o Bicep, confira o Azure Front Door Standard ou Premium com limite de taxa Início rápido do Bicep.
Próximas etapas
Saiba mais sobre o Azure Front Door.