

# Políticas de segurança para APIs REST no API Gateway
<a name="apigateway-security-policies"></a>

Uma *política de segurança* é uma combinação predefinida da versão mínima do TLS e dos pacotes de criptografia oferecida pelo Amazon API Gateway. Quando seus clientes estabelecem um handshake do TLS para a API ou o nome do domínio personalizado, a política de segurança aplica a versão do TLS e o pacote de criptografia aceitos pelo API Gateway. As políticas de segurança protegem suas APIs e nomes de domínio personalizados contra problemas de segurança de rede, como violação e espionagem entre um cliente e o servidor.

O API Gateway aceita políticas de segurança legadas e políticas de segurança aprimoradas. `TLS_1_0` e `TLS_1_2` são políticas de segurança legadas. Use essas políticas de segurança para compatibilidade com versões anteriores. Qualquer política que comece com `SecurityPolicy_` é uma política de segurança aprimorada. Use essas políticas para workloads reguladas, governança avançada ou para usar criptografia pós-quântica. Ao usar uma política de segurança aprimorada, você também deve definir o modo de acesso ao endpoint para governança adicional. Para obter mais informações, consulte [Modo de acesso ao endpoint](#apigateway-security-policies-endpoint-access-mode).

## Como o API Gateway aplica políticas de segurança
<a name="apigateway-security-policies-understanding"></a>

O exemplo a seguir mostra como o API Gateway aplica políticas de segurança utilizando a política `SecurityPolicy_TLS13_1_3_2025_09` como exemplo.

A política de segurança `SecurityPolicy_TLS13_1_3_2025_09` aceita tráfego TLS 1.3 e rejeita tráfego TLS 1.2 e TLS 1.0. Para o tráfego TLS 1.3, a política de segurança aceita os seguintes pacotes de criptografia:
+ `TLS_AES_128_GCM_SHA256`
+ `TLS_AES_256_GCM_SHA384`
+ `TLS_CHACHA20_POLY1305_SHA256`

O API Gateway não aceita nenhum outro pacote de criptografia. Por exemplo, a política de segurança rejeitaria qualquer tráfego TLS 1.3 que utilize o pacote de criptografia `AES128-SHA`. Para acessar mais informações sobre as versões de TLS e criptografias aceitas, consulte [Políticas de segurança aceitas](apigateway-security-policies-list.md).

Para monitorar quais protocolos TLS e criptografias os clientes usaram para acessar seu API Gateway, você pode usar as variáveis de contexto `$context.tlsVersion` e `$context.cipherSuite` em seus logs de acesso. Para obter mais informações, consulte [Monitorar APIs REST no API Gateway](rest-api-monitor.md).

## Modo de acesso ao endpoint
<a name="apigateway-security-policies-endpoint-access-mode"></a>

O modo de acesso ao endpoint é um parâmetro adicional que você deve especificar para qualquer API REST ou nome de domínio personalizado que use uma política de segurança aprimorada começando com `SecurityPolicy_`. Você faz isso ao criar seu recurso ou ao alterar a política de segurança de uma política legada para uma política aprimorada.

Quando o modo de acesso ao endpoint é definido como `STRICT`, todas as solicitações para sua API REST ou nome de domínio personalizado devem passar pelas seguintes verificações:
+ A solicitação deve ser originada do mesmo tipo de endpoint do API Gateway que seu recurso. Pode ser de um endpoint regional, otimizado para borda ou privado.
+ Se você usar um endpoint regional ou privado, o API Gateway usará a correspondência de host SNI. Se você utilizar um endpoint otimizado para borda, o API Gateway estará em conformidade com a proteção contra “domain fronting” do CloudFront. Para acessar mais informações, consulte [Domain fronting](https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/CNAMEs.html#alternate-domain-names-restrictions).

Se alguma dessas condições não for atendida, o API Gateway rejeitará a solicitação. É recomendável utilizar o modo de acesso ao endpoint `STRICT` quando possível.

Para migrar uma API ou nome de domínio existente para usar o modo de acesso ao endpoint restrito, primeiro atualize sua política de segurança para uma política de segurança aprimorada e mantenha o modo de acesso ao endpoint definido como `BASIC`. Depois de validar seus logs de tráfego e acesso, defina o modo de acesso ao endpoint como `STRICT`. Quando você migra o modo de acesso ao endpoint de `STRICT` para`BASIC`, ele fica indisponível por cerca de 15 minutos à medida que as alterações se propagam.

Você não deve definir o modo de acesso ao endpoint como `STRICT` para determinadas arquiteturas de aplicações e, em vez disso, definir o modo de acesso ao endpoint como `BASIC`. A tabela a seguir mostra algumas arquiteturas de aplicações e uma recomendação para que sua API REST ou nome de domínio personalizado possa usar o modo de acesso ao endpoint `STRICT`.


| Arquitetura | Migração sugerida | 
| --- | --- | 
| Usar um endpoint da VPC para acessar um nome de domínio personalizado público. | Essa arquitetura utiliza tráfego do tipo entre endpoints. Recomendamos migrar para [Nomes de domínio personalizados para APIs privadas no API Gateway](apigateway-private-custom-domains.md). | 
|  Usar qualquer método para invocar uma API privada que não utilize um nome de domínio personalizado ou nomes DNS privados. | Essa arquitetura cria uma incompatibilidade entre o cabeçalho d host e o SNI utilizado no handshake TLS e não atende às restrições de “domain fronting” do CloudFront. Recomendamos que você migre sua VPC para utilizar o DNS privado. | 
| Utilizar a fragmentação de domínio para distribuir conteúdo em vários domínios ou subdomínios. | Essa arquitetura cria uma incompatibilidade entre o cabeçalho d host e o SNI utilizado no handshake TLS e não atende às restrições de “domain fronting” do CloudFront. É recomendável que você utilize `HTTP/2` e migre para longe desse antipadrão. | 

Veja a seguir algumas considerações sobre o uso do modo de acesso ao endpoint:
+ Se o modo de acesso ao endpoint de uma API ou nome de domínio for `STRICT`, você não poderá alterar o tipo de endpoint. Para alterar o tipo de endpoint, primeiro altere o modo de acesso ao endpoint para `BASIC`.
+ Depois de alterar o modo de acesso ao endpoint de `BASIC` para `STRICT`, há um atraso de 15 minutos para o API Gateway aplicar o modo de acesso restrito ao endpoint.
+ Ao alterar uma política de segurança de uma política que começa com `SecurityPolicy_` para uma política legada, você deve cancelar a definição do modo de acesso ao endpoint como `""`.

## Considerações
<a name="apigateway-security-policies-considerations"></a>

Veja a seguir algumas considerações sobre políticas de segurança para APIs REST no API Gateway:
+ Você pode importar a política de segurança em um arquivo de definição da OpenAPI. Para obter mais informações, consulte [x-amazon-apigateway-endpoint-access-modex-amazon-apigateway-security-policy](openapi-extensions-security-policy.md).
+ Sua API pode ser associada a um nome de domínio personalizado com uma política de segurança diferente da política da sua API. Quando você invoca esse nome de domínio personalizado, o API Gateway utiliza a política de segurança da API para negociar o handshake TLS. Se você desabilitar seu endpoint de API padrão, isso poderá afetar como os chamadores podem invocar sua API.
+ Se você alterar sua política de segurança, a atualização levará cerca de 15 minutos para ser concluída. É possível monitorar o `apiStatus` de sua API. No decorrer da atualização da sua API, o `apiStatus` será `UPDATING` e, quando o processo for concluído, será `AVAILABLE`. Quando o status da sua API é `UPDATING`, você ainda pode invocá-la.
+ O API Gateway aceita políticas de segurança em todas as APIs. No entanto, você só pode escolher uma política de segurança para as APIs REST. O API Gateway comporta apenas a política de segurança `TLS_1_2` para APIs HTTP ou de WebSocket.
+ Você não pode atualizar a política de segurança de uma API de `TLS_1_0` para `TLS_1_2`.
+ Algumas políticas de segurança comportam os pacotes de criptografia ECDSA e RSA. Se você usar esse tipo de política com um nome de domínio personalizado, os pacotes de criptografia corresponderão ao tipo de chave de certificado fornecido pelo cliente, RSA ou ECDSA. Se você usar esse tipo de política com uma API REST, os conjuntos de criptografia corresponderão aos pacotes aceitos com os tipos de certificados RSA.

# Políticas de segurança aceitas
<a name="apigateway-security-policies-list"></a>

As tabelas a seguir descrevem as [políticas de segurança](apigateway-security-policies.md) que podem ser especificadas para cada tipo de endpoint de API REST e tipo de nome de domínio personalizado. Essas políticas permitem que você controle as conexões de entrada. O API Gateway aceita somente o TLS 1.2 na saída. Você pode atualizar a política de segurança da sua API ou nome de domínio personalizado a qualquer momento.

As políticas que contêm o `FIPS` no título são compatíveis com o Federal Information Processing Standard (FIPS), que é um padrão do governo dos EUA e do Canadá que especifica os requisitos de segurança para módulos criptográficos que protegem informações sensíveis. Para saber mais, consulte [Federal Information Processing Standard (FIPS) 140](https://aws.amazon.com/compliance/fips/) na página *AWS Cloud Security Compliance*.

Todas as políticas do FIPS utilizam o módulo criptográfico AWS-LC validado pelo FIPS. Para saber mais, consulte a página [AWS-LC Cryptographic Module](https://csrc.nist.gov/projects/cryptographic-module-validation-program/certificate/4631) no site *NIST Cryptographic Module Validation Program*.

As políticas que contêm `PQ` no título utilizam [criptografia pós-quântica (PQC)](https://aws.amazon.com/security/post-quantum-cryptography/) para implementar algoritmos híbridos de troca de chaves para TLS a fim de garantir a confidencialidade do tráfego contra futuras ameaças de computação quântica.

As políticas que contêm `PFS` no título utilizam o [Perfect Forward Secrecy (PFS)](https://en.wikipedia.org/wiki/Forward_secrecy) para garantir que as chaves da sessão não sejam comprometidas.

As políticas que contêm `FIPS` e `PQ` em seus títulos comportam esses dois recursos.

## Políticas de segurança padrão
<a name="apigateway-security-policies-default"></a>

Quando você cria uma API REST ou domínio personalizado, o recurso recebe uma política de segurança padrão. A tabela a seguir mostra a política de segurança padrão para esses recursos.


| **Recurso** | **Nome da política de segurança padrão** | 
| --- | --- | 
| APIs regionais | TLS\$11\$10 | 
| APIs otimizadas para bordas | TLS\$11\$10 | 
| APIs privadas | TLS\$11\$12 | 
| Domínios regionais | TLS\$11\$12 | 
| Domínio otimizado para borda | TLS\$11\$12 | 
| Domínio privado | TLS\$11\$12 | 

## Políticas de segurança aceitas para APIs regionais e privadas e nomes de domínio personalizados
<a name="apigateway-security-policies-non-edge"></a>

A tabela a seguir descreve as políticas de segurança que podem ser especificadas para nomes de domínio personalizados e APIs privadas e regionais.


| **Política de segurança** | **Versões aceitas do TLS** | **Criptografias compatíveis** | 
| --- | --- | --- | 
| SecurityPolicy\$1TLS13\$11\$13\$12025\$109 | TLS1.3 |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/apigateway/latest/developerguide/apigateway-security-policies-list.html)  | 
| SecurityPolicy\$1TLS13\$11\$13\$1FIPS\$12025\$109 | TLS1.3 |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/apigateway/latest/developerguide/apigateway-security-policies-list.html)  | 
| SecurityPolicy\$1TLS13\$11\$12\$1PFS\$1PQ\$12025\$109 | TLS1.3 TLS1.2 |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/apigateway/latest/developerguide/apigateway-security-policies-list.html) [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/apigateway/latest/developerguide/apigateway-security-policies-list.html)  | 
| SecurityPolicy\$1TLS13\$11\$12\$1PQ\$12025\$109 | TLS1.3 TLS1.2 |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/apigateway/latest/developerguide/apigateway-security-policies-list.html) [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/apigateway/latest/developerguide/apigateway-security-policies-list.html)  | 
| TLS\$11\$12 | TLS1.3 TLS1.2 |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/apigateway/latest/developerguide/apigateway-security-policies-list.html) [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/apigateway/latest/developerguide/apigateway-security-policies-list.html)  | 
| TLS\$11\$10 |  TLS1.3 TLS1.2 TLS1.1 TLS1.0  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/apigateway/latest/developerguide/apigateway-security-policies-list.html) [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/apigateway/latest/developerguide/apigateway-security-policies-list.html)  | 

