# Azion CLI waf

Os comandos `waf` da Azion CLI criam, listam, descrevem, atualizam e excluem [rule sets do WAF](/pt-br/documentacao/plataforma/firewall/waf/rule-sets/). Um rule set guarda um limiar para cada ameaça que cobre, um nome de ameaça associado a uma sensibilidade, e a saída da CLI o chama de WAF. 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 waf` cria um rule set com o nome e as configurações que você informa:

```bash
azion create waf [flags]
```

| Flag                | Curta | Tipo   | Padrão | Descrição                                                                                                                  |
| ------------------- | ----- | ------ | ------ | -------------------------------------------------------------------------------------------------------------------------- |
| `--active`          | —     | string | —      | Ativa (`true`) ou desativa (`false`) o rule set.                                                                           |
| `--engine-version`  | —     | string | —      | Versão do motor do WAF. Um rule set criado sem ela recebe `2021-Q3`.                                                       |
| `--file`            | —     | string | —      | Caminho de um arquivo JSON com os atributos do rule set. Use `-` para ler o JSON da entrada padrão.                        |
| `--name`            | —     | string | —      | Nome do rule set.                                                                                                          |
| `--product-version` | —     | string | —      | Versão de produto do rule set. Um rule set criado sem ela recebe `1.0`.                                                    |
| `--rulesets`        | —     | string | —      | Lista, separada por vírgulas, dos IDs dos rulesets a ativar. Um rule set criado sem ela recebe `1`.                        |
| `--thresholds`      | —     | string | —      | Lista de pares `threat=sensitivity` separados por vírgulas. Um rule set criado sem ela recebe as oito ameaças em `medium`. |
| `--type`            | —     | string | —      | Tipo do motor do WAF. Um rule set criado sem ela recebe `score`.                                                           |

As oito ameaças são `cross_site_scripting`, `directory_traversal`, `evading_tricks`, `file_upload`, `identified_attack`, `remote_file_inclusion`, `sql_injection` e `unwanted_access`. A sensibilidade aceita `highest`, `high`, `medium`, `low` ou `lowest`.

Este comando cria um rule set ativo chamado `my-strict-waf`, com sensibilidade `highest` para cross-site scripting e `high` para SQL injection:

```bash
azion create waf --name my-strict-waf --active true --engine-version 2021-Q3 --type score --rulesets 1 --thresholds 'cross_site_scripting=highest,sql_injection=high'
```

O comando imprime o ID do rule set:

```text
Created WAF with ID 12348
```

O rule set guarda somente os limiares que você informa: `azion describe waf --waf-id 12348 --format json` lista `cross_site_scripting` em `highest` e `sql_injection` em `high`, e nenhuma outra ameaça.

Uma sensibilidade fora desses cinco valores é recusada:

```text
Error: Invalid sensitivity value for threshold. Valid values: highest, high, medium, low, lowest
```

---

## Listar

`azion list waf` lista os rule sets da sua conta, 50 por página:

```bash
azion list waf [flags]
```

| Flag          | Curta | Tipo   | Padrão | Descrição                                                                                                  |
| ------------- | ----- | ------ | ------ | ---------------------------------------------------------------------------------------------------------- |
| `--details`   | —     | —      | —      | Adiciona as colunas `PRODUCT VERSION`, `LAST EDITOR` e `LAST MODIFIED` às colunas `ID`, `NAME` e `ACTIVE`. |
| `--filter`    | —     | string | —      | Nome pelo qual filtrar a lista.                                                                            |
| `--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 rule sets em cada página.                                                                        |

Este comando lista os rule sets da conta:

```bash
azion list waf
```

O comando imprime uma linha por rule set:

```text
ID     NAME           ACTIVE
12345  my-blog-waf    true
12346  my-store-waf   true
12347  my-waf         true
12348  my-strict-waf  true
12349  my-site-waf    true
```

---

## Descrever

`azion describe waf` imprime as configurações de um rule set:

```bash
azion describe waf [flags]
```

| Flag       | Curta | Tipo | Padrão | Descrição                   |
| ---------- | ----- | ---- | ------ | --------------------------- |
| `--waf-id` | —     | int  | —      | ID do rule set a descrever. |

Este comando descreve o rule set com ID `12347`, criado somente com `--name` e `--active`:

```bash
azion describe waf --waf-id 12347
```

O comando imprime o nome, o estado e as configurações do motor do rule set. As oito ameaças têm a sensibilidade padrão `medium`:

```text
ID:                12347
Active:            true
Name:              my-waf
Last Editor:       you@example.com
Modified at:       "2026-01-01T12:00:00.058811Z"
Product Version:   "1.0"
Engine Settings:   {"attributes":{"rulesets":[1],"thresholds":[{"sensitivity":"medium","threat":"cross_site_scripting"},{"sensitivity":"medium","threat":"directory_traversal"},{"sensitivity":"medium","threat":"evading_tricks"},{"sensitivity":"medium","threat":"file_upload"},{"sensitivity":"medium","threat":"identified_attack"},{"sensitivity":"medium","threat":"remote_file_inclusion"},{"sensitivity":"medium","threat":"sql_injection"},{"sensitivity":"medium","threat":"unwanted_access"}]},"engine_version":"2021-Q3","type":"score"}
```

