

# Protección de los datos en Athena
<a name="security-data-protection"></a>

El [modelo de responsabilidad compartida](https://aws.amazon.com/compliance/shared-responsibility-model/) de AWS se aplica a la protección de datos en . Como se describe en este modelo, AWS es responsable de proteger la infraestructura global que ejecuta toda la Nube de AWS. Eres responsable de mantener el control sobre el contenido alojado en esta infraestructura. También eres responsable de las tareas de administración y configuración de seguridad para los Servicios de AWS que utiliza. Para obtener más información sobre la privacidad de los datos, consulte las [Preguntas frecuentes sobre la privacidad de datos](https://aws.amazon.com/compliance/data-privacy-faq/). Para obtener información sobre la protección de datos en Europa, consulte la publicación de blog sobre el [Modelo de responsabilidad compartida de AWS y GDPR](https://aws.amazon.com/blogs/security/the-aws-shared-responsibility-model-and-gdpr/) en el * Blog de seguridad de AWS*.

Con fines de protección de datos, recomendamos proteger las credenciales de la Cuenta de AWS y configurar cuentas de usuario individuales con AWS IAM Identity Center o AWS Identity and Access Management (IAM). De esta manera, solo se otorgan a cada usuario los permisos necesarios para cumplir sus obligaciones laborales. También recomendamos proteger sus datos de la siguiente manera:
+ Utiliza la autenticación multifactor (MFA) en cada cuenta.
+ Utiliza SSL/TLS para comunicarse con los recursos de AWS. Exigimos TLS 1.2 y recomendamos TLS 1.3.
+ Configure los registros de API y de actividad de los usuarios con AWS CloudTrail. Para obtener información sobre cómo utilizar registros de seguimiento de CloudTrail para capturar actividades de AWS, consulte [Working with CloudTrail trails](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/cloudtrail-trails.html) en la *Guía del usuario de AWS CloudTrail*.
+ Utiliza las soluciones de cifrado de AWS, junto con todos los controles de seguridad predeterminados dentro de los servicios de Servicios de AWS.
+ Utiliza servicios de seguridad administrados avanzados, como Amazon Macie, que lo ayuden a detectar y proteger la información confidencial almacenada en Amazon S3.
+ Si necesita módulos criptográficos validados FIPS 140-3 al acceder a AWS a través de una interfaz de la línea de comandos o una API, utiliza un punto de conexión de FIPS. Para obtener más información sobre los puntos de conexión de FIPS disponibles, consulte [Estándar de procesamiento de la información federal (FIPS) 140-3](https://aws.amazon.com/compliance/fips/).

Se recomienda encarecidamente no introducir nunca información confidencial o sensible, como por ejemplo, direcciones de correo electrónico de clientes, en etiquetas o campos de formato libre, tales como el campo **Nombre**. Incluye las situaciones en las que debe trabajar con otros Servicios de AWS a través de la consola, la API, la AWS CLI o los SDK de AWS. Cualquier dato que introduzca en etiquetas o campos de formato libre utilizados para los nombres se pueden emplear para los registros de facturación o diagnóstico. Si proporciona una URL a un servidor externo, recomendamos encarecidamente que no incluya información de credenciales en la URL a fin de validar la solicitud para ese servidor.

Como paso de seguridad adicional, puede utilizar la clave de contexto de condición 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 las solicitudes únicamente a las hechas desde Athena. Para obtener más información, consulte [Uso de las claves de contexto CalledVia para Athena](security-iam-athena-calledvia.md).

## Protección de varios tipos de datos
<a name="security-data-protection-types-of-data"></a>

Intervienen varios tipos de datos cuando se utiliza Athena para crear bases de datos y tablas. Estos tipos de datos incluyen los datos de origen almacenados en Amazon S3, metadatos para bases de datos y tablas que se crean al ejecutar consultas o el rastreador de AWS Glue para detectar datos, datos de resultados de consultas e historial de consultas. En esta sección se analiza cada tipo de datos y se ofrece orientación sobre cómo protegerlo.
+ **Datos de origen**: los datos de las bases de datos y tablas se almacenan en Amazon S3 y Athena no los modifica. Para obtener más información, consulte [Protección de datos en Simple Storage Service (Amazon S3)](https://docs.aws.amazon.com/AmazonS3/latest/userguide/DataDurability.html) en la *Guía del usuario de Amazon Simple Storage Service*. Usted controla el acceso a sus datos de origen y puede cifrarlos en Amazon S3. Puede utilizar Athena para [crear tablas basadas en conjuntos de datos cifrados en Amazon S3](creating-tables-based-on-encrypted-datasets-in-s3.md).
+ **Base de datos y metadatos de tabla (esquema)**: Athena utiliza tecnología de lectura de esquema, lo que significa que las definiciones de tabla se aplican a los datos de Amazon S3 cuando Athena ejecuta consultas. Cualquier esquema que defina se guardará automáticamente a menos que lo elimine explícitamente. En Athena, puede modificar los metadatos del catálogo de datos con instrucciones DDL. También puede eliminar las definiciones y los esquemas de las tablas sin que los datos subyacentes almacenados en Amazon S3 se vean afectados. Los metadatos de las bases de datos y tablas que se utilizan en Athena se almacenan en el AWS Glue Data Catalog.

  Puede [definir políticas de acceso detallado a bases de datos y tablas](fine-grained-access-to-glue-resources.md) registradas en AWS Glue Data Catalog mediante AWS Identity and Access Management (IAM). También puede [cifrar los metadatos en AWS Glue Data Catalog](https://docs.aws.amazon.com/glue/latest/dg/encrypt-glue-data-catalog.html). Si cifra los metadatos, para el acceso utilice los [permisos para metadatos cifrados](encryption.md#glue-encryption).
+ **Resultados de consulta e historial de consultas, incluidas las consultas guardadas**: los resultados de las consultas se almacenan en una ubicación en Amazon S3 que puede elegir especificar globalmente o para cada grupo de trabajo. Si no se especifica, Athena utiliza la ubicación predeterminada en cada caso. Usted controla el acceso a los buckets de Amazon S3 donde almacena los resultados de las consultas y las consultas guardadas. Además, puede elegir cifrar los resultados de la consulta que almacena en Amazon S3. Sus usuarios deben tener los permisos adecuados para obtener acceso a las ubicaciones de Amazon S3 y descifrar archivos. Para obtener más información, consulte [Cifrado de los resultados de las consultas de Athena en Amazon S3](encrypting-query-results-stored-in-s3.md) en este documento. 

  Athena conserva el historial de consultas durante 45 días. Puede [ver el historial de consultas](queries-viewing-history.md) utilizando las API Athena, en la consola y con AWS CLI. Para almacenar las consultas durante más de 45 días, guárdelas. Para proteger el acceso a las consultas guardadas, [utilice grupos de trabajo](workgroups-manage-queries-control-costs.md) en Athena y restrinja el acceso a las consultas guardadas solo a los usuarios que estén autorizados a verlas.

**Topics**
+ [

## Protección de varios tipos de datos
](#security-data-protection-types-of-data)
+ [

# Cifrado en reposo
](encryption.md)
+ [

# Cifrado en tránsito
](encryption-in-transit.md)
+ [

# Administración de claves
](key-management.md)
+ [

# Privacidad del tráfico entre redes
](internetwork-traffic-privacy.md)

# Cifrado en reposo
<a name="encryption"></a>

Puede ejecutar consultas en Amazon Athena sobre datos cifrados en Amazon S3 en la misma región y en un número limitado de regiones. También puede cifrar los resultados de la consulta en Amazon S3, y los datos del catálogo de datos de AWS Glue.

Puede cifrar los siguientes recursos en Athena:
+ Los resultados de todas las consultas en Amazon S3, que Athena almacena en una ubicación conocida como la ubicación de resultados de Amazon S3. Puede cifrar los resultados de consultas almacenados en Amazon S3 tanto si el conjunto de datos subyacente está cifrado en Amazon S3 como si no. Para obtener más información, consulte [Cifrado de los resultados de las consultas de Athena en Amazon S3](encrypting-query-results-stored-in-s3.md).
+ Contenido del catálogo de datos de AWS Glue Para obtener más información, consulte [Permisos para metadatos cifrados en el catálogo de datos de AWS Glue](#glue-encryption).

**nota**  
Cuando se utiliza Athena para leer una tabla cifrada, Athena utiliza las opciones de cifrado especificadas para los datos de la tabla, no la opción de cifrado para los resultados de la consulta. Si se configuran métodos o claves de cifrado independientes para los resultados de la consulta y los datos de la tabla, Athena lee los datos de la tabla sin utilizar la opción de cifrado y la clave utilizadas para cifrar o descifrar los resultados de la consulta.  
Sin embargo, si utiliza Athena para insertar datos en una tabla que tiene datos cifrados, Athena utiliza la configuración de cifrado que se especificó para los resultados de la consulta para cifrar los datos insertados. Por ejemplo, si especifica el cifrado `CSE_KMS` para los resultados de la consulta, Athena utiliza el mismo identificador de clave AWS KMS que utilizó para el cifrado de los resultados de la consulta para cifrar los datos de la tabla insertada con `CSE_KMS`

**Topics**
+ [

## Opciones de cifrado de Simple Storage Service (Amazon S3) compatibles
](#encryption-options-S3-and-Athena)
+ [

## Permisos para datos cifrados en Amazon S3
](#permissions-for-encrypting-and-decrypting-data)
+ [

## Permisos para metadatos cifrados en el catálogo de datos de AWS Glue
](#glue-encryption)
+ [

# Migración de CSE-KMS a SSE-KMS
](migrating-csekms-ssekms.md)
+ [

# Cifrado de los resultados de las consultas de Athena en Amazon S3
](encrypting-query-results-stored-in-s3.md)
+ [

# Creación de tablas basadas en conjuntos de datos cifrados en Amazon S3
](creating-tables-based-on-encrypted-datasets-in-s3.md)

## Opciones de cifrado de Simple Storage Service (Amazon S3) compatibles
<a name="encryption-options-S3-and-Athena"></a>

Athena admite las siguientes opciones de cifrado para conjuntos de datos y resultados de consulta en Amazon S3.


| Tipo de cifrado | Descripción | Compatibilidad entre regiones | 
| --- | --- | --- | 
| [SSE-S3](https://docs.aws.amazon.com/AmazonS3/latest/userguide/UsingServerSideEncryption.html) | Cifrado del servidor (SSE) con una clave administrada por Amazon S3. | Sí | 
| [SSE-KMS](https://docs.aws.amazon.com/AmazonS3/latest/userguide/UsingKMSEncryption.html) (recomendado) | Cifrado del servidor (SSE) con una clave administrada por el cliente de AWS Key Management Service.  | Sí | 
| [CSE-KMS](https://docs.aws.amazon.com/AmazonS3/latest/userguide/UsingClientSideEncryption.html#client-side-encryption-kms-managed-master-key-intro) |  Cifrado del cliente (CSE) con una clave administrada por el cliente de AWS KMS. En Athena, esta opción requiere que utilice una instrucción `CREATE TABLE` con una cláusula `TBLPROPERTIES` que especifica `'has_encrypted_data'='true'` o `'encryption_option'='CSE_KMS'` con `'kms_key'='kms_key_arn'`. Para obtener más información, consulte [Creación de tablas basadas en conjuntos de datos cifrados en Amazon S3](creating-tables-based-on-encrypted-datasets-in-s3.md).  | No | 

Para obtener más información sobre el cifrado de AWS KMS con Simple Storage Service (Amazon S3), consulte [¿Qué es AWS Key Management Service?](https://docs.aws.amazon.com/kms/latest/developerguide/overview.html) y [Cómo Amazon Simple Storage Service (Amazon S3) utiliza AWS KMS](https://docs.aws.amazon.com/kms/latest/developerguide/services-s3.html) en la *Guía para desarrolladores de AWS Key Management Service*. Para obtener más información sobre el uso de SSE-KMS o CSE-KMS con Athena, consulte [Lanzamiento: Amazon Athena agrega compatibilidad para las consultas de datos cifrados](https://aws.amazon.com/blogs/aws/launch-amazon-athena-adds-support-for-querying-encrypted-data/) en el *Blog de macrodatos de AWS*.

### Recomendaciones de cifrado
<a name="encryption-recommendation"></a>

Al momento de cifrar y descifrar los datos de las tablas y los resultados de las consultas con claves KMS administradas por el cliente, le recomendamos que utilice el cifrado SSE-KMS en lugar de los métodos de cifrado SSE-S3 o CSE-KMS. El cifrado SSE-KMS proporciona un equilibrio entre control, simplicidad y rendimiento, por lo que es un método recomendado cuando se utilizan claves KMS administradas para el cifrado de datos.

**Ventajas de SSE-KMS en comparación con SSE-S3**
+ El cifrado SSE-KMS le permite especificar y administrar sus propias claves, lo que proporciona un mayor control. Puede definir políticas de claves, supervisar los ciclos de vida de las claves y monitorizar su uso.

**Ventajas de SSE-KMS en comparación con CSE-KMS**
+ El cifrado SSE-KMS elimina la necesidad de una infraestructura adicional para cifrar y descifrar los datos, a diferencia del cifrado CSE-KMS, que requiere el mantenimiento continuo de un cliente de cifrado S3.
+ El cifrado CSE-KMS puede tener problemas de compatibilidad entre los clientes de cifrado S3 más nuevos y antiguos debido a la evolución de los algoritmos de cifrado, un problema que el cifrado SSE-KMS evita.
+ El cifrado SSE-KMS realiza menos llamadas a la API del servicio KMS para recuperar las claves durante los procesos de cifrado y descifrado, lo que se traduce en un mejor rendimiento en comparación con el cifrado CSE-KMS.

### Opciones no admitidas
<a name="encryption-unsupported-options"></a>

No se admiten las siguientes opciones de cifrado:
+ SSE con claves proporcionadas por el cliente (SSE-C)
+ Cifrado del cliente con una clave administrada del cliente.
+ Claves asimétricas

Para comparar las opciones de cifrado de Amazon S3, consulte [Protección de datos mediante cifrado](https://docs.aws.amazon.com/AmazonS3/latest/userguide/UsingEncryption.html) en la *Guía del usuario de Amazon Simple Storage Service*.

### Herramientas para el cifrado del cliente
<a name="encryption-client-side-tools"></a>

 Tenga en cuenta que hay dos herramientas disponibles para el cifrado del cliente: 
+ [Amazon S3 encryption client](https://docs.aws.amazon.com/AWSJavaSDK/latest/javadoc/com/amazonaws/services/s3/AmazonS3EncryptionClient.html): esto cifra los datos solo para Amazon S3 y es compatible con Athena.
+ [AWS Encryption SDK](https://docs.aws.amazon.com/encryption-sdk/latest/developer-guide/introduction.html): el SDK se puede utilizar para cifrar datos en cualquier lugar de AWS, pero no es directamente compatible con Athena.

Estas herramientas no son compatibles; además, los datos cifrados con una herramienta no se pueden descifrar por la otra. Athena solo admite Amazon S3 Encryption Client directamente. Si se utiliza el SDK para cifrar los datos, se pueden ejecutar consultas desde Athena, pero los datos se devuelven como texto cifrado. 

Si se desea utilizar Athena para consultar datos cifrados con el AWS Encryption SDK, es necesario descargar y descifrar los datos, y luego cifrarlos de nuevo con Amazon S3 Encryption Client.

## Permisos para datos cifrados en Amazon S3
<a name="permissions-for-encrypting-and-decrypting-data"></a>

En función del tipo de cifrado que se utiliza en Amazon S3, es posible que tenga que agregar permisos, también conocidos como acciones “Permitir”, a las políticas utilizadas en Athena:
+ **SSE-S3**: si se utiliza SSE-S3 para el cifrado, los usuarios de Athena no requieren permisos adicionales en sus políticas. Basta con disponer de los permisos de Amazon S3 adecuados para la ubicación de Amazon S3 correspondiente y para las acciones de Athena. Para obtener más información sobre las políticas que permiten los permisos de Athena y Amazon S3 adecuados, consulte [AWSPolíticas administradas de para Amazon Athena](security-iam-awsmanpol.md) y [Control del acceso a Amazon S3 desde Athena](s3-permissions.md).
+ **AWS KMS**: si utiliza AWS KMS para el cifrado, los usuarios de Athena deben poder realizar acciones de AWS KMS concretas, además de tener los permisos de Athena y Amazon S3. Puede permitir estas acciones mediante la edición de la política de claves para las claves administradas por el cliente que se utilizan para cifrar los datos en Amazon S3. Para agregar usuarios de claves a las políticas de claves de AWS KMS adecuadas, puede usar la consola de AWS KMS en [https://console.aws.amazon.com/kms](https://console.aws.amazon.com/kms). Para obtener información sobre cómo agregar un usuario a una política de claves de AWS KMS, consulte [Permitir a los usuarios de claves utilizar la clave administrada por el cliente](https://docs.aws.amazon.com/kms/latest/developerguide/key-policies.html#key-policy-default-allow-users) en la *Guía para desarrolladores de AWS Key Management Service*.
**nota**  
Los administradores de políticas de claves avanzadas pueden ajustar las políticas de claves. `kms:Decrypt` es la acción mínima permitida para que un usuario de Athena pueda trabajar con un conjunto de datos cifrados. Para trabajar con resultados de consulta cifrados, las acciones mínimas permitidas son `kms:GenerateDataKey` y `kms:Decrypt`.

  Cuando se utiliza Athena para consultar conjuntos de datos en Amazon S3 que tengan un gran número de objetos cifrados con AWS KMS, AWS KMS puede limitar los resultados de las consultas. Esto es más probable que se produzca cuando hay un gran número de objetos pequeños. Athena deja de utilizar las solicitudes de reintento, pero es posible que siga produciéndose un error de limitación controlada. Si trabaja con un gran número de objetos cifrados y experimenta este problema, una opción es habilitar las claves de bucket de Simple Storage Service (Amazon S3) para reducir el número de llamadas a KMS. Para obtener más información, consulte [Reducción del costo de SSE-KMS con las claves de bucket de Amazon S3](https://docs.aws.amazon.com/AmazonS3/latest/userguide/bucket-key.html) en la *Guía del usuario de Amazon Simple Storage Service*. Otra opción es aumentar las Service Quotas para AWS KMS. Para obtener más información, consulte [Cuotas](https://docs.aws.amazon.com/kms/latest/developerguide/limits.html#requests-per-second) en la *Guía para desarrolladores de AWS Key Management Service*.

Para obtener información sobre la solución de problemas de permisos al utilizar Amazon S3 con Athena, consulte la sección [Permisos](troubleshooting-athena.md#troubleshooting-athena-permissions) del tema [Solución de problemas en Athena](troubleshooting-athena.md).

## Permisos para metadatos cifrados en el catálogo de datos de AWS Glue
<a name="glue-encryption"></a>

Si [cifra metadatos en AWS Glue Data Catalog](https://docs.aws.amazon.com/glue/latest/dg/encrypt-glue-data-catalog.html), debe agregar acciones `"kms:GenerateDataKey"`, `"kms:Decrypt"` y `"kms:Encrypt"` a las políticas que utiliza para el acceso a Athena. Para obtener más información, consulte [Configuración del acceso desde Athena a los metadatos cifrados en el AWS Glue Data Catalog](access-encrypted-data-glue-data-catalog.md).

# Migración de CSE-KMS a SSE-KMS
<a name="migrating-csekms-ssekms"></a>

Puede especificar el cifrado CSE-KMS de dos maneras: durante la configuración del cifrado de los resultados de la consulta del grupo de trabajo y en la configuración del lado del cliente. Para obtener más información, consulte [Cifrado de los resultados de las consultas de Athena en Amazon S3](encrypting-query-results-stored-in-s3.md). Durante el proceso de migración, es importante auditar los flujos de trabajo existentes que leen y escriben datos de CSE-KMS, identificar los grupos de trabajo en los que está configurado CSE-KMS y localizar las instancias en las que CSE-KMS está configurado mediante parámetros del cliente.

## Actualización de la configuración de cifrado de los resultados de consultas de grupos de trabajo
<a name="migrating-updating-workgroup-query-results-encryption"></a>

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

**Cómo actualizar la configuración de cifrado en la consola de Athena**

1. Abra la consola de Athena en [https://console.aws.amazon.com/athena/](https://console.aws.amazon.com/athena/).

1. En el panel de navegación de la consola de Athena, elija **Grupos de trabajo**.

1. En la página **Grupos de trabajo**, seleccione el botón del grupo de trabajo que quiere editar. 

1. Seleccione **Acciones**, **Editar**.

1. Abra **Configuración de resultados de la consulta** y elija **Cifrar resultados de la consulta**.

1. En la sección **Tipo de cifrado**, elija la opción de cifrado **SSE\$1KMS**.

1. Introduzca su clave KMS en **Elegir una clave de KMS AWS diferente (avanzado)**.

1. Seleccione **Save changes (Guardar cambios)**. El grupo de trabajo actualizado aparece en la lista de la página **Grupos de trabajo**.

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

Ejecute el siguiente comando para actualizar la configuración de cifrado de los resultados de la consulta a SSE-KMS en su grupo de trabajo.

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

------

## Actualización de la configuración de cifrado de los resultados de las consultas del cliente
<a name="migrating-updating-clientside-query-results-encryption"></a>

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

Para actualizar la configuración del lado del cliente para el cifrado de los resultados de las consultas de CSE-KMS a SSE-KMS, consulte [Cifrado de los resultados de las consultas de Athena en Amazon S3](encrypting-query-results-stored-in-s3.md).

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

Solo puede especificar la configuración de cifrado de los resultados de la consulta en la configuración del lado del cliente con el comando `start-query-execution`. Si ejecuta este comando CLI y anula la configuración de cifrado de los resultados de la consulta que especificó en su grupo de trabajo con CSE-KMS, cambie el comando para cifrar los resultados de la consulta usando `SSE_KMS` de la siguiente manera.

```
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**  
Tras actualizar la configuración del grupo de trabajo o del lado del cliente, cualquier dato nuevo que inserte mediante consultas escritas utilizará el cifrado SSE-KMS en lugar del CSE-KMS. Esto se debe a que las configuraciones de cifrado de los resultados de las consultas también se aplican a los datos de tablas recientemente insertados. Los resultados de las consultas, los metadatos y los archivos de manifiesto de Athena también se cifran con SSE-KMS.
Athena puede seguir leyendo tablas con la propiedad de tabla `has_encrypted_data` incluso cuando hay una combinación de objetos cifrados con CSE-KMS y SSE-S3/SSE-KMS.

# Conversión de datos de tabla CSE-KMS a SSE-KMS
<a name="convert-csekms-table-ssekms"></a>

Si sus flujos de trabajo utilizan actualmente CSE-KMS para el cifrado de datos de tablas, realice la transición a SSE-KMS siguiendo estos pasos.

## Requisito previo
<a name="convert-csekms-table-ssekms-preq"></a>

Si sigue escribiendo datos con un grupo de trabajo de CSE-KMS o con una configuración del lado del cliente, siga los pasos que se indican en [Migración de CSE-KMS a SSE-KMS](migrating-csekms-ssekms.md) para actualizarlos a SSE-KMS. Esto evita que se agreguen nuevos datos cifrados con CSE-KMS durante el proceso de migración desde cualquier otro flujo de trabajo que pueda escribir en las tablas.

## Migración de datos
<a name="convert-csekms-table-ssekms-migrat"></a>

1. Compruebe si la tabla tiene la propiedad `has_encrypted_data` establecida en `true`. Esta propiedad especifica que la tabla puede contener datos cifrados con CSE-KMS. Sin embargo, es importante tener en cuenta que esta propiedad podría estar presente incluso en tablas sin ningún dato real cifrado con CSE-KMS.

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

   1. Abra la consola de Athena en [https://console.aws.amazon.com/athena/](https://console.aws.amazon.com/athena/).

   1. Elija **Iniciar editor de consultas**.

   1. En el lado izquierdo del editor, en **Base de datos**, elija la base de datos que desea consultar.

   1. En el editor de consultas, ejecute la siguiente consulta para ver el valor establecido en la propiedad `has_encrypted_data table`.

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

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

   Inicie una consulta de Athena que muestre el valor de la propiedad `has_encrypted_data` en la tabla como se muestra en el siguiente ejemplo.

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

   Obtenga los resultados de la consulta para comprobar el valor de la propiedad de tabla `has_encrypted_data` para la tabla como se muestra en el siguiente ejemplo.

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

------

1. Para cada objeto cifrado con CSE-KMS en la tabla.

   1. Descargue el objeto de S3 mediante el cliente de cifrado S3 y descífrelo. Este es un ejemplo con el AWS SDK V2 de Java.

      **Importaciones**

      ```
      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. Cargue el objeto en S3 con el mismo nombre y el cifrado SSE-KMS. A continuación, se muestra un ejemplo con el AWS SDK V2 de Java.

      **Importaciones**

      ```
      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 de**

      ```
      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()));
      ```

## Después de la migración
<a name="convert-csekms-table-ssekms-post-migrat"></a>

Tras volver a cifrar correctamente todos los archivos CSE-KMS de la tabla, lleve a cabo los siguientes pasos. 

1. Quite la propiedad `has_encrypted_data` de la tabla.

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

   1. Abra la consola de Athena en [https://console.aws.amazon.com/athena/](https://console.aws.amazon.com/athena/).

   1. Elija **Iniciar editor de consultas**.

   1. En el lado izquierdo del editor, en **Base de datos**, elija la base de datos que desea consultar.

   1. En el editor de consultas, ejecute la siguiente consulta para su tabla.

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

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

   Ejecute el siguiente comando para eliminar la propiedad de `has_encrypted_data` de su tabla.

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

------

1. Actualice sus flujos de trabajo para utilizar un cliente S3 básico en lugar de un cliente de cifrado S3 y, a continuación, especifique el cifrado SSE-KMS para la escritura de datos. 

# Cifrado de los resultados de las consultas de Athena en Amazon S3
<a name="encrypting-query-results-stored-in-s3"></a>

El cifrado de resultados de las consultas se configura en la consola de Athena o cuando se utiliza JDBC u ODBC. Los grupos de trabajo le permiten aplicar el cifrado de los resultados de la consulta.

**nota**  
Al cifrar los resultados de la consulta, Athena cifra todos los objetos generados durante el proceso de la consulta. Esto incluye los resultados de declaraciones como `INSERT INTO`, `UPDATE` y las consultas de datos en Iceberg u otros formatos.

En la consola, puede ajustar la configuración para el cifrado de los resultados de las consultas de dos formas:
+ **Configuración del cliente**: cuando se utiliza **Configuración** en la consola o las operaciones de la API para indicar que desea cifrar los resultados de las consultas, esto se conoce como uso de la configuración del cliente. La configuración del lado del cliente incluye la ubicación de los resultados de la consulta y cifrado. Si se especifican, se utilizan, a menos que se invalidan por la configuración del grupo de trabajo. 
+ **Workgroup settings** (Configuración de grupo de trabajo): al [crear o editar un grupo de trabajo](creating-workgroups.md) y seleccionar el campo **Override client-side settings** (Invalidar la configuración del lado del cliente), todas las consultas que se ejecutan en este grupo de trabajo utilizan el cifrado y la configuración de los resultados de las consultas del grupo de trabajo. Para obtener más información, consulte [Invalidación de la configuración del cliente](workgroups-settings-override.md). 

**Para cifrar resultados de la consulta almacenados en Amazon S3 mediante la consola**
**importante**  
Si su grupo de trabajo tiene seleccionado el campo **Invalidar la configuración del cliente**, todas las consultas en el grupo de trabajo utilizan la configuración del grupo de trabajo. No se utilizan la configuración de cifrado y la ubicación de los resultados de la consulta que se especifican en la pestaña **Configuración** en la consola de Athena, por operaciones de la API y por controladores JDBC y ODBC. Para obtener más información, consulte [Invalidación de la configuración del cliente](workgroups-settings-override.md).

1. En la consola de Athena, elija **Settings** (Configuración).  
![\[La pestaña Configuración del editor de consultas de Athena.\]](http://docs.aws.amazon.com/es_es/athena/latest/ug/images/settings.png)

1. Elija **Administrar**.

1. En **Location of query result** (Ubicación del resultado de la consulta), ingrese o elija una ruta de Amazon S3. Esta es la ubicación en Amazon S3 en la que se almacenan los resultados de las consultas.

1. Elija **Encrypt query results (Cifrar resultados de la consulta)**.  
![\[La opción Cifrar resultados de la consulta en la página Administrar la configuración de la consola de Athena.\]](http://docs.aws.amazon.com/es_es/athena/latest/ug/images/encrypt-query-results.png)

1. En **Encryption type (Tipo de cifrado)** elija **CSE-KMS**, **SSE-KMS** o **SSE-S3**. De estos tres, **CSE-KMS** ofrece el nivel más alto de cifrado, y **SSE-S3** el más bajo.

1. Si eligió **SSE-KMS** o **CSE-KMS**. especifique una clave AWS KMS.
   + En **Elegir una clave AWS KMS**, si la cuenta tiene acceso a una clave AWS KMS administrada por el cliente, elija su alias o ingrese el ARN de la clave AWS KMS.
   +  Si la cuenta no tiene acceso a una clave administrada por el cliente existente, seleccione **Crear clave de AWS KMS** y, luego, abra la [consola de AWS KMS](https://console.aws.amazon.com/kms). Para obtener más información, consulte [Creación de claves](https://docs.aws.amazon.com/kms/latest/developerguide/create-keys.html) en la *Guía para desarrolladores de AWS Key Management Service*.
**nota**  
Athena admite solo claves simétricas para lectura y escritura de datos.

1. Vuelva a la consola de Athena y elija la clave creada por alias o ARN. 

1. Seleccione **Save**.

## Cifrado de los resultados de las consultas de Athena al utilizar JDBC u ODBC
<a name="encrypting-query-results-stored-in-s3-jdbc-odbc"></a>

Si se conecta con un controlador JDBC o ODBC, debe configurar las opciones del controlador para especificar el tipo de cifrado que desea utilizar y la ubicación del directorio de preparación en Amazon S3. Para configurar un controlador JDBC u ODBC para cifrar los resultados de sus consultas con cualquiera de los protocolos de cifrado que Athena admite, consulte [Conexión a Amazon Athena con controladores ODBC y JDBC](athena-bi-tools-jdbc-odbc.md).

# Creación de tablas basadas en conjuntos de datos cifrados en Amazon S3
<a name="creating-tables-based-on-encrypted-datasets-in-s3"></a>

Athena puede leer y escribir en las tablas cuyos conjuntos de datos subyacentes estén cifrados en SSE-S3, SSE-KMS o CSE-KMS. Según la opción de cifrado utilizada para los datos de la tabla y el tipo de consultas ejecutadas, es posible que tenga que especificar algunas propiedades de tabla adicionales para leer y escribir los datos cifrados.

## Lectura de las tablas cifradas en SSE-S3/SSE-KMS
<a name="reading-sse-s3-sse-kms-encrypted-tables"></a>

No es necesario especificar propiedades de tabla adicionales al crear la tabla para leer conjuntos de datos cifrados con SSE-S3/SSE-KMS. Amazon S3 gestiona el descifrado de los objetos SSE automáticamente.

## Lectura de las tablas cifradas CSE-KMS
<a name="reading-cse-kms-encrypted-tables"></a>

Hay dos conjuntos diferentes de propiedades de tabla que se pueden especificar para que Athena lea los conjuntos de datos cifrados con CSE-KMS,
+ Uso de las propiedades de tabla `encryption_option` y `kms_key` (recomendado)
+ Uso de la propiedad de tabla `has_encrypted_data`

**importante**  
Si utiliza Amazon EMR junto con EMRFS para cargar archivos Parquet cifrados con CSE-KMS, debe desactivar las cargas multiparte estableciendo el valor `fs.s3n.multipart.uploads.enabled` en `false`. Si no lo hace, Athena no podrá determinar la longitud del archivo Parquet y se producirá un error **HIVE\$1CANNOT\$1OPEN\$1SPLIT**. Para obtener más información, consulte [Configuración de carga multiparte para Amazon S3](https://docs.aws.amazon.com/emr/latest/ManagementGuide/emr-plan-upload-s3.html#Config_Multipart) en la *Guía de administración de Amazon EMR*.

### Uso de las propiedades de tabla encryption\$1option y kms\$1key
<a name="using-encryption-option-and-kms-key-table-properties"></a>

En una instrucción [CREATE TABLE](create-table.md), utilice una cláusula `TBLPROPERTIES` que especifique `encryption_option='CSE_KMS'` y `kms_key='aws_kms_key_arn'`, como en el siguiente ejemplo.

```
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')
```

Cuando se configuran estas propiedades,
+ Athena puede leer objetos cifrados con CSE-KMS creados por los clientes de cifrado de Amazon S3 V1, V2 o V3.
+ Athena utilizará la clave AWS KMS en `kms_key` para descifrar los datos de CSE-KMS. Si algún objeto se cifró con una clave AWS KMS diferente, la consulta fallará.
+ Athena aún puede leer objetos cifrados en SSE-S3 y SSE-KMS, aunque no se recomienda mezclar objetos cifrados del cliente y del lado del servidor.

### Uso de la propiedad de tabla has\$1encrypted\$1data
<a name="using-has-encrypted-data-table-property"></a>

En una instrucción [CREATE TABLE](create-table.md) (CREAR TABLA), utilice una cláusula `TBLPROPERTIES` que especifica `has_encrypted_data='true'`, como en el siguiente ejemplo.

```
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')
```

Cuando se especifica la propiedad de tabla has\$1encrypted\$1data,
+ Athena solo puede leer objetos cifrados con CSE-KMS creados por los clientes de cifrado de Amazon S3 V1.
+ Athena deducirá la clave AWS KMS utilizada para cifrar el objeto CSE-KMS a partir de los metadatos del objeto y, a continuación, utilizará esa clave para descifrar el objeto.
+ Athena aún puede leer objetos cifrados en SSE-S3 y SSE-KMS, aunque no se recomienda mezclar objetos cifrados del cliente y del lado del servidor.

**nota**  
Cuando se especifican `encryption_option` y `kms_key` junto con `has_encrypted_data`, las propiedades de tabla `encryption_option` y `kms_key` tienen prioridad y `has_encrypted_data` se ignora.

Cuando utilice la consola de Athena para [crear una tabla mediante un formulario](data-sources-glue-manual-table.md) y especificar la ubicación de la tabla, seleccione la opción **Conjunto de datos cifrados** para añadir la propiedad `has_encrypted_data='true'` a la tabla.

![\[Seleccione Encrypted data set (Conjunto de datos cifrados) en el formulario para agregar tablas.\]](http://docs.aws.amazon.com/es_es/athena/latest/ug/images/add-table-form-encrypted-option.png)


En la lista de tablas de la consola de Athena, las tablas cifradas con `has_encrypted_data='true'` muestran un icono con forma de llave.

![\[Icono de tabla de cifrado\]](http://docs.aws.amazon.com/es_es/athena/latest/ug/images/tables-list-encrypted-table-icon.png)


## Escritura de datos cifrados en SSE-S3/SSE-KMS/CSE-KMS
<a name="writing-sse-s3-sse-kms-cse-kms-encrypted-data"></a>

De forma predeterminada, los archivos de datos recién insertados se cifrarán mediante la configuración de cifrado de los resultados de la consulta especificada en el grupo de trabajo de Athena. Para escribir los datos de tabla con una configuración de cifrado diferente a la configuración de cifrado de los resultados de la consulta, tendrá que añadir algunas propiedades de tabla adicionales.

En una instrucción [CREATE TABLE](create-table.md), utilice una cláusula `TBLPROPERTIES` que especifique `encryption_option='SSE_S3 | SSE_KMS | CSE_KMS'` y `kms_key='aws_kms_key_arn'`, como en el siguiente ejemplo.

```
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 los datos recién insertados se cifrarán mediante la configuración de cifrado especificada en las propiedades de tabla, en lugar de utilizar la configuración de cifrado de los resultados de la consulta en el grupo de trabajo.

## Condiciones y limitaciones
<a name="considerations-and-limitations"></a>

Cuando escriba y lea conjuntos de datos cifrados, tenga en cuenta los siguientes puntos.
+ Las propiedades de tabla `has_encrypted_data`, `encryption_option` y `kms_key` solo se pueden usar con las tablas de Hive.
+ Al crear una tabla con datos cifrados con CSE-KMS, le recomendamos que se asegure de que todos los datos estén cifrados con la misma clave. AWS KMS
+ Al crear una tabla con datos cifrados con CSE-KMS, le recomendamos que se asegure de que todos los datos estén cifrados con CSE-KMS y de que no haya una combinación de objetos cifrados con CSE-KMS y CSE-KMS.

# Cifrado en tránsito
<a name="encryption-in-transit"></a>

Además de cifrar los datos en reposo en Amazon S3, Amazon Athena utiliza el cifrado Transport Layer Security (TLS) para los datos en tránsito entre Athena y Amazon S3, y entre Athena y las aplicaciones del cliente que obtienen acceso a ellos.

Solo debe permitir conexiones cifradas sobre HTTPS (TLS) utilizando [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) en las políticas de IAM del bucket de Amazon S3.

Los resultados de las consultas que se envían a clientes JDBC u ODBC se cifran mediante TLS. Para obtener información sobre las versiones más recientes de los controladores JDBC y ODBC y su documentación, consulte [Conexión a Amazon Athena con JDBC](connect-with-jdbc.md) y [Conexión a Amazon Athena con ODBC](connect-with-odbc.md).

En el caso de los conectores de orígenes de datos federados de Athena, la compatibilidad con el cifrado en tránsito mediante TLS depende del conector individual. Para obtener más información, consulte la documentación de los [conectores de orígenes de datos](connectors-available.md) individuales.

# Administración de claves
<a name="key-management"></a>

Amazon Athena admite AWS Key Management Service (AWS KMS) para cifrar los conjuntos de datos en Amazon S3 y los resultados de consulta de Athena. AWS KMS utiliza claves administradas por el cliente para cifrar los objetos de Amazon S3 y se basa en el [cifrado de sobres](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#enveloping). 

En AWS KMS, puede llevar a cabo las siguientes acciones:
+  [Crear claves](https://docs.aws.amazon.com/kms/latest/developerguide/create-keys.html) 
+  [Importe su propio material de claves para las nuevas claves administradas por el cliente](https://docs.aws.amazon.com/kms/latest/developerguide/importing-keys.html) 

**nota**  
Athena admite solo claves simétricas para lectura y escritura de datos.

Para obtener más información, consulte [¿Qué es AWS Key Management Service?](https://docs.aws.amazon.com/kms/latest/developerguide/overview.html) en la *Guía para desarrolladores de AWS Key Management Service*, y [Cómo Amazon Simple Storage Service utiliza AWS KMS](https://docs.aws.amazon.com/kms/latest/developerguide/services-s3.html). Si desea ver las claves de su cuenta que AWS crea y administra por usted, en el panel de navegación, elija **Claves administradas por AWS**.

Si carga o accede a objetos cifrados con SSE-KMS, use AWS Signature Version 4 para reforzar la seguridad. Para obtener más información, consulte [Especificación de Signature Version en la autenticación de solicitudes](https://docs.aws.amazon.com/AmazonS3/latest/userguide/UsingAWSSDK.html#specify-signature-version) en la *Guía del usuario de Amazon Simple Storage Service*.

Si sus cargas de trabajo de Athena cifran una gran cantidad de datos, puede utilizar claves de bucket de Amazon S3 para reducir costos. Para obtener más información, consulte [Reducción del costo de SSE-KMS con las claves de bucket de Amazon S3](https://docs.aws.amazon.com/AmazonS3/latest/userguide/bucket-key.html) en la *Guía del usuario de Amazon Simple Storage Service*.

# Privacidad del tráfico entre redes
<a name="internetwork-traffic-privacy"></a>

El tráfico está protegido tanto entre Athena y las aplicaciones locales como entre Athena y Amazon S3. El tráfico entre Athena y otros servicios, como AWS Glue y AWS Key Management Service, utiliza HTTPS de forma predeterminada.
+ **Para el tráfico entre Athena y clientes y aplicaciones locales**, los resultados de las consultas que se envían a clientes JDBC u ODBC se cifran mediante Transport Layer Security (TLS).

  Puede utilizar una de las opciones de conectividad entre su red privada y AWS: 
  + Una conexión de Site-to-Site VPN de Site-to-Site VPN. Para obtener más información, consulte [¿Qué es Site-to-Site VPN Site-to-Site VPN?](https://docs.aws.amazon.com/vpn/latest/s2svpn/VPC_VPN.html) en la *Guía del usuario de AWS Site-to-Site VPN*.
  + Una conexión de Direct Connect. Para obtener más información, consulte [¿Qué es Direct Connect?](https://docs.aws.amazon.com/directconnect/latest/UserGuide/Welcome.html) en la *Guía del usuario de Direct Connect*.
+ **Para el tráfico entre Athena y buckets de Amazon S3**, el protocolo Transport Layer Security (TLS) cifra los objetos en tránsito entre Athena y Amazon S3, y entre Athena y las aplicaciones de cliente que obtienen acceso a él, debe permitir solo las conexiones cifradas sobre HTTPS (TLS) utilizando [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) en las políticas de IAM del bucket de Amazon S3. Aunque Athena utiliza actualmente el punto de conexión público para acceder a los datos de los buckets de Amazon S3, esto no significa que los datos recorran la Internet pública. Todo el tráfico entre Athena y Amazon S3 se enruta a través de la red de AWS y se cifra mediante TLS.
+ **Programas de conformidad**: Amazon Athena cumple con múltiples programas de conformidad de AWS, incluidos SOC, PCI, FedRAMP y otros. Para obtener más información, consulte [Servicios de AWS incluidos en el ámbito por programa de conformidad](https://aws.amazon.com/compliance/services-in-scope/). 