## Políticas de segurança aceitas para APIs otimizadas para borda e nomes de domínio personalizados
<a name="apigateway-security-policies-edge-optimized"></a>

A tabela a seguir descreve as políticas de segurança que podem ser especificadas para APIs e nomes de domínio personalizados otimizados para borda.


| **Nome da política de segurança** | **Versões aceitas do TLS** | **Criptografias compatíveis** | 
| --- | --- | --- | 
| SecurityPolicy\$1TLS13\$12025\$1EDGE | TLS1.3 |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/apigateway/latest/developerguide/apigateway-security-policies-list.html)  | 
| SecurityPolicy\$1TLS12\$1PFS\$12025\$1EDGE |  TLS1.3 TLS1.2  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/apigateway/latest/developerguide/apigateway-security-policies-list.html) [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/apigateway/latest/developerguide/apigateway-security-policies-list.html)  | 
| SecurityPolicy\$1TLS12\$12018\$1EDGE |  TLS1.3 TLS1.2  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/apigateway/latest/developerguide/apigateway-security-policies-list.html) [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/apigateway/latest/developerguide/apigateway-security-policies-list.html)  | 
| TLS\$11\$10 |  TLS1.3 TLS1.2 TLS1.1 TLS1.0  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/apigateway/latest/developerguide/apigateway-security-policies-list.html) [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/apigateway/latest/developerguide/apigateway-security-policies-list.html)  | 

