---
name: azion-instale-a-integracao-method-and-route-validator
description: >-
  Instale Method and Route Validator a partir de Azion Marketplace e execute-a em um firewall para bloquear requisições pela URI e pelo método HTTP.
---

# Instale a integração Method and Route Validator

**Preview**

Você instala a integração Method and Route Validator a partir de Azion Marketplace e a executa em um [firewall](/pt-br/documentacao/plataforma/firewall/), pelo Azion Console. A função protege sua aplicação bloqueando requisições com base na URI e no método que elas usam. Você lista as rotas que sua aplicação espera e os métodos que cada rota aceita, e a função verifica cada requisição contra esses padrões.

Cinco objetos precisam existir antes que uma requisição seja validada: a função instalada, um firewall com o módulo **Functions**, uma instância de função com as rotas, uma regra do Rules Engine com o behavior **Run Function** e um deployment de workload vinculado ao firewall. Cada seção abaixo cria um deles.

---

## Pré-requisitos

- Uma conta Azion. Para entrar, consulte [Como acessar o Azion Console](/pt-br/documentacao/guias/plataforma/conta-e-billing/como-acessar-o-azion-console/).
- Uma aplicação servida por um [workload](/pt-br/documentacao/plataforma/workloads/), cujo deployment você vincula ao firewall na última seção.
- [Azion CLI](/pt-br/documentacao/devtools/cli/) instalada e autorizada, para a última seção.
- Ativar um produto ou um módulo pode gerar custos de uso. Para mais informações, consulte [Preços](/pt-br/documentacao/fundamentos/precos/).

---

## Instale a integração

A função é instalada uma vez por conta. Para instalá-la:

