Crie uma regra de firewall
Adicione uma regra ao Rules Engine de um firewall pelo Azion Console, pela Azion CLI ou pela API, e confirme que ela nega uma requisição.
Você pode criar uma regra de firewall no Rules Engine pelo Azion Console, pela Azion CLI ou pela API. A primeira regra desta página nega um caminho de teste, então uma única requisição confirma que o firewall a aplica. A segunda, criada no Azion Console, recusa um cliente que não apresenta certificado.
Uma aplicação tem um Rules Engine próprio. Uma regra que adiciona um header de requisição para a sua origem pertence ao Rules Engine para Applications.
Selecione a interface em que você trabalha. Os pré-requisitos e os passos que criam a primeira regra mudam conforme a sua seleção.
Pré-requisitos
- Um firewall vinculado ao seu workload. Para criar um firewall e vinculá-lo, consulte Primeiros passos com Firewall.
- Para a regra de certificado de cliente, mutual TLS (mTLS) ativado nesse workload. Para mais informações, consulte Suporte para mTLS para Secure.
- Acesso ao Azion Console. Para entrar, consulte Como acessar o Azion Console.
Negue requisições a um caminho
A regra desta seção corresponde às requisições cujo caminho começa com /deny-test e as recusa com 403. As requisições para qualquer outro caminho continuam chegando à sua aplicação. O critério também corresponde a caminhos mais longos que começam com os mesmos caracteres, como /deny-test-old.
Nem o critério Request Uri nem o behavior Deny (403 Forbidden) precisam de um produto no firewall. Outros critérios e comportamentos precisam de Web Application Firewall (WAF), Network Shield ou Functions habilitado no firewall. Para a lista completa, consulte Rules Engine para Firewall.
Para criar a regra pela Azion CLI, salve a definição dela como rule.json. O arquivo traz o name da regra, se ela está active, os criteria e os behaviors dela:
criteria é uma lista de grupos, e cada grupo é uma lista de condições. A primeira condição recebe "conditional": "if", e cada condição seguinte recebe and ou or.
Depois, crie a regra no seu firewall, com o ID dele no lugar de <firewall-id>:
O comando imprime o ID da nova regra:
A regra fica ativa no firewall, porque o arquivo define "active": true. azion create firewall-rule aceita apenas --firewall-id e --file. O arquivo contém o mesmo corpo que a API aceita.
O firewall processa as regras na ordem da lista, e um behavior deny encerra esse processamento para a requisição que ele recusa. Para mais informações, consulte Como Firewall funciona.
Confirme que a regra nega o caminho
Uma regra nova entra em vigor de 6 min 29 s a 9 min 18 s depois que você a cria. Até lá, /deny-test responde como antes. Enquanto a mudança se propaga, as requisições podem receber a resposta antiga e a nova, alternadamente. Um workload recém-vinculado a um firewall pode levar vários minutos para aplicar a primeira regra, e nenhuma duração é garantida.
Para confirmar a regra, envie uma requisição para o caminho de teste, com o domínio do seu workload no lugar de <your-domain>:
O firewall recusa a requisição com 403:
O corpo é a página de erro padrão da Azion. Ele mostra Forbidden e o mesmo ID de requisição do header x-azion-request-id. Uma requisição para qualquer outro caminho continua chegando à sua aplicação.
Se /deny-test ainda responder depois de 9 min 18 s, consulte Solucionar problemas de Firewall. Para mais informações sobre propagação, consulte Como Firewall funciona.
Exija um certificado de cliente
A regra desta seção corresponde a uma requisição cujo cliente não apresenta certificado e a responde com 401 e um corpo JSON. Use-a para aplicar uma política de mTLS, como a que o compliance do BACEN exige. O critério Ssl Verification Status e o behavior Set Custom Response não precisam de produto no firewall.
Para criar a regra no Azion Console:
Acesse Azion Console > Firewalls e selecione o firewall.
Selecione Rule.
Na seção General, informe um Name, como require-client-certificate.
Na seção Criteria, selecione Ssl Verification Status como a variável e is equal como o operador. Em Select an SSL Status, selecione Missing Client Certificate.
Na seção Behaviors, selecione Set Custom Response como o behavior.
Em Status code, informe 401.
Em Content Type, informe o tipo MIME do corpo da resposta, como application/json.
Em Content Body, informe a mensagem que o cliente recebe, como {}.
Selecione Save.
Azion Console mostra Rule successfully created. Quando a regra entrar em vigor, uma requisição sem certificado de cliente recebe 401 e o corpo que você informou.
Para cada opção deste critério e deste comportamento, consulte Rules Engine para Firewall.
Para encaminhar à sua origem o Common Name (CN) do certificado do cliente, use Rules Engine para Applications em vez disso. Lá, um behavior que adiciona um header de requisição, como client_cn, envia a variável ${ssl_client_s_dn_parsed}. Para a configuração completa, consulte Passe os detalhes do certificado de cliente para a origem.