Com `--format json`, o comando imprime o objeto completo: `active`, `engine_settings`, `id`, `is_versioned`, `last_editor`, `last_modified`, `name`, `product_version`, `version`, `version_id` e `version_state`. O objeto `engine_settings` guarda `engine_version`, `type` e um objeto `attributes` com os `rulesets` e os `thresholds` que as flags de criação e de atualização definem.

Um ID que não existe falha com este erro:

```text
Error: Failed to get the WAF: The given ID or API's endpoint doesn't exist or isn't available. Check that the identifying information is correct. Check your settings and try again. If the error persists, contact Azion support
```

---

## Atualizar

`azion update waf` altera o nome, o estado ativo ou as configurações do motor de um rule set:

```bash
azion update waf [flags]
```

| Flag               | Curta | Tipo   | Padrão | Descrição                                                                                           |
| ------------------ | ----- | ------ | ------ | --------------------------------------------------------------------------------------------------- |
| `--active`         | —     | string | —      | Ativa (`true`) ou desativa (`false`) o rule set.                                                    |
| `--engine-version` | —     | string | —      | Versão do motor do WAF.                                                                             |
| `--file`           | —     | string | —      | Caminho de um arquivo JSON com os atributos a alterar. Use `-` para ler o JSON da entrada padrão.   |
| `--name`           | —     | string | —      | Novo nome do rule set.                                                                              |
| `--rulesets`       | —     | string | —      | Lista, separada por vírgulas, dos IDs dos rulesets a ativar.                                        |
| `--thresholds`     | —     | string | —      | Lista de pares `threat=sensitivity` separados por vírgulas. Substitui a lista inteira de limiares.  |
| `--type`           | —     | string | —      | Tipo do motor do WAF.                                                                               |
| `--waf-id`         | —     | int    | —      | **Obrigatório**, também com `--file`. ID do rule set a atualizar. Sem ela, o comando pergunta o ID. |

> **Atenção**
>
> `--thresholds` substitui a lista inteira. Uma ameaça que você deixa fora do valor perde o seu limiar, então informe todas as ameaças que o rule set precisa manter.

Este comando renomeia o rule set com ID `12347` para `my-waf-renamed` e define SQL injection com sensibilidade `lowest`:

```bash
azion update waf --waf-id 12347 --name my-waf-renamed --thresholds 'sql_injection=lowest'
```

O comando imprime o ID do rule set atualizado:

```text
Updated WAF with ID 12347
```

Depois dessa atualização, `azion describe waf --waf-id 12347 --format json` retorna um limiar, `sql_injection` em `lowest`. As outras sete ameaças saem do rule set.

---

## Excluir

`azion delete waf` exclui um rule set:

```bash
azion delete waf [flags]
```

| Flag       | Curta | Tipo | Padrão | Descrição                 |
| ---------- | ----- | ---- | ------ | ------------------------- |
| `--waf-id` | —     | int  | —      | ID do rule set a excluir. |

Este comando exclui o rule set com ID `12347`:

```bash
azion delete waf --waf-id 12347
```

O comando confirma a exclusão:

```text
WAF 12347 was successfully deleted
```

---

## Usar um arquivo JSON

`azion create waf` e `azion update waf` leem os atributos do rule set de um arquivo JSON com `--file`.

Este arquivo cria um rule set ativo chamado `my-site-waf`, com sensibilidade `high` para SQL injection. O comando lê `name`, `active` e `engine_settings` do arquivo:

```json
{
  "name": "my-site-waf",
  "active": true,
  "engine_settings": {
    "engine_version": "2021-Q3",
    "type": "score",
    "attributes": {
      "rulesets": [1],
      "thresholds": [
        {"threat": "sql_injection", "sensitivity": "high"}
      ]
    }
  }
}
```

Informe o arquivo ao comando de criação:

```bash
azion create waf --file waf-create.json
```

O comando imprime o ID do rule set:

```text
Created WAF with ID 12349
```

O rule set criado a partir desse arquivo guarda um limiar, `sql_injection` em `high`, como mostra `azion describe waf --format json`.

Na atualização, o comando não lê `"id"` do arquivo. Informe `--waf-id` na linha de comando, ou o comando pergunta o ID. Este arquivo renomeia o rule set com ID `12349`:

```json
{
  "id": 12349,
  "name": "my-site-waf-updated"
}
```

Informe o arquivo e o ID ao comando de atualização:

```bash
azion update waf --waf-id 12349 --file waf-update.json
```

O comando imprime o ID do rule set atualizado:

```text
Updated WAF with ID 12349
```

A atualização é parcial: o arquivo deixa `active` de fora, e o rule set continua ativo.

---

## Recursos relacionados

- [Opções globais](/pt-br/documentacao/devtools/cli/globals.md): As opções que todo comando aceita, como `--format`, `--out` e `-y`.
- [Rule sets](/pt-br/documentacao/plataforma/firewall/waf/rule-sets.md): O que cada ameaça detecta e o score em que cada sensibilidade bloqueia uma requisição.
- [Azion CLI waf-exceptions](/pt-br/documentacao/devtools/cli/recursos/waf-exceptions.md): Os comandos que adicionam exceções a um rule set por ID de regra, caminho ou condição.
- [Azion CLI firewall](/pt-br/documentacao/devtools/cli/recursos/firewall.md): Os comandos que ativam ou desativam o WAF de um firewall.
