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

  1. No portal do Azure, selecione Criar um recurso.

    Captura de tela mostrando o botão Criar um recurso na página inicial.

  2. Pesquise Front Door e selecione perfis do Front Door e CDN.

    Captura de tela mostrando o marketplace, com o Front Door destacado.

  3. Selecione Criar.

    Captura de tela mostrando os perfis do Front Door e da CDN, com o botão Criar destacado.

  4. Selecione Continuar para criar um Front Door para usar o processo de criação rápida do portal.

    Captura de tela mostrando as ofertas do Azure Front Door, com a opção Criação rápida selecionada e o botão Continuar para criar um Front Door destacado.

  5. 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.
  6. Ao lado da Política de WAF, selecione Criar novo.

    Captura de tela mostrando o fluxo de trabalho de criação do Azure Front Door, com o botão Criar novo da política WAF destacado.

  7. Insira o nome de uma política de WAF e selecione Criar.

    Captura de tela mostrando o prompt de criação da política WAF, com o botão Criar destacado.

  8. Selecione Examinar + criar>Criar.

    Captura de tela mostrando a configuração completa do perfil do Azure Front Door.

  9. Depois que a implantação for concluída, selecione Acessar o recurso.

Criar uma regra de limite de taxa

  1. Selecione Regras personalizadas>Adicionar regra personalizada.

    Captura de tela mostrando a página de regras personalizadas da política do WAF.

  2. 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.
  3. 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.
  4. Para Ação, selecione Log ou Bloquear.

    As regras de limite de taxa só têm suporte para as ações Log e Block. Não há suporte para Allow.

    Captura de tela mostrando a configuração da regra personalizada.

  5. Selecione Adicionar.

  6. Clique em Salvar.

    Captura de tela mostrando a lista de regras personalizadas, incluindo a nova regra de limitação de taxa.

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.

  1. Abra a política de WAF.

    Observe que Modo de política está definido como Detecção.

    Captura de tela mostrando a política do WAF, com o modo de política e o botão Alternar para modo de prevenção destacados.

  2. 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.