1. **Abra Marketplace**

   Acesse [Azion Console](https://console.azion.com/) > **Marketplace**.

2. **Encontre a integração**

   Digite `Method and Route Validator` no campo **Search on Marketplace** e selecione o card da integração. Navegar pelos cards e pelas categorias leva à mesma página.

3. **Selecione Install**

O card exibe `Successfully installed!` e `Latest version installed!`, e a função aparece na lista **Function** do drawer **Create Instance**.

---

## Crie o firewall

O firewall é onde a função é instanciada e onde fica a regra que a executa. Para criar um:

1. **Abra a página Firewalls**

   Acesse [Azion Console](https://console.azion.com/) > **Firewalls** e crie um firewall.

2. **Nomeie o firewall**

   Na seção **General**, insira um **Name**. Por exemplo: `route-validator-firewall`.

3. **Ative o módulo Functions**

   Na seção **Modules**, ative o switch **Functions**. O switch dá ao firewall acesso a funções.

4. **Salve o firewall**

O firewall exibe a aba **Functions Instances** enquanto o módulo **Functions** estiver ativo. Para usar um firewall existente, ative o módulo **Functions** dele e salve-o. Para cada configuração deste formulário, consulte [Defina as configurações principais de um firewall](/pt-br/documentacao/guias/seguranca-de-aplicacoes/firewall-e-waf/firewall-definir-main-settings/).

---

## Crie a instância de função

A instância guarda as rotas, os métodos delas e a ação para uma requisição inválida. Para criá-la:

1. **Abra a aba Functions Instances**

   Em **Firewalls**, selecione seu firewall e, em seguida, a aba **Functions Instances**.

2. **Selecione + Function**

   Um firewall sem instâncias exibe a mesma ação como **Function Instance**. O drawer **Create Instance** é aberto.

3. **Nomeie a instância**

   Em **Name**, insira um nome. Por exemplo: `method-route-validator`.

4. **Selecione a função instalada**

   Em **Function**, selecione a função Method and Route Validator. A lista contém apenas as funções que executam em um firewall.

5. **Insira os argumentos**

   Em **Arguments**, o editor vem preenchido com os argumentos padrão da integração em JSON. Insira suas rotas e valores, como a próxima seção descreve.

6. **Selecione Save**

A instância aparece na aba **Functions Instances**.

### Argumentos

Passe os argumentos como neste exemplo:

```json
{
  "restricted_mode": false,
  "action": "deny",
  "routes": [
    {
      "match_type": "equals",
      "path": "/my/route/",
      "methods": ["GET", "POST"]
    },
    {
      "match_type": "contains",
      "path": "/something/",
      "methods": ["POST"]
    },
    {
      "match_type": "regex",
      "path": "^.test.*",
      "methods": ["GET", "POST", "PATCH", "DELETE"]
    }
  ]
}
```

| Propriedade                    | Tipo    | Obrigatório                                | Descrição                                                                                                                       |
| ------------------------------ | ------- | ------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------- |
| `restricted_mode`              | Boolean | Não                                        | Define se a função executa em modo restrito. Valor padrão: `false`.                                                             |
| `action`                       | String  | Sim                                        | A ação que a função executa quando identifica uma requisição como inválida.                                                     |
| `routes`                       | Array   | Sim                                        | Todas as URIs que a aplicação protegida espera tratar.                                                                          |
| `routes.match_type`            | String  | Sim                                        | O tipo de correspondência que a função executa no caminho.                                                                      |
| `routes.path`                  | String  | Sim                                        | O argumento que a função usa para validar a URI da requisição.                                                                  |
| `routes.methods`               | Array   | Sim                                        | Os métodos que uma requisição ao caminho pode usar, como um array de strings.                                                   |
| `redirect_to`                  | String  | Apenas quando `action` é `redirect`        | A URL que recebe a requisição quando a ação `redirect` executa. Pode ser uma URL de requisição completa ou um caminho relativo. |
| `custom_response_body`         | String  | Apenas quando `action` é `custom_response` | O corpo de resposta personalizado que a função envia quando a ação `custom_response` executa.                                   |
| `custom_response_status`       | Number  | Não                                        | O código de status da resposta que a função envia quando a ação `custom_response` executa. Valor padrão: `400`.                 |
| `custom_response_content_type` | String  | Não                                        | O tipo de conteúdo da resposta que a função envia quando a ação `custom_response` executa. Valor padrão: `plain/text`.          |

> **Atenção**
>
> Quando `restricted_mode` está ativo, a função bloqueia toda requisição cuja URI não corresponde a nenhuma das rotas do array `routes`.

O argumento `action` aceita estes valores:

| Ação              | Descrição                                                 |
| ----------------- | --------------------------------------------------------- |
| `deny`            | Encerra a requisição com uma resposta HTTP 403 Forbidden. |
| `drop`            | Encerra a requisição sem uma resposta ao cliente.         |
| `redirect`        | Redireciona a requisição para outro local.                |
| `custom_response` | Encerra a requisição com uma resposta estática.           |

O argumento `match_type` aceita estes valores:

| Tipo de correspondência | Descrição                                                               |
| ----------------------- | ----------------------------------------------------------------------- |
| `equals`                | O caminho precisa ser igual ao argumento `path`.                        |
| `contains`              | O caminho precisa conter o argumento `path`.                            |
| `regex`                 | O caminho precisa corresponder à expressão regular do argumento `path`. |

> **nota**
>
> O argumento `routes.methods` espera valores em maiúsculas. Por exemplo: `["GET", "POST"]`.

### Validação da requisição

Cada vez que a função executa, ela segue estes passos:

1. Valida os argumentos passados para a função. Quando os argumentos são inválidos, a função escreve uma mensagem de log e continua a requisição.
2. Verifica se a requisição corresponde aos padrões das rotas.
3. Quando a requisição corresponde, a função executa a ação de bloqueio que você definiu. Quando a requisição não corresponde, a função continua a requisição ou a bloqueia, conforme sua configuração.

---

## Crie a regra

A instância não valida nada até que uma regra a execute. Uma regra do [Rules Engine para Firewall](/pt-br/documentacao/plataforma/firewall/rules-engine/) seleciona as requisições que chegam à instância, por meio do behavior **Run Function**. Para criar a regra:

1. **Abra a aba Rules Engine**

   Em **Firewalls**, selecione seu firewall e, em seguida, a aba **Rules Engine**.

2. **Selecione + Rule**

3. **Nomeie a regra**

   Em **Name**, insira um nome. Por exemplo: `Run Method and Route Validator`.

4. **Defina o critério**

   Na seção **Criteria**, selecione os domínios que executam a integração. Por exemplo: if `Host` *matches* `yourdomain.com`.

5. **Adicione o behavior Run Function**

   Na seção **Behaviors**, selecione **Run Function** e, em seguida, selecione a instância pelo nome que você deu a ela.

6. **Selecione Save**

O firewall executa a instância em toda requisição aos domínios do critério.

---

## Vincule o firewall ao workload

O vínculo fica no deployment do workload, então crie um deployment que nomeie a aplicação e o firewall:

```bash
azion create workload-deployment --workload-id <workload-id> --name <deployment-name> \
  --application-id <application-id> --firewall-id <firewall-id> --strategy-type default \
  --active true --current true
```

O comando exibe o id do novo deployment:

```text
Created Workload Deployment with ID 123456
```

As requisições ao domínio do workload chegam ao firewall, e a regra executa a instância Method and Route Validator em cada uma delas.

---

## Próximos passos

- [Integrações do Marketplace](/pt-br/documentacao/plataforma/marketplace/integracoes.md): Todas as integrações que Azion Marketplace oferece e onde cada uma executa.
- [Rules Engine para Firewall](/pt-br/documentacao/plataforma/firewall/rules-engine.md): Todos os critérios e behaviors que uma regra de firewall aceita.
- [Atualize uma integração](/pt-br/documentacao/guias/desenvolvimento-de-aplicacoes/integracoes/atualizar-uma-integracao.md): Mova uma integração instalada para a versão mais recente.
