# Azion CLI firewall-rule

Os comandos `firewall-rule` da Azion CLI criam, listam, descrevem, atualizam, ordenam e excluem as regras de um [firewall](/pt-br/documentacao/plataforma/firewall/), que o [Rules Engine para Firewall](/pt-br/documentacao/plataforma/firewall/rules-engine/) executa nas requisições que o firewall recebe. Uma regra combina critérios, que correspondem a uma requisição, com comportamentos, que agem sobre ela, e você passa os dois em um arquivo JSON. Todo comando recebe o `--firewall-id` do firewall que contém as regras. As opções que todo comando aceita, como `--format`, `--out` e `-y`, estão em [Opções globais](/pt-br/documentacao/devtools/cli/globals/).

---

## Criar

`azion create firewall-rule` cria uma regra em um firewall a partir de um arquivo JSON:

```bash
azion create firewall-rule [flags]
```

| Flag            | Curta | Tipo   | Padrão | Descrição                                                                                                                                                                      |
| --------------- | ----- | ------ | ------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| `--file`        | —     | string | —      | **Obrigatório.** Caminho para um arquivo JSON com os atributos da regra. Use `-` para ler o JSON da entrada padrão. Sem ela, o comando pergunta o caminho para o arquivo JSON. |
| `--firewall-id` | —     | int    | —      | ID do firewall que contém a regra.                                                                                                                                             |

Este arquivo descreve uma regra chamada `my-rule` que nega toda requisição cuja URI começa com `/private`:

```json
{
  "name": "my-rule",
  "active": true,
  "criteria": [
    [
      {
        "variable": "${request_uri}",
        "operator": "starts_with",
        "conditional": "if",
        "argument": "/private"
      }
    ]
  ],
  "behaviors": [
    {
      "type": "deny"
    }
  ]
}
```

Este comando cria a regra a partir do arquivo `rule.json` no firewall com ID `12353`:

```bash
azion create firewall-rule --firewall-id 12353 --file rule.json
```

O comando exibe o ID da regra:

```text
Created Firewall Rule with ID 123483
```

Quando a plataforma recusa o arquivo, o comando exibe `400 Bad Request` e uma linha `Error:` por problema antes da linha de resumo. Cada linha indica o campo que falhou pelo JSON pointer dele, depois de `Source:`. Um arquivo com um tipo de comportamento desconhecido e um nome que outra regra do firewall já usa falha com esta saída:

```text
400 Bad Request
Error: Invalid Choice - Source: /data/behaviors/0/type - Message: "explode" is not a valid choice.
Error: Firewall Rule Name Already In Use - Source: /data/name - Message: Firewall already have a rule with this name.

Error: failed to create the Firewall Rule: ["\"explode\" is not a valid choice.","Firewall already have a rule with this name."]
```

---

## Listar

`azion list firewall-rule` lista as regras de um firewall, 50 por página:

```bash
azion list firewall-rule [flags]
```

| Flag            | Curta | Tipo   | Padrão | Descrição                                                                                              |
| --------------- | ----- | ------ | ------ | ------------------------------------------------------------------------------------------------------ |
| `--details`     | —     | —      | —      | Adiciona as colunas `LAST EDITOR` e `LAST MODIFIED` às colunas `ID`, `NAME`, `ACTIVE` e `DESCRIPTION`. |
| `--filter`      | —     | string | —      | Nome pelo qual filtrar a lista.                                                                        |
| `--firewall-id` | —     | int    | —      | ID do firewall cujas regras listar.                                                                    |
| `--order-by`    | —     | string | —      | Campo pelo qual ordenar a lista.                                                                       |
| `--page`        | —     | int    | `1`    | Número da página a retornar.                                                                           |
| `--page-size`   | —     | int    | `50`   | Número de regras em cada página.                                                                       |

Este comando lista as regras do firewall com ID `12353`:

```bash
azion list firewall-rule --firewall-id 12353
```

O comando exibe uma linha por regra:

```text
ID      NAME                  ACTIVE  DESCRIPTION
123483  my-rule               true
123484  my-rule-2             true
```

---

## Descrever

`azion describe firewall-rule` exibe as configurações de uma regra:

```bash
azion describe firewall-rule [flags]
```

| Flag            | Curta | Tipo | Padrão | Descrição                          |
| --------------- | ----- | ---- | ------ | ---------------------------------- |
| `--firewall-id` | —     | int  | —      | ID do firewall que contém a regra. |
| `--rule-id`     | —     | int  | —      | ID da regra a descrever.           |

Este comando descreve a regra com ID `123483` no firewall com ID `12353`:

```bash
azion describe firewall-rule --firewall-id 12353 --rule-id 123483
```

O comando exibe o ID, o nome, a última alteração e o estado da regra:

```text
ID:              123483
Name:            my-rule
Last Editor:     you@example.com
Last Modified:   "2026-01-01T12:00:00.366524Z"
Active:          true
Description:
```

Com `--format json`, o comando exibe o objeto completo: `active`, `behaviors`, `created_at`, `criteria`, `description`, `id`, `last_editor`, `last_modified`, `name` e `order`. O valor `order` é a posição da regra no firewall: a primeira regra criada tem `0`, e a segunda tem `1`. Uma `description` que o arquivo não enviou volta como uma string vazia.

Um ID de regra que não existe no firewall falha com `Error: failed to describe the Firewall Rule: The given ID or API's endpoint doesn't exist or isn't available. Check that the identifying information is correct`.

