

# Proteção de dados no Athena
<a name="security-data-protection"></a>

O [modelo de responsabilidade compartilhada](https://aws.amazon.com/compliance/shared-responsibility-model/)AWS se aplica à proteção de dados no . Conforme descrito nesse modelo, AWS é responsável por proteger a infraestrutura global que executa todas as Nuvem AWS. Você é responsável por manter o controle sobre o conteúdo hospedado nessa infraestrutura. Você também é responsável pelas tarefas de configuração e gerenciamento de segurança dos Serviços da AWS que usa. Para saber mais sobre a privacidade de dados, consulte as [Data Privacy FAQ](https://aws.amazon.com/compliance/data-privacy-faq/). Para saber mais sobre a proteção de dados na Europa, consulte a postagem do blog [AWS Shared Responsibility Model and RGPD](https://aws.amazon.com/blogs/security/the-aws-shared-responsibility-model-and-gdpr/) no *Blog de segurança da AWS*.

Para fins de proteção de dados, recomendamos que você proteja as credenciais da Conta da AWS e configure as contas de usuário individuais com Centro de Identidade do AWS IAM ou AWS Identity and Access Management (IAM). Dessa maneira, cada usuário receberá apenas as permissões necessárias para cumprir suas obrigações de trabalho. Recomendamos também que você proteja seus dados das seguintes formas:
+ Use uma autenticação multifator (MFA) com cada conta.
+ Use SSL/TLS para se comunicar com os recursos da AWS. Exigimos TLS 1.2 e recomendamos TLS 1.3.
+ Configure os logs de API e atividade do usuário com AWS CloudTrail. Para saber mais sobre como usar as trilhas do CloudTrail para capturar atividades da AWS, consulte [Working with CloudTrail trails](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/cloudtrail-trails.html) no *Guia do usuário do AWS CloudTrail*.
+ Use as soluções de criptografia AWS, juntamente com todos os controles de segurança padrão em Serviços da AWS.
+ Use serviços gerenciados de segurança avançada, como o Amazon Macie, que ajuda a localizar e proteger dados sensíveis armazenados no Amazon S3.
+ Se você precisar de módulos criptográficos validados pelo FIPS 140-3 ao acessar a AWS por meio de uma interface de linha de comandos ou de uma API, use um endpoint do FIPS. Para saber mais sobre os endpoints FIPS disponíveis, consulte [Federal Information Processing Standard (FIPS) 140-3](https://aws.amazon.com/compliance/fips/).

É altamente recomendável que nunca sejam colocadas informações confidenciais ou sensíveis, como endereços de e-mail de clientes, em tags ou campos de formato livre, como um campo **Nome**. Isso inclui trabalhar com a Serviços da AWS ou com outros, usando o console, a API, a AWS CLI ou os SDKs da AWS. Quaisquer dados inseridos em tags ou em campos de texto de formato livre usados para nomes podem ser usados para logs de faturamento ou de diagnóstico. Se você fornecer um URL para um servidor externo, é fortemente recomendável que não sejam incluídas informações de credenciais no URL para validar a solicitação nesse servidor.

Como uma etapa de segurança adicional, é possível usar chave de contexto da condição global [https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-calledvia](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-calledvia) para limitar as solicitações somente àquelas feitas pelo Athena. Para obter mais informações, consulte [Usar chaves de contexto CalledVia para o Athena](security-iam-athena-calledvia.md).

## Proteger vários tipos de dados
<a name="security-data-protection-types-of-data"></a>

Vários tipos de dados estão envolvidos ao usar o Athena para criar bancos de dados e tabelas. Eles incluem dados de origem armazenados na origem no Amazon S3, metadados de bancos de dados e tabelas que você cria ao executar consultas ou o crawler do AWS Glue para descobrir dados, dados de resultados de consultas e histórico de consultas. Esta seção discute cada tipo de dado e fornece orientação sobre a proteção.
+ **Dados de origem**: você armazena os dados para bancos de dados e tabelas no Amazon S3, e o Athena não os modifica. Para obter mais informações, consulte [Proteção de dados no Amazon S3](https://docs.aws.amazon.com/AmazonS3/latest/userguide/DataDurability.html) no *Guia do usuário do Amazon Simple Storage Service*. Você controla o acesso aos seus dados de origem e pode criptografá-los no Amazon S3. Você pode usar o Athena para [criar tabelas com base em conjuntos de dados criptografados no Amazon S3](creating-tables-based-on-encrypted-datasets-in-s3.md).
+ **Metadados de tabelas e bancos de dados (esquema)**: o Athena usa a tecnologia schema-on-read (esquema na leitura), o que significa que as definições de tabela são aplicadas aos dados no Amazon S3 quando o Athena executa consultas. Todos os esquemas que você definir serão automaticamente salvos, a não ser que você os exclua explicitamente. No Athena, você pode modificar os metadados do catálogo de dados usando instruções DDL. Você também pode excluir as definições de tabela e o esquema sem afetar os dados subjacentes armazenados no Amazon S3. Os metadados dos bancos de dados e das tabelas que você usa no Athena são armazenados no AWS Glue Data Catalog.

  Você pode [definir políticas de acesso granulares para bancos de dados e tabelas](fine-grained-access-to-glue-resources.md) registrados no AWS Glue Data Catalog usando o AWS Identity and Access Management (IAM). Você também pode [criptografar metadados no AWS Glue Data Catalog](https://docs.aws.amazon.com/glue/latest/dg/encrypt-glue-data-catalog.html). Se você criptografar os metadados, use [permissões para metadados criptografados](encryption.md#glue-encryption) para o acesso.
+ **Resultados e histórico de consultas, incluindo consultas salvas**: os resultados das consultas são armazenados em um local no Amazon S3 que pode ser especificado globalmente ou para cada grupo de trabalho. Se não for especificado, o Athena usará o local padrão em cada caso. Você controla o acesso aos buckets do Amazon S3 nos quais armazena os resultados das consultas e as consultas salvas. Você também pode criptografar os resultados da consulta armazenados no Amazon S3. Seus usuários devem ter as devidas permissões para acessar os locais do Amazon S3 e descriptografar os arquivos. Para obter mais informações, consulte [Criptografar os resultados de consultas do Athena armazenados no Amazon S3](encrypting-query-results-stored-in-s3.md) neste documento. 

  O Athena mantém o histórico de consultas por 45 dias. Você pode [visualizar o histórico de consultas](queries-viewing-history.md) usando as APIs do Athena, o console e a AWS CLI. Para armazenar as consultas para mais de 45 dias, salve-as. Para proteger o acesso às consultas salvas, [use os grupos de trabalho](workgroups-manage-queries-control-costs.md) no Athena, restringindo o acesso às consultas salvas somente para os usuários autorizados a visualizá-las.

**Topics**
+ [

## Proteger vários tipos de dados
](#security-data-protection-types-of-data)
+ [

# Criptografia em repouso
](encryption.md)
+ [

# Criptografia em trânsito
](encryption-in-transit.md)
+ [

# Gerenciamento de chaves
](key-management.md)
+ [

# Privacidade do tráfego entre redes
](internetwork-traffic-privacy.md)

# Criptografia em repouso
<a name="encryption"></a>

Você pode executar consultas no Amazon Athena em dados criptografados no Amazon S3 na mesma região e em um número limitado de regiões. Você também pode criptografar os resultados da consulta no Amazon S3 e os dados no Catálogo de dados do AWS Glue.

Você pode criptografar os seguintes ativos no Athena:
+ Os resultados de todas as consultas no Amazon S3, que o Athena armazena em um local conhecido como local de resultados do Amazon S3. Você pode criptografar os resultados das consultas armazenados no Amazon S3 sem considerar se o conjunto de dados subjacente está ou não criptografado no Amazon S3. Para mais informações, consulte [Criptografar os resultados de consultas do Athena armazenados no Amazon S3](encrypting-query-results-stored-in-s3.md).
+ Os dados no catálogo de dados do AWS Glue. Para mais informações, consulte [Permissões para metadados criptografados no catálogo de dados do AWS Glue](#glue-encryption).

**nota**  
Quando você usa o Athena para ler uma tabela criptografada, o Athena usa as opções de criptografia especificadas para os dados da tabela, não a opção de criptografia para os resultados da consulta. Se métodos ou chaves de criptografia diferentes forem configurados para resultados da consulta e dados da tabela, o Athena lê os dados da tabela sem usar a opção de criptografia e a chave usada para criptografar ou descriptografar os resultados da consulta.  
No entanto, se você usar o Athena para inserir dados em uma tabela que tenha dados criptografados, o Athena usa a configuração de criptografia especificada para os resultados da consulta para criptografar os dados inseridos. Por exemplo, se você especificar a criptografia `CSE_KMS` para os resultados da consulta, o Athena usa o mesmo ID de chave do AWS KMS que você usou para a criptografia dos resultados da consulta para criptografar os dados da tabela inseridos com o `CSE_KMS`.

**Topics**
+ [

## Opções de criptografia permitidas do Amazon S3
](#encryption-options-S3-and-Athena)
+ [

## Permissões para dados criptografados no Amazon S3
](#permissions-for-encrypting-and-decrypting-data)
+ [

## Permissões para metadados criptografados no catálogo de dados do AWS Glue
](#glue-encryption)
+ [

# Migração do método de criptografia CSE-KMS para o método SSE-KMS
](migrating-csekms-ssekms.md)
+ [

# Criptografar os resultados de consultas do Athena armazenados no Amazon S3
](encrypting-query-results-stored-in-s3.md)
+ [

# Criar tabelas baseadas em conjuntos de dados criptografados no Amazon S3
](creating-tables-based-on-encrypted-datasets-in-s3.md)

## Opções de criptografia permitidas do Amazon S3
<a name="encryption-options-S3-and-Athena"></a>

O Athena permite as opções de criptografia a seguir para conjuntos de dados e resultados de consulta no Amazon S3.


| Tipo de criptografia | Descrição | Suporte entre regiões | 
| --- | --- | --- | 
| [SSE-S3](https://docs.aws.amazon.com/AmazonS3/latest/userguide/UsingServerSideEncryption.html) | Server Side Encryption (SSE – Criptografia do lado do servidor) com uma chave gerenciada pelo Amazon S3. | Sim | 
| [SSE-KMS](https://docs.aws.amazon.com/AmazonS3/latest/userguide/UsingKMSEncryption.html) (recomendação) | Criptografia do lado do servidor (SSE) com uma chave do AWS Key Management Service gerenciada pelo cliente.  | Sim | 
| [CSE-KMS](https://docs.aws.amazon.com/AmazonS3/latest/userguide/UsingClientSideEncryption.html#client-side-encryption-kms-managed-master-key-intro) |  Client-Side Encryption (CSE – Criptografia do lado do cliente) com uma chave gerenciada pelo cliente AWS KMS. No Athena, essa opção requer que você use uma instrução `CREATE TABLE` com a cláusula `TBLPROPERTIES` que especifica `'has_encrypted_data'='true'` ou `'encryption_option'='CSE_KMS'` com `'kms_key'='kms_key_arn'`. Para obter mais informações, consulte [Criar tabelas baseadas em conjuntos de dados criptografados no Amazon S3](creating-tables-based-on-encrypted-datasets-in-s3.md).  | Não | 

Para obter mais informações sobre a criptografia do AWS KMS com o Amazon S3, consulte [O que é o AWS Key Management Service](https://docs.aws.amazon.com/kms/latest/developerguide/overview.html) e [Como o Amazon Simple Storage Service (Amazon S3) usa o AWS KMS](https://docs.aws.amazon.com/kms/latest/developerguide/services-s3.html) no *Guia do desenvolvedor do AWS Key Management Service*. Para obter mais informações sobre como usar o SSE-KMS ou o CSE-KMS com o Athena, consulte [Launch: Amazon Athena adds support for querying encrypted data](https://aws.amazon.com/blogs/aws/launch-amazon-athena-adds-support-for-querying-encrypted-data/) (Lançamento: o Amazon Athena adiciona suporte à consulta de dados criptografados) no *blog sobre big data da AWS*.

### Recomendações de criptografia
<a name="encryption-recommendation"></a>

Ao criptografar e descriptografar os dados das tabelas e os resultados das consultas com chaves do KMS gerenciadas pelo cliente, recomendamos o uso da criptografia SSE-KMS, em vez dos métodos de criptografia SSE-S3 ou CSE-KMS. A criptografia SSE-KMS proporciona um equilíbrio entre controle, simplicidade e performance, tornando-a o método mais recomendado ao usar chaves do KMS gerenciadas para criptografia de dados.

**Benefícios da criptografia SSE-KMS comparada ao método SSE-S3**
+ A criptografia SSE-KMS permite que você especifique e gerencie suas próprias chaves, proporcionando maior controle. É possível definir políticas de chave, gerenciar os ciclos de vida das chaves e monitorar o uso delas.

**Benefícios da criptografia SSE-KMS comparada ao método CSE-KMS**
+ A criptografia SSE-KMS dispensa a necessidade de infraestrutura adicional para criptografar e descriptografar dados, diferente do método CSE-KMS, que requer a manutenção constante de um cliente de criptografia do S3.
+ O método CSE-KMS pode apresentar questões de compatibilidade entre clientes de criptografia do S3 mais novos e mais antigos devido aos algoritmos de criptografia em constante evolução. Em oposição, isso é um problema que a criptografia SSE-KMS resolve.
+ A criptografia SSE-KMS realiza menos chamadas de API ao serviço KMS para a recuperação de chaves durante os processos de criptografia e descriptografia, proporcionando uma performance superior em comparação ao método CSE-KMS.

### Opções não compatíveis
<a name="encryption-unsupported-options"></a>

As seguintes opções de criptografia não são compatíveis:
+ SSE com chaves fornecidas pelo cliente (SSE-C).
+ Criptografia do lado do cliente usando uma chave mestra do lado do cliente.
+ Chaves assimétricas.

Para comparar as opções de criptografia do Amazon S3, consulte [Proteção de dados usando criptografia](https://docs.aws.amazon.com/AmazonS3/latest/userguide/UsingEncryption.html) no *Guia do usuário do Amazon Simple Storage Service*.

### Ferramentas para criptografia do lado do cliente
<a name="encryption-client-side-tools"></a>

 Para criptografia do lado do cliente, observe que há duas ferramentas disponíveis: 
+ [Cliente de criptografia do Amazon S3](https://docs.aws.amazon.com/AWSJavaSDK/latest/javadoc/com/amazonaws/services/s3/AmazonS3EncryptionClient.html): criptografa os dados somente para o Amazon S3 e é compatível com o Athena.
+ [AWS Encryption SDK](https://docs.aws.amazon.com/encryption-sdk/latest/developer-guide/introduction.html): o SDK pode ser usado para criptografar os dados em qualquer lugar na AWS, mas não é permitido diretamente no Athena.

Essas ferramentas não são compatíveis, e os dados que foram criptografados com uma ferramenta não podem ser descriptografados pela outra. O Athena apenas é compatível diretamente com o Cliente de criptografia do Amazon S3. Se você usar o SDK para criptografar seus dados, poderá executar consultas do Athena, mas os dados serão retornados como texto criptografado. 

Para usar o Athena para consultar dados que foram criptografados com o AWS Encryption SDK, você deve baixar e descriptografar seus dados e, depois, criptografá-los novamente usando o Cliente de criptografia do Amazon S3.

## Permissões para dados criptografados no Amazon S3
<a name="permissions-for-encrypting-and-decrypting-data"></a>

Dependendo do tipo de criptografia que você usa no Amazon S3, pode ser necessário adicionar permissões, também conhecidas como ações “Permitir”, às políticas usadas no Athena:
+ **SSE-S3**: se você usar o SSE-S3 para criptografia, os usuários do Athena não exigirão permissões adicionais nas políticas. Basta ter as devidas permissões do Amazon S3 para o local do Amazon S3 apropriado e para as ações do Athena. Para obter mais informações sobre as políticas que concedem permissões adequadas do Athena e do Amazon S3, consulte [AWSPoliticas gerenciadas pela para o Amazon Athena](security-iam-awsmanpol.md) e [Controlar o acesso ao Amazon S3 do Athena](s3-permissions.md).
+ **AWS KMS**: se você usa o AWS KMS para criptografia, os usuários do Athena devem receber permissão para executar determinadas ações do AWS KMS, além das permissões do Athena e do Amazon S3. Você permite essas ações editando a política de chaves das chaves gerenciadas pelo cliente que são usadas para criptografar os dados no Amazon S3. Para adicionar usuários de chaves às políticas do AWS KMS apropriadas, você pode usar o console do AWS KMS em [https://console.aws.amazon.com/kms](https://console.aws.amazon.com/kms). Para obter informações sobre como adicionar um usuário a uma política de chave do AWS KMS, consulte [Allows key users to use the customer managed key](https://docs.aws.amazon.com/kms/latest/developerguide/key-policies.html#key-policy-default-allow-users) no *Guia do desenvolvedor do AWS Key Management Service*.
**nota**  
Os administradores de políticas de chaves avançadas podem ajustar as políticas de chaves. `kms:Decrypt` é a ação mínima permitida para que um usuário do Athena trabalhe com um conjunto de dados criptografados. Para trabalhar com resultados da consulta criptografados, as ações permitidas mínimas são `kms:GenerateDataKey` e `kms:Decrypt`.

  Ao usar o Athena para consultar conjuntos de dados no Amazon S3 com um grande número de objetos criptografados com o AWS KMS, o AWS KMS pode realizar um controle de utilização dos resultados das consultas. Isso é mais provável quando há um grande número de objetos pequenos. O Athena rejeita solicitações de nova tentativa, mas um erro de controle de utilização ainda pode ocorrer. Se estiver trabalhando com vários objetos criptografados e enfrentar esse problema, uma opção é habilitar chaves de bucket do Amazon S3 para reduzir o número de chamadas ao KMS. Para obter mais informações, consulte [Redução do custo do SSE-KMS com chaves de bucket do Amazon S3](https://docs.aws.amazon.com/AmazonS3/latest/userguide/bucket-key.html) no *Guia do usuário do Amazon Simple Storage Service*. Outra opção é aumentar suas cotas de serviço para o AWS KMS. Para obter mais informações, consulte [Cotas](https://docs.aws.amazon.com/kms/latest/developerguide/limits.html#requests-per-second) no *Guia do desenvolvedor do AWS Key Management Service*.

Para obter informações sobre solução de problemas de permissões ao usar o Amazon S3 com o Athena, consulte a seção [Permissões](troubleshooting-athena.md#troubleshooting-athena-permissions) do tópico [Solucionar problemas no Athena](troubleshooting-athena.md).

## Permissões para metadados criptografados no catálogo de dados do AWS Glue
<a name="glue-encryption"></a>

Se você [criptografar metadados no AWS Glue Data Catalog](https://docs.aws.amazon.com/glue/latest/dg/encrypt-glue-data-catalog.html), deverá adicionar as ações `"kms:GenerateDataKey"`, `"kms:Decrypt"` e `"kms:Encrypt"` às políticas que usa para acessar o Athena. Para mais informações, consulte [Configurar o acesso do Athena aos metadados criptografados no AWS Glue Data Catalog](access-encrypted-data-glue-data-catalog.md).

# Migração do método de criptografia CSE-KMS para o método SSE-KMS
<a name="migrating-csekms-ssekms"></a>

É possível especificar a criptografia CSE-KMS de duas maneiras: durante a configuração de criptografia dos resultados da consulta do grupo de trabalho e nas configurações do lado do cliente. Para obter mais informações, consulte [Criptografar os resultados de consultas do Athena armazenados no Amazon S3](encrypting-query-results-stored-in-s3.md). Durante o processo de migração, é importante auditar os fluxos de trabalho existentes que realizam a leitura e a gravação de dados da criptografia CSE-KMS, identificar os grupos de trabalho em que a criptografia CSE-KMS está configurada e localizar as instâncias em que a criptografia CSE-KMS é definida por meio de parâmetros do lado do cliente.

## Atualização das configurações de criptografia dos resultados das consultas do grupo de trabalho
<a name="migrating-updating-workgroup-query-results-encryption"></a>

------
#### [ Console ]

**Para atualizar as configurações de criptografia no console do Athena**

1. Abra o console do Athena em [https://console.aws.amazon.com/athena/](https://console.aws.amazon.com/athena/).

1. No painel de navegação do console do Athena, escolha **Workgroups** (Grupos de trabalho).

1. Na página **Workgroups** (Grupos de trabalho), selecione o botão do grupo de trabalho que você deseja editar. 

1. Selecione **Ações**, **Editar**.

1. Abra **Configuração do resultado da consulta** e escolha **Criptografar resultados da consulta**.

1. Na seção **Tipo de criptografia**, escolha a opção de criptografia **SSE\$1KMS**.

1. Insira sua chave do KMS em **Escolha outra chave do AWS KMS (avançada)**.

1. Escolha **Salvar alterações**. O grupo de trabalho atualizado aparece na lista na página **Workgroups** (Grupos de trabalho).

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

Execute o comando apresentado a seguir para atualizar a configuração de criptografia dos resultados das consultas para a criptografia SSE-KMS no seu grupo de trabalho.

```
aws athena update-work-group \
    --work-group "my-workgroup" \
    --configuration-updates '{
        "ResultConfigurationUpdates": {
            "EncryptionConfiguration": {
                "EncryptionOption": "SSE_KMS",
                "KmsKey": "<my-kms-key>"
            }
        }
    }'
```

------

## Atualização das configurações de criptografia dos resultados de consultas do lado do cliente
<a name="migrating-updating-clientside-query-results-encryption"></a>

------
#### [ Console ]

Para atualizar suas configurações do lado do cliente para a criptografia dos resultados das consultas de CSE-KMS para SSE-KMS, consulte [Criptografar os resultados de consultas do Athena armazenados no Amazon S3](encrypting-query-results-stored-in-s3.md).

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

É possível especificar a configuração de criptografia dos resultados das consultas nas configurações do lado do cliente somente por meio do comando `start-query-execution`. Caso você execute este comando da CLI e substitua a configuração de criptografia dos resultados das consultas especificada no seu grupo de trabalho com a criptografia CSE-KMS, modifique o comando para usar `SSE_KMS` para criptografar os resultados das consultas, conforme mostrado abaixo.

```
aws athena start-query-execution \
    --query-string "SELECT * FROM <my-table>;" \
    --query-execution-context "Database=<my-database>,Catalog=<my-catalog>" \
    --result-configuration '{
        "EncryptionConfiguration": {
            "EncryptionOption": "SSE_KMS",
            "KmsKey": "<my-kms-key>"
        }
    }' \
    --work-group "<my-workgroup>"
```

------

**nota**  
Após a atualização das configurações do grupo de trabalho ou do lado do cliente, todos os novos dados inseridos por meio de consultas de gravação serão criptografados com SSE-KMS em vez de CSE-KMS. Isso ocorre porque as configurações de criptografia dos resultados das consultas também se aplicam aos novos dados inseridos nas tabelas. Além disso, os resultados das consultas, os metadados e os arquivos de manifesto do Athena são criptografados com SSE-KMS.
O Athena ainda consegue realizar a leitura de tabelas com a propriedade de tabela `has_encrypted_data`, mesmo quando existe uma combinação de objetos criptografados com CSE-KMS e SSE-S3/SSE-KMS.

# Conversão dos dados da tabela criptografados com CSE-KMS para SSE-KMS
<a name="convert-csekms-table-ssekms"></a>

No momento, caso seus fluxos de trabalho usem CSE-KMS para a criptografia de dados em tabelas, faça a transição para a criptografia SSE-KMS seguindo as etapas apresentadas abaixo.

## Pré-requisito
<a name="convert-csekms-table-ssekms-preq"></a>

Caso você ainda esteja gravando dados com um grupo de trabalho CSE-KMS ou com configurações do lado do cliente, siga as etapas apresentadas em [Migração do método de criptografia CSE-KMS para o método SSE-KMS](migrating-csekms-ssekms.md) para realizar a atualização para SSE-KMS. Isso impede que novos dados criptografados com CSE-KMS sejam adicionados por qualquer outro fluxo de trabalho que realize gravação nas tabelas durante o processo de migração.

## Migrações de dados
<a name="convert-csekms-table-ssekms-migrat"></a>

1. Confirme se a propriedade `has_encrypted_data` da tabela está definida como `true`. Essa propriedade indica que a tabela pode conter dados criptografados com CSE-KMS. Porém, vale ressaltar que essa propriedade pode estar presente mesmo em tabelas sem dados efetivamente criptografados com CSE-KMS.

------
#### [ Console ]

   1. Abra o console do Athena em [https://console.aws.amazon.com/athena/](https://console.aws.amazon.com/athena/).

   1. Escolha **Iniciar editor de consultas**.

   1. No lado esquerdo do editor, em **Banco de dados**, selecione o banco de dados que você deseja consultar.

   1. No editor de consultas, execute a consulta apresentada a seguir para verificar o valor definido para a propriedade `has_encrypted_data table`.

      ```
      SHOW TBLPROPERTIES <table_name>('has_encrypted_data');
      ```

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

   Inicie uma consulta no Athena que retorne o valor da propriedade `has_encrypted_data` na tabela, como demonstrado no exemplo a seguir.

   ```
   aws athena start-query-execution \
       --query-string "SHOW TBLPROPERTIES <table-name>('has_encrypted_data');" \
       --work-group "<my-workgroup>"
   ```

   Recupere os resultados da consulta para verificar o valor da propriedade `has_encrypted_data` da tabela para a tabela, conforme demonstrado no exemplo a seguir.

   ```
   aws athena get-query-results --query-execution-id <query-execution-id-from-previous-step>
   ```

------

1. Para cada objeto na tabela que esteja criptografado com CSE-KMS:

   1. Faça o download do objeto do S3 usando o cliente de criptografia do S3 e realize a descriptografia. A seguir, apresentamos um exemplo com o AWS SDK para Java V2.

      **Importações**

      ```
      import software.amazon.awssdk.core.ResponseInputStream;
      import software.amazon.awssdk.services.s3.model.GetObjectRequest;
      import software.amazon.awssdk.services.s3.model.GetObjectResponse;
      import software.amazon.encryption.s3.S3EncryptionClient;
      import software.amazon.encryption.s3.materials.Keyring;
      import software.amazon.encryption.s3.materials.KmsDiscoveryKeyring;
      ```

      Código

      ```
      final Keyring kmsDiscoveryKeyRing = KmsDiscoveryKeyring.builder()
              .enableLegacyWrappingAlgorithms(true)
              .build();
      final S3EncryptionClient s3EncryptionClient = S3EncryptionClient.builder()
              .enableLegacyUnauthenticatedModes(true)
              .keyring(kmsDiscoveryKeyRing)
              .build();
      
      GetObjectRequest getObjectRequest = GetObjectRequest.builder()
              .bucket("amzn-s3-demo-bucket")
              .key("<my-key>")
              .build();
      
      ResponseInputStream<GetObjectResponse> s3Object = s3EncryptionClient.getObject(getObjectRequest);
      ```

   1. Faça o upload do objeto para o S3 com o mesmo nome e protegido por criptografia SSE-KMS. A seguir, apresentamos um exemplo com o AWS SDK para Java V2.

      **Importações**

      ```
      import software.amazon.awssdk.core.ResponseInputStream;
      import software.amazon.awssdk.core.sync.RequestBody;
      import software.amazon.awssdk.services.s3.S3Client;
      import software.amazon.awssdk.services.s3.model.PutObjectRequest;
      import software.amazon.awssdk.services.s3.model.ServerSideEncryption;
      ```

      **Código**

      ```
      final S3Client s3Client = S3Client.builder()
              .build();
                  
      PutObjectRequest putObjectRequest = PutObjectRequest.builder()
              .bucket("amzn-s3-demo-bucket")
              .key("<my-key>")
              .serverSideEncryption(ServerSideEncryption.AWS_KMS)
              .ssekmsKeyId("<my-kms-key>")
              .build();
      
      s3Client.putObject(putObjectRequest, RequestBody.fromBytes(s3Object.readAllBytes()));
      ```

## Após a migração
<a name="convert-csekms-table-ssekms-post-migrat"></a>

Após realizar novamente a criptografia com êxito em todos os arquivos com criptografia CSE-KMS na tabela, realize as etapas apresentadas a seguir. 

1. Remova a propriedade `has_encrypted_data` da tabela.

------
#### [ Console ]

   1. Abra o console do Athena em [https://console.aws.amazon.com/athena/](https://console.aws.amazon.com/athena/).

   1. Escolha **Iniciar editor de consultas**.

   1. No lado esquerdo do editor, em **Banco de dados**, selecione o banco de dados que você deseja consultar.

   1. No editor de consultas, execute a consulta apresentada a seguir para sua tabela.

      ```
      ALTER TABLE <database-name>.<table-name> UNSET TBLPROPERTIES ('has_encrypted_data')
      ```

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

   Execute o comando apresentado a seguir para remover a propriedade `has_encrypted_data` da sua tabela.

   ```
   aws athena start-query-execution \
       --query-string "ALTER TABLE <database-name>.<table-name> UNSET TBLPROPERTIES ('has_encrypted_data');" \
       --work-group "<my-workgroup>"
   ```

------

1. Atualize seus fluxos de trabalho para usar um cliente básico do S3 em vez de um cliente de criptografia do S3 e, em seguida, especifique a criptografia SSE-KMS para gravações de dados. 

# Criptografar os resultados de consultas do Athena armazenados no Amazon S3
<a name="encrypting-query-results-stored-in-s3"></a>

Você pode configurar a criptografia de resultados de consultas usando o console do Athena ou o JDBC ou ODBC. Grupos de trabalhos permitem que você reforce a criptografia dos resultados de consultas.

**nota**  
Quando você criptografa os resultados de uma consulta, o Athena criptografa todos os objetos gravados pela consulta. Isso inclui os resultados de instruções como `INSERT INTO`, `UPDATE` e as consultas de dados no formato do Iceberg ou em outros formatos.

No console, você pode definir a configuração para criptografia dos resultados das consultas de duas formas:
+ **Configurações do lado do cliente**: quando você usa **Settings** (Configurações) no console ou as operações de API para indicar que deseja criptografar os resultados das consultas, esse procedimento é conhecido como “usar as configurações do lado do cliente”. As configurações no lado do cliente incluem o local dos resultados da consulta e a criptografia. Se você especificá-los, elas serão usadas, a menos que sejam substituídas por configurações do grupo de trabalho. 
+ **Configurações do grupo de trabalho**: quando você [cria ou edita um grupo de trabalho](creating-workgroups.md) e seleciona o campo **Override client-side settings** (Substituir configurações do lado do cliente), todas as consultas executadas nesse grupo de trabalho usam as configurações de local de resultados da consulta do grupo. Para obter mais informações, consulte [Override client-side settings (Substituir configurações no lado do cliente)](workgroups-settings-override.md). 

**Para criptografar os resultados das consultas armazenados no Amazon S3 usando o console**
**Importante**  
Se o seu grupo de trabalho estiver com o campo **Override client-side settings (Sobrepor configurações no lado do cliente)**, todas as consultas no grupo de trabalho usarão as configurações do grupo de trabalho. A configuração de criptografia e o local dos resultados das consultas especificados na guia **Configurações** no console do Athena por operações da API e pelos drivers JDBC e ODBC não são usados. Para obter mais informações, consulte [Override client-side settings (Substituir configurações no lado do cliente)](workgroups-settings-override.md).

1. No console do Athena, escolha **Settings** (Configurações).  
![\[A guia Configurações do editor de consulta do Athena.\]](http://docs.aws.amazon.com/pt_br/athena/latest/ug/images/settings.png)

1. Escolha **Gerenciar**.

1. Em **Location of query result** (Local do resultado da consulta), insira ou escolha um caminho do Amazon S3. Esse é o local do Amazon S3 em que os resultados da consulta são armazenados.

1. Escolha **Encrypt query results**.  
![\[A opção Criptografar resultados da consulta na página Gerenciar configurações do console do Athena.\]](http://docs.aws.amazon.com/pt_br/athena/latest/ug/images/encrypt-query-results.png)

1. Para **Encryption type**, escolha **CSE-KMS**, **SSE-KMS** ou **SSE-S3**. Desses três, o **CSE-KMS** oferece o nível mais alto de criptografia e o **SSE-S3** o mais baixo.

1. Se você escolher **SSE-KMS** ou **CSE-KMS**, especifique a chave do AWS KMS.
   + Em **Escolher uma chave do AWS KMS**, se sua conta tiver acesso a uma chave gerenciada pelo cliente existente do AWS KMS, escolha o respectivo alias ou insira um ARN de chave do AWS KMS.
   +  Se sua conta não tiver acesso a uma chave gerenciada pelo cliente existente, escolha **Criar uma chave do AWS KMS** e abra o [console do AWS KMS](https://console.aws.amazon.com/kms). Para obter mais informações, consulte [Criação de chaves](https://docs.aws.amazon.com/kms/latest/developerguide/create-keys.html) *Guia do desenvolvedor do AWS Key Management Service*.
**nota**  
O Athena permite apenas chaves simétricas para leitura e gravação de dados.

1. Volte para o console do Athena e escolha a chave que você criou por alias ou ARN. 

1. Escolha **Salvar**.

## Criptografar os resultados de consultas do Athena quando você usa JDBC ou ODBC
<a name="encrypting-query-results-stored-in-s3-jdbc-odbc"></a>

Se você se conectar usando o driver JDBC ou ODBC, configure as opções de driver para especificar o tipo de criptografia a ser usado e o local do diretório de preparação do Amazon S3. Para configurar um driver JDBC ou ODBC para criptografar os resultados das consultas usando um dos protocolos de criptografia compatíveis com o Athena, consulte [Conectar ao Amazon Athena com drivers JDBC e ODBC](athena-bi-tools-jdbc-odbc.md).

# Criar tabelas baseadas em conjuntos de dados criptografados no Amazon S3
<a name="creating-tables-based-on-encrypted-datasets-in-s3"></a>

O Athena pode ler e gravar tabelas cujos conjuntos de dados subjacentes são criptografados com SSE-S3, SSE-KMS ou CSE-KMS. Dependendo da opção de criptografia usada para os dados da tabela e do tipo de consulta executada, é possível que você precise especificar algumas propriedades adicionais da tabela para ler e gravar dados criptografados.

## Leitura de tabelas criptografadas com SSE-S3/SSE-KMS
<a name="reading-sse-s3-sse-kms-encrypted-tables"></a>

Nenhuma propriedade de tabela adicional precisa ser especificada na criação de tabelas para ler conjuntos de dados criptografados com SSE-S3/SSE-KMS. O Amazon S3 manipula a descriptografia dos objetos SSE automaticamente.

## Leitura de tabelas criptografadas com CSE-KMS
<a name="reading-cse-kms-encrypted-tables"></a>

Há dois conjuntos diferentes de propriedades de tabela que podem ser especificados para que o Athena leia conjuntos de dados criptografados com CSE-KMS:
+ Uso das propriedades `encryption_option` e `kms_key` da tabela (recomendado)
+ Uso da propriedade `has_encrypted_data` da tabela

**Importante**  
Se você usa o Amazon EMR com o EMRFS para carregar arquivos Parquet criptografados com CSE-KMS, deve desabilitar os carregamentos multipart definindo `fs.s3n.multipart.uploads.enabled` como `false`. Se você não fizer isso, o Athena não poderá determinar o tamanho do arquivo Parquet, e um erro **HIVE\$1CANNOT\$1OPEN\$1SPLIT** será emitido. Para obter mais informações, consulte [Configure multipart upload for Amazon S3](https://docs.aws.amazon.com/emr/latest/ManagementGuide/emr-plan-upload-s3.html#Config_Multipart) (Configurar o carregamento fracionado no Amazon S3) no *Guia de gerenciamento do Amazon EMR*.

### Uso das propriedades encryption\$1option e kms\$1key da tabela
<a name="using-encryption-option-and-kms-key-table-properties"></a>

Em uma instrução [CREATE TABLE](create-table.md), use a cláusula `TBLPROPERTIES` que especifica `encryption_option='CSE_KMS'` e `kms_key='aws_kms_key_arn'`, conforme mostrado no exemplo a seguir.

```
CREATE EXTERNAL TABLE 'my_encrypted_data' (
   `n_nationkey` int,
   `n_name` string,
   `n_regionkey` int,
   `n_comment` string)
ROW FORMAT SERDE
   'org.apache.hadoop.hive.ql.io.parquet.serde.ParquetHiveSerDe'
STORED AS INPUTFORMAT
   'org.apache.hadoop.hive.ql.io.parquet.MapredParquetInputFormat'
LOCATION
   's3://amzn-s3-demo-bucket/folder_with_my_encrypted_data/'
TBLPROPERTIES (
    'encryption_option' = 'CSE_KMS',
    'kms_key' = 'arn:aws:kms:us-east-1:012345678901:key/my_kms_key')
```

Quando essas propriedades são configuradas:
+ O Athena pode ler objetos criptografados com CSE-KMS criados pelos clientes de criptografia V1, V2 ou V3 do Amazon S3.
+ O Athena usará a chave do AWS KMS em `kms_key` para descriptografar os dados do CSE-KMS. Se algum objeto for criptografado com outra chave do AWS KMS, a consulta falhará.
+ O Athena ainda pode ler objetos criptografados com SSE-S3 e SSE-KMS, embora não seja recomendável misturar objetos criptografados do lado do servidor e do lado do cliente.

### Uso da propriedade has\$1encrypted\$1data a tabela
<a name="using-has-encrypted-data-table-property"></a>

Em uma instrução [CREATE TABLE](create-table.md), use a cláusula `TBLPROPERTIES` que especifica `has_encrypted_data='true'`, conforme mostrado no exemplo a seguir.

```
CREATE EXTERNAL TABLE 'my_encrypted_data' (
   `n_nationkey` int,
   `n_name` string,
   `n_regionkey` int,
   `n_comment` string)
ROW FORMAT SERDE
   'org.apache.hadoop.hive.ql.io.parquet.serde.ParquetHiveSerDe'
STORED AS INPUTFORMAT
   'org.apache.hadoop.hive.ql.io.parquet.MapredParquetInputFormat'
LOCATION
   's3://amzn-s3-demo-bucket/folder_with_my_encrypted_data/'
TBLPROPERTIES (
    'has_encrypted_data' = 'true')
```

Quando a propriedade has\$1encrypted\$1data da tabela é especificada:
+ O Athena só pode ler objetos criptografados com CSE-KMS criados pelo cliente de criptografia V1 do Amazon S3.
+ O Athena inferirá a chave do AWS KMS usada para criptografar o objeto CSE-KMS dos metadados do objeto, e depois usará essa chave para descriptografar o objeto.
+ O Athena ainda pode ler objetos criptografados com SSE-S3 e SSE-KMS, embora não seja recomendável misturar objetos criptografados do lado do servidor e do lado do cliente.

**nota**  
Quando `encryption_option` e `kms_key` são especificados junto com `has_encrypted_data`, as propriedades `encryption_option` e `kms_key` da tabela têm precedência, e `has_encrypted_data` é ignorado.

Ao usar o console do Athena para [criar uma tabela usando um formulário](data-sources-glue-manual-table.md) e especificar o local da tabela, selecione a opção **Conjunto de dados criptografado** para adicionar a propriedade `has_encrypted_data='true'` à tabela.

![\[Selecionar Encrypted data set (Conjunto de dados criptografado) no formulário “Add table” (Adicionar tabela)\]](http://docs.aws.amazon.com/pt_br/athena/latest/ug/images/add-table-form-encrypted-option.png)


Na lista de tabelas do console do Athena, as tabelas criptografadas com CSE-KMS com `has_encrypted_data='true'` exibem um ícone em forma de chave.

![\[Ícone de tabela criptografada\]](http://docs.aws.amazon.com/pt_br/athena/latest/ug/images/tables-list-encrypted-table-icon.png)


## Gravação de dados criptografados com SSE-S3/SSE-KMS/CSE-KMS
<a name="writing-sse-s3-sse-kms-cse-kms-encrypted-data"></a>

Por padrão, os arquivos de dados recém-inseridos serão criptografados usando a configuração de criptografia dos resultados da consulta especificados no grupo de trabalho do Athena. Para gravar dados de tabela com uma configuração de criptografia diferente da configuração de criptografia dos resultados da consulta, você precisará adicionar algumas propriedades adicionais da tabela.

Em uma instrução [CREATE TABLE](create-table.md), use a cláusula `TBLPROPERTIES` que especifica `encryption_option='SSE_S3 | SSE_KMS | CSE_KMS'` e `kms_key='aws_kms_key_arn'`, conforme mostrado no exemplo a seguir.

```
CREATE EXTERNAL TABLE 'my_encrypted_data' (
   `n_nationkey` int,
   `n_name` string,
   `n_regionkey` int,
   `n_comment` string)
ROW FORMAT SERDE
   'org.apache.hadoop.hive.ql.io.parquet.serde.ParquetHiveSerDe'
STORED AS INPUTFORMAT
   'org.apache.hadoop.hive.ql.io.parquet.MapredParquetInputFormat'
LOCATION
   's3://amzn-s3-demo-bucket/folder_with_my_encrypted_data/'
TBLPROPERTIES (
    'encryption_option' = 'SSE_KMS',
    'kms_key' = 'arn:aws:kms:us-east-1:012345678901:key/my_kms_key')
```

Todos os dados recém-inseridos serão criptografados usando a configuração de criptografia especificada pelas propriedades da tabela, em vez de usar a configuração de criptografia dos resultados da consulta no grupo de trabalho.

## Condições e limitações
<a name="considerations-and-limitations"></a>

Ao escrever e ler conjuntos de dados criptografados, considere os pontos a seguir.
+ As propriedades `has_encrypted_data`, `encryption_option` e `kms_key` da tabela só podem ser usadas com tabelas do Hive.
+ Ao criar uma tabela com dados criptografados com CSE-KMS, recomendamos que você garanta que todos os dados sejam criptografados com a mesma chave do AWS KMS.
+ Ao criar uma tabela com dados criptografados com CSE-KMS, recomendamos que você garanta que todos os dados sejam criptografados com CSE-KMS e que não haja uma mistura de objetos não criptografados com CSE-KMS e CSE-KMS.

# Criptografia em trânsito
<a name="encryption-in-transit"></a>

Além de criptografar os dados em repouso no Amazon S3, o Amazon Athena usa a criptografia Transport Layer Security (TLS) para os dados em trânsito entre o Athena e o Amazon S3, e entre o Athena e as aplicações dos clientes que o acessam.

Você deve permitir apenas conexões criptografadas por HTTPS (TLS) usando [https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements_condition_operators.html#Conditions_Boolean](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements_condition_operators.html#Conditions_Boolean) nas políticas do IAM no bucket do Amazon S3.

Os resultados de consultas que transmitem para clientes JDBC ou ODBC são criptografados usando TLS. Para obter informações sobre as versões mais recentes dos drivers JDBC e ODBC e as respectivas documentações, consulte [Conectar ao Amazon Athena com JDBC](connect-with-jdbc.md) e [Conectar ao Amazon Athena com ODBC](connect-with-odbc.md).

Para conectores de fonte de dados federada do Athena, a compatibilidade com criptografia em trânsito usando TLS depende do conector individual. Para obter informações, consulte a documentação dos [conectores de fonte de dados](connectors-available.md) individuais.

# Gerenciamento de chaves
<a name="key-management"></a>

O Amazon Athena é compatível com o AWS Key Management Service (AWS KMS) para criptografar conjuntos de dados no Amazon S3 e resultados das consultas do Athena. O AWS KMS usa as chaves gerenciadas pelo cliente para criptografar os objetos do Amazon S3 e aplica a [criptografia envelopada](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#enveloping). 

No AWS KMS, você pode realizar as seguintes ações:
+  [Criar chaves](https://docs.aws.amazon.com/kms/latest/developerguide/create-keys.html) 
+  [Importe seu próprio material de chave para novas chaves gerenciadas pelo cliente](https://docs.aws.amazon.com/kms/latest/developerguide/importing-keys.html) 

**nota**  
O Athena permite apenas chaves simétricas para leitura e gravação de dados.

Para obter mais informações, consulte [O que é o AWS Key Management Service](https://docs.aws.amazon.com/kms/latest/developerguide/overview.html) no *Guia do desenvolvedor do AWS Key Management Service* e [Como o Amazon Simple Storage Service usa o AWS KMS](https://docs.aws.amazon.com/kms/latest/developerguide/services-s3.html). Para visualizar as chaves na sua conta que a AWS cria e gerencia para você, no painel de navegação, escolha **Chaves gerenciadas pela AWS**.

Se você fizer upload ou acessar objetos criptografados por SSE-KMS, use o Signature versão 4 da AWS para maior segurança. Para obter mais informações, consulte [Especificar a versão da assinatura na autenticação de solicitações](https://docs.aws.amazon.com/AmazonS3/latest/userguide/UsingAWSSDK.html#specify-signature-version) no *Guia do usuário do Amazon Simple Storage Service*.

Se suas workloads do Athena criptografam uma grande quantidade de dados, você poderá usar as chaves de bucket do Amazon S3 para reduzir custos. Para obter mais informações, consulte [Redução do custo do SSE-KMS com chaves de bucket do Amazon S3](https://docs.aws.amazon.com/AmazonS3/latest/userguide/bucket-key.html) no *Guia do usuário do Amazon Simple Storage Service*.

# Privacidade do tráfego entre redes
<a name="internetwork-traffic-privacy"></a>

O tráfego é protegido entre o Athena e as aplicações on-premises e entre o Athena e o Amazon S3. Por padrão, o tráfego entre o Athena e outros serviços, como AWS Glue e AWS Key Management Service, usa HTTPS.
+ **Para o tráfego entre o Athena e os clientes e as aplicações on-premises**, os resultados das consultas transmitidos para os clientes JDBC ou ODBC são criptografados usando Transport Layer Security (TLS).

  Você pode usar uma das opções de conectividade entre sua rede privada e a AWS: 
  + Uma conexão Site-to-Site VPN Site-to-Site VPN. Para obter mais informações, consulte [O que é o Site-to-Site VPN Site-to-Site VPN?](https://docs.aws.amazon.com/vpn/latest/s2svpn/VPC_VPN.html) no *Manual do usuário do AWS Site-to-Site VPN*.
  + Uma conexão do Direct Connect. Para obter mais informações, consulte [O que é o Direct Connect](https://docs.aws.amazon.com/directconnect/latest/UserGuide/Welcome.html) no *Guia do usuário do Direct Connect*.
+ **Para o tráfego entre o Athena e os buckets do Amazon S3**, o Transport Layer Security (TLS) criptografa os objetos em trânsito entre o Athena e o Amazon S3, e entre o Athena e as aplicações dos clientes que o acessam. Você deve permitir somente conexões por HTTPS (TLS) usando [https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements_condition_operators.html#Conditions_Boolean](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements_condition_operators.html#Conditions_Boolean) nas políticas do IAM de bucket do Amazon S3. Embora, no momento, o Athena use o endpoint público para acessar dados nos buckets do Amazon S3, isso não significa que os dados sejam transmitidos pela Internet pública. Todo o tráfego entre o Athena e o Amazon S3 é roteado pelo AWS e é criptografado com TLS.
+ **Programas de conformidade**: o Amazon Athena está em conformidade com vários programas de conformidade da AWS, incluindo SOC, PCI, FedRAMP e outros. Para obter mais informações, consulte [Serviços da AWS no escopo por programa de conformidade](https://aws.amazon.com/compliance/services-in-scope/). 