## Nomes das criptografias OpenSSL e RFC
<a name="apigateway-secure-connections-openssl-rfc-cipher-names"></a>

OpenSSL e IETF RFC 5246 usam nomes diferentes para as mesmas cifras. A tabela a seguir mapeia o nome do OpenSSL para o nome do RFC para cada criptograma. Para ter mais informações, consulte [ciphers](https://docs.openssl.org/1.1.1/man1/ciphers/) na documentação do OpenSSL.


| **Nome da criptografia OpenSSL** | **Nome da criptografia RFC** | 
| --- | --- | 
| TLS\$1AES\$1128\$1GCM\$1SHA256 | TLS\$1AES\$1128\$1GCM\$1SHA256 | 
| TLS\$1AES\$1256\$1GCM\$1SHA384 | TLS\$1AES\$1256\$1GCM\$1SHA384 | 
| TLS\$1CHACHA20\$1POLY1305\$1SHA256 | TLS\$1CHACHA20\$1POLY1305\$1SHA256 | 
| ECDHE-RSA-AES128-GCM-SHA256 | TLS\$1ECDHE\$1RSA\$1WITH\$1AES\$1128\$1GCM\$1SHA256 | 
| ECDHE-RSA-AES128-SHA256 | TLS\$1ECDHE\$1RSA\$1WITH\$1AES\$1128\$1CBC\$1SHA256  | 
| ECDHE-RSA-AES128-SHA | TLS\$1ECDHE\$1RSA\$1WITH\$1AES\$1128\$1CBC\$1SHA | 
| ECDHE-RSA-AES256-GCM-SHA384 | TLS\$1ECDHE\$1RSA\$1WITH\$1AES\$1256\$1GCM\$1SHA384  | 
| ECDHE-RSA-AES256-SHA384 | TLS\$1ECDHE\$1RSA\$1WITH\$1AES\$1256\$1CBC\$1SHA384  | 
| ECDHE-RSA-AES256-SHA | TLS\$1ECDHE\$1RSA\$1WITH\$1AES\$1256\$1CBC\$1SHA | 
| AES128-GCM-SHA256 | TLS\$1RSA\$1WITH\$1AES\$1128\$1GCM\$1SHA256 | 
| AES256-GCM-SHA384 | TLS\$1RSA\$1WITH\$1AES\$1256\$1GCM\$1SHA384 | 
| AES128-SHA256 | TLS\$1RSA\$1WITH\$1AES\$1128\$1CBC\$1SHA256 | 
| AES256-SHA | TLS\$1RSA\$1WITH\$1AES\$1256\$1CBC\$1SHA | 
| AES128-SHA | TLS\$1RSA\$1WITH\$1AES\$1128\$1CBC\$1SHA | 
| DES-CBC3-SHA | TLS\$1RSA\$1WITH\$13DES\$1EDE\$1CBC\$1SHA | 

# Como alterar uma política de segurança
<a name="apigateway-security-policies-update"></a>

É possível alterar a política de segurança para sua API. Se você está enviando tráfego para as suas APIs utilizando o seu nome de domínio personalizado, a API e o nome de domínio personalizado não precisarão ter a mesma política de segurança. Quando você invoca esse nome de domínio personalizado, o API Gateway utiliza a política de segurança da API para negociar o handshake TLS. No entanto, para manter a consistência, é recomendável usar a mesma política de segurança para o seu nome de domínio personalizado e a API.

Se você alterar sua política de segurança, a atualização levará cerca de 15 minutos para ser concluída. É possível monitorar o `apiStatus` de sua API. No decorrer da atualização da sua API, o `apiStatus` será `UPDATING` e, quando o processo for concluído, será `AVAILABLE`. Durante a atualização da sua API, você ainda pode invocá-la.

------
#### [ Console de gerenciamento da AWS ]

**Como alterar a política de segurança de uma API**

1. Inicie uma sessão no console do API Gateway em [https://console.aws.amazon.com/apigateway](https://console.aws.amazon.com/apigateway).

1. Escolha uma API REST.

1. Selecione **Configurações da API** e, depois, escolha **Editar**.

1. Em **Política de segurança**, selecione uma nova política que comece com `SecurityPolicy_`.

1. Em **Modo de acesso ao endpoint**, escolha **Restrito**.

1. Escolha **Salvar alterações**.

   Implante a API novamente para que as alterações entrem em vigor. Como você alterou o modo de acesso ao endpoint para restrito, levará cerca de 15 minutos para que as alterações se propaguem totalmente.

------
#### [ AWS CLI ]

O seguinte comando [update-rest-api](https://docs.aws.amazon.com/cli/latest/reference/apigateway/update-rest-api.html) atualiza uma API para utilizar a política de segurança `SecurityPolicy_TLS13_1_3_2025_09`:

```
aws apigateway update-rest-api \
    --rest-api-id abcd1234 \
    --patch-operations '[
        {
            "op": "replace",
            "path": "/securityPolicy",
            "value": "SecurityPolicy_TLS13_1_3_2025_09"
        }, 
        {
            "op": "replace",
            "path": "/endpointAccessMode",
            "value": "STRICT"
        }
    ]'
```

A saída será exibida da seguinte forma:

```
{
    "id": "abcd1234",
    "name": "MyAPI",
    "description": "My API with a new security policy",
    "createdDate": "2025-02-04T11:47:06-08:00",
    "apiKeySource": "HEADER",
    "endpointConfiguration": {
        "types": [
            "REGIONAL"
        ],
        "ipAddressType": "dualstack"
    },
    "tags": {},
    "disableExecuteApiEndpoint": false,
    "securityPolicy": "SecurityPolicy_TLS13_1_3_2025_09",
    "endpointAccessMode": "STRICT"
    "rootResourceId": "efg456"
}
```

O comando [update-rest-api](https://docs.aws.amazon.com/cli/latest/reference/apigateway/update-rest-api.html) a seguir atualiza uma API que estava utilizando uma política de segurança aprimorada para utilizar `TLS_1_0`:

```
aws apigateway update-rest-api \
    --rest-api-id abcd1234 \
    --patch-operations '[
        {
            "op": "replace",
            "path": "/securityPolicy",
            "value": "TLS_1_0"
        }, 
        {
            "op": "replace",
            "path": "/endpointAccessMode",
            "value": ""
        }
    ]'
```

A saída será exibida da seguinte forma:

```
{
    "id": "abcd1234",
    "name": "MyAPI",
    "description": "My API with a new security policy",
    "createdDate": "2025-02-04T11:47:06-08:00",
    "apiKeySource": "HEADER",
    "endpointConfiguration": {
        "types": [
            "REGIONAL"
        ],
        "ipAddressType": "dualstack"
    },
    "tags": {},
    "disableExecuteApiEndpoint": false,
    "securityPolicy": "TLS_1_0",
    "rootResourceId": "efg456"
}
```

------