---

## Atualizar

`azion update firewall-rule` altera uma regra com os atributos de um arquivo JSON:

```bash
azion update firewall-rule [flags]
```

| Flag            | Curta | Tipo   | Padrão | Descrição                                                                                           |
| --------------- | ----- | ------ | ------ | --------------------------------------------------------------------------------------------------- |
| `--file`        | —     | string | —      | Caminho para um arquivo JSON com os atributos a alterar. Use `-` para ler o JSON da entrada padrão. |
| `--firewall-id` | —     | int    | —      | ID do firewall que contém a regra.                                                                  |
| `--rule-id`     | —     | int    | —      | ID da regra a atualizar.                                                                            |

Este arquivo renomeia a regra para `my-rule-renamed` e a desativa:

```json
{
  "name": "my-rule-renamed",
  "active": false
}
```

Este comando aplica o arquivo `rule-update.json` à regra com ID `123483`:

```bash
azion update firewall-rule --firewall-id 12353 --rule-id 123483 --file rule-update.json
```

O comando exibe o ID da regra atualizada:

```text
Updated Firewall Rule with ID 123483
```

Os atributos que o arquivo omite mantêm os valores deles. Depois dessa atualização, a regra ainda tem o comportamento `deny`.

---

## Ordenar regras

`azion update firewall-rule-order` define a ordem em que as regras de um firewall são executadas, a partir de uma lista de IDs de regra:

```bash
azion update firewall-rule-order [flags]
```

| Flag            | Curta | Tipo   | Padrão | Descrição                                                                                                                          |
| --------------- | ----- | ------ | ------ | ---------------------------------------------------------------------------------------------------------------------------------- |
| `--firewall-id` | —     | int    | —      | ID do firewall cujas regras ordenar.                                                                                               |
| `--rule-ids`    | —     | string | —      | Lista de IDs de regra separados por vírgula, na ordem em que as regras são executadas. A lista contém todas as regras do firewall. |

Este comando faz a regra com ID `123484` ser executada antes da regra com ID `123483`:

```bash
azion update firewall-rule-order --firewall-id 12353 --rule-ids "123484,123483"
```

O comando confirma a nova ordem:

```text
Ordered Rules Engine of Firewall with ID 12353
```

Depois do comando, `azion list firewall-rule` exibe as regras na nova ordem. Uma lista que omite uma regra do firewall falha com este erro:

```text
Error: Failed to order the rules in Rules Engine of the Firewall: ["When ordering you should provide the order for all rules."]. Check your settings and try again. If the error persists, contact Azion support.
```

---

## Excluir

`azion delete firewall-rule` exclui uma regra de um firewall:

```bash
azion delete firewall-rule [flags]
```

| Flag            | Curta | Tipo | Padrão | Descrição                          |
| --------------- | ----- | ---- | ------ | ---------------------------------- |
| `--firewall-id` | —     | int  | —      | ID do firewall que contém a regra. |
| `--rule-id`     | —     | int  | —      | ID da regra a excluir.             |

Este comando exclui a regra com ID `123484` do firewall com ID `12353`:

```bash
azion delete firewall-rule --firewall-id 12353 --rule-id 123484 -y
```

O comando confirma a exclusão:

```text
Firewall Rule 123484 was successfully deleted
```

---

## Usar um arquivo JSON

`azion create firewall-rule` e `azion update firewall-rule` leem os atributos de uma regra somente de um arquivo JSON com `--file`. Esses comandos não têm flag para um nome, um critério ou um comportamento. O arquivo contém as chaves abaixo, que o exemplo de criação acima envia:

| Chave       | Tipo                       | Descrição                                                                                                                                                                        |
| ----------- | -------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `name`      | string                     | Nome da regra. Outra regra do mesmo firewall não pode usá-lo.                                                                                                                    |
| `active`    | boolean                    | Ativa (`true`) ou desativa (`false`) a regra.                                                                                                                                    |
| `criteria`  | array of arrays of objects | As condições que uma requisição precisa atender. Cada objeto contém `variable`, `operator`, `conditional` e `argument`, como `${request_uri}`, `starts_with`, `if` e `/private`. |
| `behaviors` | array of objects           | O que a regra faz com uma requisição que corresponde a ela. Cada objeto contém um `type`, como `deny`.                                                                           |

Na atualização, o arquivo contém somente as chaves a alterar, e a regra mantém os valores das chaves que o arquivo omite. Para conhecer cada variável, operador, condicional e comportamento que uma regra aceita, consulte [Rules Engine para Firewall](/pt-br/documentacao/plataforma/firewall/rules-engine/).

---

## Recursos relacionados

- [Opções globais](/pt-br/documentacao/devtools/cli/globals.md): As opções que todo comando aceita, como `--format`, `--out` e `-y`.
- [Rules Engine para Firewall](/pt-br/documentacao/plataforma/firewall/rules-engine.md): Cada variável de critério, operador e comportamento que o arquivo JSON de uma regra pode conter.
- [Azion CLI firewall](/pt-br/documentacao/devtools/cli/recursos/firewall.md): Os comandos que criam e gerenciam o firewall cujo ID todo comando de regra recebe.
- [Azion CLI network-list](/pt-br/documentacao/devtools/cli/recursos/network-list.md): Os comandos que gerenciam as listas com as quais os critérios de uma regra podem comparar uma requisição.
