# Gerencie acesso condicional por endereço IP

import Tag from '~/components/webkit/Tag.vue';

<Tag severity="info">Preview</Tag>

A política **Conditional Access by IP Address** da Azion permite que você crie listas que permitem o acesso aos seus recursos com base em endereços IP específicos. Você pode definir endereços IP particulares para aplicar a política, garantindo que apenas dispositivos acessando a partir desses endereços possam alcançar a plataforma. Dessa forma, o acesso de qualquer endereço IP que não esteja na lista de permissões da organização deve ser bloqueado quando essa política estiver habilitada.

Este guia explica como configurar e gerenciar a política de acesso condicional por endereço IP através da plataforma da Azion.

:::note
Quando uma organização configura uma política de acesso condicional por endereço IP, ela se aplica a todos os níveis de conta.

Esta política está disponível para clientes com o [suporte](https://www.azion.com/pt-br/servicos-profissionais/) **Enterprise** e **Mission Critical**.
:::

---

## Configure uma política de acesso condicional por endereço IP

:::note
Para configurar uma política de acesso condicional por endereço IP, você deve ser **Account Owner** ou ter privilégios de *managing policies*. Se você não for um **Account Owner** ou não tiver esses privilégios, o sistema retornará um Erro 403.

Atualmente, uma conta pode ter apenas *1 política configurada*, contendo até 200 regras. Os endereços IP podem ser tanto IPv4 quanto IPv6.

A busca ou filtragem de políticas por endereço IPv6 ainda não é suportada. Essa funcionalidade está atualmente em desenvolvimento.
:::

1. Execute a seguinte requisição `POST` no seu terminal, substituindo `[Token]` pelo seu [personal token](/en/documentation/products/guides/personal-tokens/) para configurar sua política.

```bash 
curl --request POST \
  --url https://api.azion.com/v4/auth/policies \
  --header 'Accept: application/json' \
  --header 'Authorization: [Token] ' \
  --header 'Content-Type: application/json' \
  --data '{
  "name": "My Policy",
  "active": true,
  "rules": [
    {
      "name": "My policy rule",
      "effect": "allow",
      "resource": "platform",
      "actions": ["access"],
      "condition": {
        "ip_address": [
          "19.34.213.23",
          "132.33.16.1/24"
        ]
      }
    }
  ]
}'
```

| Chave | Tipo | Descrição |
| -------- | ---------------- | --------------------------------------------------------------------------- |
| name | String | Refere-se ao nome da política de acesso condicional. Até *255 caracteres*.  |
| active | Boolean | Indica se a política está ativa. Valores aceitos: `true` e `false`. |
| rules | Array de objetos | Inclui um array de regras que definem o comportamento da política. |
| name | String | No array de regras, refere-se ao nome da regra individual. Até *255 caracteres*. |
| effect | String | Refere-se ao efeito da regra. Valores aceitos: `allow` e `deny`. |
| resource | String | Especifica o recurso ou os recursos aos quais a regra se aplica, seja como uma URN exata ou um padrão de correspondência. **Nota**: este endpoint inclui o caso específico de `platform` como recurso, usado exclusivamente para definir ações globais da plataforma. Valor aceito: `.*` (corresponde a todos os recursos). |
| actions | Array de strings | Especifica a ação ou as ações às quais a regra se aplica. Valores aceitos: `create`, `retrieve`, `update` e `destroy`. **Nota**: ao usar `platform` como recurso, a única ação aceita é `access`. |
| condition | Text | Define as condições sob as quais a regra se aplica. |
| ip_address | Array de strings | Inclui um array de endereços IP que são avaliados pela condição. **Nota**: campo obrigatório ao usar `platform` como recurso. |

2. Você receberá uma resposta semelhante à seguinte:

```bash
{
  "state": "executed",
  "data": {
    "id": 0,
    "name": "My Policy",
    "last_editor": "my_username",
    "last_modified": "2025-02-24T14:15:22Z",
    "active": true,
    "rules": [
      {
        "name": "My policy Rule",
        "effect": "allow",
        "resource": "platform",
        "actions": ["access"],
        "condition": {
          "ip_address": [
             "19.34.213.23",
          "132.33.16.1/24"
          ]
        }
      }
    ]
  }
}
```

Onde `state` refere-se ao status da criação da política e `id` é o identificador único da política.

Pronto. Você configurou a política de acesso condicional por endereço IP e ela está ativa. Uma vez que a política esteja habilitada, qualquer usuário que tentar acessar a plataforma a partir de um endereço IP que não esteja na lista de permissões da organização receberá um status HTTP 403.

Todas as tentativas de acesso, tanto bem-sucedidas quanto malsucedidas para usuários válidos da conta, são registradas no **Activity History** para fins de auditoria e monitoramento.

:::note
Esta política inclui uma exceção para o **Account Owner**, equilibrada com medidas de segurança adicionais robustas. Essa abordagem garante uma segurança forte, enquanto previne potenciais bloqueios de conta devido a mudanças de IP ou de política.
:::

---

## Atualize o status de uma política de acesso condicional por endereço IP

1. Execute a seguinte requisição `GET` no seu terminal, substituindo `[Token]` pelo seu [personal token](/en/documentation/products/guides/personal-tokens/) para listar todas as suas políticas de conta configuradas.

```bash
curl --request GET \
  --url https://api.azion.com/v4/auth/policies \
  --header 'Accept: application/json' \
  --header 'Authorization: [Token]'
```

2. Você receberá uma resposta semelhante à seguinte:

```bash
{
  "count": 123,
  "results": [
    {
      "id": 0,
      "name": "My policy",
      "last_editor": "my_username",
      "last_modified": "2025-02-24T14:15:22Z",
      "active": true,
      "rules": [
        {
          "name": "My policy rule",
          "effect": "allow",
          "resource": "platform",
          "actions": ["access"],
          "condition": {
            "ip_address": [
              "19.34.213.23",
              "132.33.16.1/24"
            ]
          }
        }
      ]
    }
  ]
}
```

3. Copie o `id` da política que você deseja atualizar. 
4. Execute a seguinte requisição `PUT` no seu terminal, substituindo `[Token]` pelo seu [personal token](/en/documentation/products/guides/personal-tokens/) e `<id>` pelo identificador que você copiou na etapa anterior, para atualizar o status da sua política.

> Isso substitui todas as regras da política pelos novos dados fornecidos.

```bash
curl --request PUT \
  --url https://api.azion.com/v4/auth/policies/<id> \
  --header 'Accept: application/json' \
  --header 'Authorization: 123' \
  --header 'Content-Type: application/json' \
  --data '{
  "name": "My policy",
  "active": false,
  "rules": [
    {
      "name": "My policy rule",
      "effect": "allow",
      "resource": "platform",
      "actions": ["access"],
      "condition": {
        "ip_address": [
              "19.34.213.23",
              "132.33.16.1/24"
            ]
      }
    }
  ]
}'
```

Neste exemplo, usar `"active": false` desativará a regra ativa.

:::tip
Alternativamente, você pode usar uma solicitação `PATCH` para atualizar parcialmente uma política, ajustando um ou mais campos de uma política existente sem afetar outros campos.
:::

5. Você receberá uma resposta semelhante à seguinte:

```bash
{
  "state": "executed",
  "data": {
    "id": 0,
    "name": "My Policy",
    "last_editor": "my_username",
    "last_modified": "2025-02-24T14:15:22Z",
    "active": false,
    "rules": [
      {
        "name": "My policy Rule",
        "effect": "allow",
        "resource": "platform",
        "actions": ["access"],
        "condition": {
          "ip_address": [
            "19.34.213.23",
            "132.33.16.1/24"
          ]
        }
      }
    ]
  }
}
```

---

## Exclua uma política de acesso condicional por endereço IP

1. Execute a seguinte requisição `GET` no seu terminal, substituindo `[Token]` pelo seu [personal token](/en/documentation/products/guides/personal-tokens/) para listar todas as suas políticas de conta configuradas.

```bash
curl --request GET \
  --url https://api.azion.com/v4/auth/policies \
  --header 'Accept: application/json' \
  --header 'Authorization: [Token]'
```

2. Você receberá uma resposta semelhante à seguinte:

```bash
{
  "count": 123,
  "results": [
    {
      "id": 0,
      "name": "My policy",
      "last_editor": "my_username",
      "last_modified": "2025-02-24T14:15:22Z",
      "active": true,
      "rules": [
        {
          "name": "My policy rule",
          "effect": "allow",
          "resource": "platform",
          "actions": ["access"],
          "condition": {
            "ip_address": [
              "19.34.213.23",
              "132.33.16.1/24"
            ]
          }
        }
      ]
    }
  ]
}
```

3. Copie o `id` da política que você deseja excluir. 
4. Execute a seguinte requisição `DELETE` no seu terminal, substituindo `[Token]` pelo seu [personal token](/en/documentation/products/guides/personal-tokens/) e `<id>` pelo identificador que você copiou na etapa anterior, para excluir a política.

```bash
curl --request DELETE \
  --url https://api.azion.com/v4/auth/policies/<id> \
  --header 'Accept: application/json' \
  --header 'Authorization: [Token]' \
  --header 'Content-Type: application/json'
```

5. Você receberá uma resposta semelhante à seguinte:

```bash
{
  "state": "exectuted",
  "data": {
    "id": 0,
    "name": "My policy",
    "last_editor": "my_username",
    "last_modified": "2025-02-24T14:15:22Z",
    "active": true,
    "rules": [
      {
        "name": "My policy rule",
        "effect": "allow",
        "resource": "platform",
        "actions": ["access"],
        "condition": {
            "ip_address": [
              "19.34.213.23",
              "132.33.16.1/24"
            ]
        }
      }
    ]
  }
}
```

Pronto. A política foi excluída da sua conta.

:::tip
Consulte a [documentação da API da Azion](https://api.azion.com/) para saber mais sobre todos os recursos disponíveis via API.
:::