

# Criptografia de dados no Amazon API Gateway
<a name="data-protection-encryption"></a>

Proteção de dados refere-se à proteção de dados em trânsito (à medida que são transferidos para e do API Gateway) e em repouso (enquanto estão armazenados na AWS).

## Criptografia de dados em repouso no Amazon API Gateway
<a name="data-protection-at-rest"></a>

Se você optar por habilitar o armazenamento em cache para uma API REST, poderá habilitar a criptografia de cache. Para saber mais, consulte [Configurações de cache para APIs REST no API Gateway](api-gateway-caching.md).

Consulte mais informações sobre proteção de dados na publicação do blog [AWS Shared Responsibility Model and GDPR](https://aws.amazon.com/blogs/security/the-aws-shared-responsibility-model-and-gdpr/) no *Blog de segurança da AWS*.

### Criptografia e decodificação da chave privada do seu certificado
<a name="private-key"></a>

Quando você cria um nome de domínio personalizado para APIs privadas, seu certificado do ACM e chave privada são criptografados usando uma chave do KMS gerenciada pela AWS que tem o alias **aws/acm**. Você pode ver o ID da chave com esse alias no console do AWS KMS, **Chaves gerenciadas pela AWS**.

O API Gateway não acessa diretamente seus recursos do ACM. Ele usa o AWS TLS Connection Manager para proteger e acessar as chaves privadas do seu certificado. Quando você usa seu certificado do ACM para criar um nome de domínio personalizado do API Gateway para APIs privadas, o API Gateway associa seu certificado ao AWS TLS Connection Manager. Isso é feito criando uma concessão no AWS KMS em relação à sua chave gerenciada pela AWS com o prefixo **aws/acm**. Uma concessão é um instrumento de política que permite que o TLS Connection Manager usem chaves do KMS em operações de criptografia. A concessão permite que a entidade principal autorizada (TLS Connection Manager) chame as operações de concessão especificadas na chave do KMS para decifrar a chave privada do seu certificado. Em seguida, o TLS Connection Manager usa o certificado e a chave privada descriptografada (texto simples) para estabelecer uma conexão segura (sessão SSL/TLS) com clientes de serviços do API Gateway. Quando o certificado é desassociado de um nome de domínio personalizado do API Gateway para APIs privadas, a concessão é removida.

Se você quiser remover o acesso à chave do KMS, recomendamos substituir ou excluir o certificado do serviço usando o Console de gerenciamento da AWS ou o comando `update-service` na AWS CLI.

### Contexto de criptografia para o API Gateway
<a name="encryption-context"></a>

[Contexto de criptografia](https://docs.aws.amazon.com/kms/latest/developerguide/encrypt_context.html) é um conjunto opcional de pares de chave/valor que pode conter mais informações contextuais sobre o possível uso da chave privada. O AWS KMS vincula o contexto de criptografia aos dados criptografados e usa dados adicionais autenticados para permitir criptografia autenticada.

Quando suas chaves TLS são usadas com o API Gateway e o TLS Connection Manager, o nome do serviço API Gateway é incluído no contexto de criptografia usado para criptografar sua chave em repouso. A fim de verificar para qual nome de domínio personalizado do API Gateway seu certificado e sua chave privada estão sendo usados, visualize o contexto de criptografia em seus logs do CloudTrail, conforme apresentado na próxima seção, ou examine a guia **Recursos associados** no console do ACM.

Para descriptografar os dados, o mesmo contexto de criptografia é incluído na solicitação. O API Gateway usa o mesmo contexto de criptografia em todas as operações criptográficas do AWS KMS, no qual a chave é `aws:apigateway:arn` e o valor é o nome do recurso da Amazon (ARN) do recurso `PrivateDomainName` do API Gateway.

O seguinte exemplo mostra o contexto de criptografia na saída de uma operação como `CreateGrant`:

```
"constraints": {
"encryptionContextEquals": {
"aws:acm:arn": "arn:aws:acm:us-west-2:859412291086:certificate/9177097a-f0ae-4be1-93b1-19f911ea4f88",
"aws:apigateway:arn": "arn:aws:apigateway:us-west-2:859412291086:/domainnames/denytest-part1.pdx.sahig.people.aws.dev+cbaeumzjhg"
}
},
"operations": [
"Decrypt"
],
"granteePrincipal": "tlsconnectionmanager.amazonaws.com"
```

## Criptografia de dados em trânsito no Amazon API Gateway
<a name="data-protection-in-transit"></a>

As APIs criadas com o Amazon API Gateway expõem apenas endpoints HTTPS. O API Gateway não é compatível com endpoints não criptografados (HTTP).

O API Gateway gerencia os certificados dos endpoints `execute-api` padrão. Ao configurar um nome de domínio personalizado, [você especifica o certificado para o nome de domínio](how-to-custom-domains.md#custom-domain-names-certificates). Como prática recomendada, não [fixe certificados](https://docs.aws.amazon.com/acm/latest/userguide/troubleshooting-pinning.html).

Para obter maior segurança, é possível escolher uma versão mínima do protocolo TLS (Transport Layer Security) a ser aplicada ao seu domínio personalizado do API Gateway. As APIs WebSocket e HTTP são compatíveis apenas com TLS 1.2. Para saber mais, consulte [Escolher uma política de segurança para o domínio personalizado no API Gateway](apigateway-custom-domain-tls-version.md).

Também é possível configurar uma distribuição do Amazon CloudFront com um certificado SSL personalizado em sua conta e usá-la com APIs regionais. Depois, você pode configurar a política de segurança para a distribuição do CloudFront com TLS 1.1 ou superior com base nos seus requisitos de segurança e conformidade.

Para obter mais informações sobre proteção de dados, consulte [Proteger as APIs REST no API Gateway](rest-api-protect.md) e a publicação do blog [AWS Shared Responsibility Model and GDPR](https://aws.amazon.com/blogs/security/the-aws-shared-responsibility-model-and-gdpr/) no *Blog de segurança da AWS*.