---
name: azion-negue-requisicoes-de-uma-lista-de-paises
description: >-
  Crie uma network list countries e uma regra de firewall que nega cada requisição desses países, no Azion Console, na Azion CLI ou na API.
---

# Negue requisições de uma lista de países

Você pode negar todo cliente de uma lista de países pelo Azion Console, pela [Azion CLI](/pt-br/documentacao/devtools/cli/) ou pela API. Uma [network list](/pt-br/documentacao/plataforma/firewall/network-shield/network-lists/) `countries` nomeia os países. Uma regra de [firewall](/pt-br/documentacao/plataforma/firewall/) nega cada cliente que a Azion localiza em um deles. Use-a quando a sua aplicação não atende ninguém nesses países. As requisições deles então terminam no firewall com `403`. Para negar uma rede em vez de um país inteiro, consulte [Negue requisições de um sistema autônomo](/pt-br/documentacao/guias/seguranca-de-aplicacoes/bots-e-rede/negar-asn/).

---

Selecione a interface que você vai usar. Os pré-requisitos e cada tarefa desta página seguem essa escolha.

## Pré-requisitos

- Um [workload](/pt-br/documentacao/plataforma/workloads/) vinculado a um firewall, que carrega a regra deste guia.
- [Network Shield](/pt-br/documentacao/plataforma/firewall/#network-shield) ativado para esse firewall. Um firewall é criado com Network Shield ativado, a menos que você o desative.

**Console**

- Acesso ao [Azion Console](https://console.azion.com/).

**CLI**

- Azion CLI, instalada e configurada com um [personal token](/pt-br/documentacao/fundamentos/personal-tokens/).
- O ID do firewall vinculado ao seu workload.

**API**

- Um [personal token](/pt-br/documentacao/fundamentos/personal-tokens/), que substitui `[TOKEN VALUE]` em cada requisição.
- O ID do firewall vinculado ao seu workload.

---

## Crie a lista de países

Uma lista `countries` guarda um item por país: o código ISO 3166-1 alpha-2 dele, em maiúsculas, como `BR` ou `US`. Azion Console seleciona cada país pelo nome e envia o código dele. A API recusa um código em minúsculas ou um nome, como `br` ou `Brazil`, com `22015 Invalid Country`. A lista mantém o tipo `countries` enquanto existir. Um item não aceita data de expiração nem comentário. Por isso, um país continua negado até que uma gravação dos itens da lista o deixe de fora. Para cada campo e tipo de uma lista, consulte [Campos da network list](/pt-br/documentacao/plataforma/firewall/network-shield/network-lists/#campos-da-network-list) e [Tipos de lista](/pt-br/documentacao/plataforma/firewall/network-shield/network-lists/#tipos-de-lista).

**Console**

Para criar a lista no Azion Console:

1. **Abra a página Network Lists**

   Acesse [Azion Console](https://console.azion.com/) > **Edge Libraries** > **Network Lists**.

2. **Selecione Network List**

3. **Nomeie a lista**

   Na seção **General**, informe um **Name**. Por exemplo: `Blocked countries`.

4. **Selecione o tipo Countries**

   Na seção **Network List Settings**, selecione *Countries*. O formulário abre com *ASN* selecionado.

5. **Selecione os países a negar**

   No campo **Countries**, selecione cada país pelo nome.

6. **Salve a lista**

   Selecione **Save**.

Azion Console exibe a mensagem `Your network list has been created`. **Network Lists** então mostra a lista, com *Countries* na coluna **List Type**.

**CLI**

Para criar a lista com a Azion CLI, passe os códigos para `--items`, separados por vírgulas:

```bash
azion create network-list --name "Blocked countries" --type countries --items "BR,US"
```

A CLI responde com o ID da lista:

```text
Created Network List with ID <network-list-id>
```

A lista `Blocked countries` existe, e a regra a nomeia por esse ID.

**API**

Para criar a lista com a API, envie uma requisição `POST` para `/v4/workspace/network_lists`. Substitua `[TOKEN VALUE]` pelo seu personal token:

```bash
curl -X POST https://api.azion.com/v4/workspace/network_lists \
  -H "Authorization: Token [TOKEN VALUE]" \
  -H "Accept: application/json" \
  -H "Content-Type: application/json" \
  -d '{"name":"Blocked countries","type":"countries","items":["BR"]}'
```

A API responde `201`, e um `state` igual a `executed` significa que a lista já está armazenada. Este trecho da resposta mantém os campos que a regra lê:

```json
{
  "state": "executed",
  "data": {
    "id": <network-list-id>,
    "name": "Blocked countries",
    "type": "countries",
    "items": ["BR"],
    ...
    "active": true,
    ...
  }
}
```

A lista existe, e `data.id` é o ID que a regra nomeia. Para negar mais países, envie um código por país no mesmo array `items`.

---

## Crie a regra que nega a lista

A regra compara o endereço do cliente de cada requisição com a lista `countries` pelo critério *Network*. O comportamento *Deny (403 Forbidden)* dela recusa toda correspondência. A regra guarda o ID da lista, e não os países que ela contém. Um país que você adiciona à lista ou remove dela muda o que a regra nega, sem nenhuma edição na regra. Para cada critério e comportamento que uma regra aceita, consulte [Rules Engine para Firewall](/pt-br/documentacao/plataforma/firewall/rules-engine/#criterios).

**Console**

Para criar a regra no Azion Console:

1. **Abra o firewall vinculado ao seu workload**

   Acesse [Azion Console](https://console.azion.com/) > **Secure** > **Firewalls** e selecione o firewall.

2. **Selecione a aba Rules Engine**

3. **Selecione Rule**

   O drawer **Create Rule** abre.

4. **Nomeie a regra**

   Na seção **General**, informe um **Name**. Por exemplo: `Deny listed countries`.

5. **Defina o critério Network**

   Na seção **Criteria**, selecione a variável *Network* e o operador *matches*.

   Se a variável aparecer como *Network - required Network Shield*, Network Shield está desativado para este firewall. Ative **Network Shield** em **Main Settings** > **Modules** e salve, e a variável fica selecionável.

6. **Selecione a lista**

   No dropdown **Select a Network**, selecione `Blocked countries`.

7. **Adicione o comportamento Deny**

   Na seção **Behaviors**, selecione *Deny (403 Forbidden)*.

8. **Salve a regra**

   Selecione **Save**.

Azion Console exibe a mensagem `Rule successfully created`. A aba **Rules Engine** lista a regra, com *Active* na coluna **Status**.

**CLI**

Para criar a regra com a Azion CLI, salve-a como `rule.json`. Escreva o ID da sua lista no lugar de `<network-list-id>`, como um número sem aspas:

```json
{
  "name": "Deny listed countries",
  "active": true,
  "criteria": [
    [
      { "variable": "${network}", "conditional": "if", "operator": "is_in_list", "argument": <network-list-id> }
    ]
  ],
  "behaviors": [
    { "type": "deny" }
  ]
}
```

Depois, crie a regra a partir do arquivo. Coloque o ID do firewall vinculado ao seu workload no lugar de `<firewall-id>`:

```bash
azion create firewall-rule --firewall-id <firewall-id> --file rule.json
```

A CLI responde com o ID da regra:

```text
Created Firewall Rule with ID <rule-id>
```

O firewall guarda a regra, ativa, e a regra nega todo país de `Blocked countries`.

**API**

Para criar a regra com a API, envie uma requisição `POST` para `/v4/workspace/firewalls/{firewall_id}/request_rules`. Coloque o ID do firewall vinculado ao seu workload no lugar de `<firewall-id>`. No lugar de `<network-list-id>`, escreva o `data.id` da resposta da lista como um número, sem aspas:

```bash
curl -X POST https://api.azion.com/v4/workspace/firewalls/<firewall-id>/request_rules \
  -H "Authorization: Token [TOKEN VALUE]" \
  -H "Accept: application/json" \
  -H "Content-Type: application/json" \
  -d '{
  "name": "Deny listed countries",
  "active": true,
  "criteria": [
    [
      { "variable": "${network}", "conditional": "if", "operator": "is_in_list", "argument": <network-list-id> }
    ]
  ],
  "behaviors": [
    { "type": "deny" }
  ]
}'
```

A API responde `202` e retorna a regra como foi armazenada:

```json
{
  "state": "pending",
  "data": {
    "id": <rule-id>,
    "name": "Deny listed countries",
    "active": true,
    "criteria": [[{ "conditional": "if", "variable": "${network}", "operator": "is_in_list", "argument": <network-list-id> }]],
    "behaviors": [{ "type": "deny" }],
    "description": "",
    "order": 0
  }
}
```

O firewall guarda a regra. A plataforma adiciona um `description` vazio e um `order`. `order` é a posição da regra entre as regras do firewall, contada a partir de `0`.

> **nota**
>
> No JSON da CLI e da API, `criteria` guarda um bloco com um critério, cujo `conditional` é `if`. `${network}` é o critério *Network*, `is_in_list` é o operador *matches* dele e `deny` é o comportamento *Deny (403 Forbidden)*. Com Network Shield desativado, a regra é recusada com `25047 Missing Required Modules`. O ID da lista entre aspas é recusado com `25042 Invalid Operator Argument Type`. Para cada operador e erro deste critério, consulte [O critério Network](/pt-br/documentacao/plataforma/firewall/network-shield/network-lists/#o-criterio-network).

---

## Confirme que a regra nega um país listado

A regra deste guia não tem nenhum critério além de *Network*, então ela nega os clientes dos países listados em todos os caminhos do workload. As requisições deles terminam no firewall, e a aplicação nunca as recebe. Uma regra que você cria pode levar de 6 minutos e 29 segundos a 9 minutos e 18 segundos para chegar ao tráfego na infraestrutura distribuída da Azion. Até que isso aconteça, esses clientes ainda chegam à aplicação.

Quando a regra chega ao tráfego, um cliente que a Azion localiza em um país listado recebe `HTTP 403`. A resposta carrega a página de erro padrão da Azion, encabeçada por **Forbidden**. Por exemplo, uma lista que guarda `BR` nega um cliente no Brasil. Uma requisição negada recebe esta resposta:

```text
$ curl -i https://<your-workload-domain>/
HTTP/2 403
server: nginx
date: Thu, 01 Jan 2026 12:00:00 GMT
content-type: text/html; charset=utf-8
x-content-type-options: nosniff
x-azion-request-id: <request-id>
x-azion-edge-location: <edge-location>
alt-svc: h3=":443"; ma=86400

<title>Azion - Default error page</title>
...
<h1 class="error-header__title">Forbidden</h1>
...
Your IP         <your-ip>
Request ID      <request-id>
Status Code     403
Edge Location   <edge-location>
```

A linha `Your IP` mostra o endereço que a Azion localizou em um país listado. Uma mudança posterior nos países da lista pode levar de 46 segundos a cerca de 100 segundos para chegar ao tráfego. Nesse intervalo, as respostas podem alternar entre os países antigos e os atualizados. Repita a requisição até que as respostas coincidam. Para o que um cliente negado recebe, consulte [Deny (403 Forbidden)](/pt-br/documentacao/plataforma/firewall/rules-engine/#deny-403-forbidden).

A Azion obtém o país de um endereço de bancos de dados que fornecedores externos disponibilizam. Esse país pode estar errado para alguns endereços. Os [Termos de Serviço](/pt-br/documentacao/contratos/tds/) da Azion afirmam que o controle de acesso por país é aplicado em regime de melhor esforço. Os mesmos termos indicam a restrição por endereço IP como a forma de obter o melhor nível de controle.

Um critério *Request Uri* limita a regra a um caminho. Para testar a regra em um caminho antes que ela cubra todo o workload, consulte [Proteja um caminho com uma network list](/pt-br/documentacao/guias/seguranca-de-aplicacoes/bots-e-rede/proteger-um-caminho/).

---

## Próximos passos

- [Proteja um caminho com uma network list](/pt-br/documentacao/guias/seguranca-de-aplicacoes/bots-e-rede/proteger-um-caminho.md): Limite a mesma regra de negação a um caminho com um segundo critério e deixe todos os outros caminhos abertos.
- [Network Lists](/pt-br/documentacao/plataforma/firewall/network-shield/network-lists.md): Todos os campos e tipos de lista, além de cada erro que uma lista ou um critério Network retorna.
- [Como Firewall funciona](/pt-br/documentacao/plataforma/firewall/como-funciona.md#network-shield): A seção Network Shield explica como uma lista corresponde ao endereço de um cliente e como uma lista atende muitas regras.
- [Guias e tutoriais de Firewall](/pt-br/documentacao/plataforma/firewall/guias.md): As outras configurações construídas sobre network lists e todos os outros guias para um firewall.
