

# Seguridad de Amazon Athena
<a name="security"></a>

La seguridad en la nube de AWS es la máxima prioridad. Como cliente de AWS, se beneficia de una arquitectura de red y un centro de datos que se han diseñado para satisfacer los requisitos de seguridad de las organizaciones más exigentes.

La seguridad es una responsabilidad compartida entre AWS y el usuario. El [modelo de responsabilidad compartida](https://aws.amazon.com/compliance/shared-responsibility-model/) la describe como seguridad *de* la nube y seguridad *en* la nube:
+ **Seguridad de la nube**: AWS es responsable de proteger la infraestructura que ejecuta Servicios de AWS en la nube de AWS. Además, AWS proporciona servicios que puede utilizar de forma segura. Auditores externos prueban y verifican periódicamente la eficacia de nuestra seguridad en el marco de los [programas de conformidad de AWS](https://aws.amazon.com/compliance/programs/). Para obtener más información sobre los programas de conformidad que se aplican a Athena, consulte [Servicios de AWS en el ámbito del programa de conformidad](https://aws.amazon.com/compliance/services-in-scope/).
+ **Seguridad en la nube**: su responsabilidad viene determinada por el Servicio de AWS que utilice. Usted también es responsable de otros factores incluida la confidencialidad de los datos, los requisitos de la empresa y la legislación y los reglamentos aplicables. 

Esta documentación lo ayudará a comprender cómo aplicar el modelo de responsabilidad compartida cuando se utiliza Amazon Athena. En los siguientes temas, se le mostrará cómo configurar Athena para satisfacer sus objetivos de seguridad y conformidad. También puede aprender a utilizar otros Servicios de AWS que lo ayudan a monitorear y proteger sus recursos de Athena.

**Topics**
+ [

# Protección de los datos en Athena
](security-data-protection.md)
+ [

# Identity and Access Management en Athena
](security-iam-athena.md)
+ [

# Registro y supervisión de Athena
](security-logging-monitoring.md)
+ [

# Validación de conformidad para
](security-compliance-validation.md)
+ [

# Resiliencia en Athena
](security-resilience.md)
+ [

# Seguridad de la infraestructura en Athena
](security-infrastructure.md)
+ [

# Configuración y análisis de vulnerabilidades en Athena
](security-vulnerability-management.md)
+ [

# Uso de Athena para consultar datos registrados en AWS Lake Formation
](security-athena-lake-formation.md)

# 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/). 

# Identity and Access Management en Athena
<a name="security-iam-athena"></a>

Amazon Athena utiliza [AWS Identity and Access Management (IAM)](https://docs.aws.amazon.com/IAM/latest/UserGuide/introduction.html) para restringir el acceso a las operaciones de Athena. Para obtener una lista completa de los permisos de Athena, consulte [Acciones, recursos y claves de condición de Amazon Athena](https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazonathena.html) en la *Referencia de autorizaciones de servicio*.

Siempre que utilice políticas de IAM, asegúrese de seguir las prácticas recomendadas de IAM. Para obtener más información, consulte la sección [Prácticas recomendadas de seguridad de IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/best-practices.html) en la *Guía del usuario de IAM*.

Entre los permisos necesarios para ejecutar las consultas de Athena se incluyen los siguientes:
+ Ubicaciones de Amazon S3 donde se almacenan los datos subyacentes de la consulta. Para obtener más información, consulte [Identity and Access Management en Amazon S3](https://docs.aws.amazon.com/AmazonS3/latest/dev/s3-access-control.html) en la *Guía del usuario de Amazon Simple Storage Service*.
+ Metadatos y recursos que se almacenan en el AWS Glue Data Catalog, como bases de datos y tablas, incluidas acciones adicionales para metadatos cifrados. Para obtener más información, consulte [Configuración de permisos de IAM para AWS Glue](https://docs.aws.amazon.com/glue/latest/dg/getting-started-access.html) y [Configuración del cifrado en AWS Glue](https://docs.aws.amazon.com/glue/latest/dg/set-up-encryption.html) en la *Guía para desarrolladores de AWS Glue*.
+ Acciones de la API de Athena. Para obtener una lista completa de las acciones de la API en Athena, consulte [Acciones](https://docs.aws.amazon.com/athena/latest/APIReference/API_Operations.html) en la *Referencia de API de Amazon Athena*.

Los siguientes temas proporcionan más información acerca de los permisos de áreas específicas de Athena.

**Topics**
+ [Políticas gestionadas por AWS](security-iam-awsmanpol.md)
+ [

# Perímetros de datos
](data-perimeters.md)
+ [Acceso a través de conexiones JDBC y ODBC](policy-actions.md)
+ [

# Control del acceso a Amazon S3 desde Athena
](s3-permissions.md)
+ [Acceso entre cuentas a buckets de S3](cross-account-permissions.md)
+ [Acceso a las bases de datos y tablas en el AWS Glue](fine-grained-access-to-glue-resources.md)
+ [Acceso entre cuentas a los catálogos de datos de AWS Glue](security-iam-cross-account-glue-catalog-access.md)
+ [Acceso a metadatos cifrados en el catálogo de datos](access-encrypted-data-glue-data-catalog.md)
+ [Acceso a grupos de trabajo y etiquetas](workgroups-access.md)
+ [

# Uso de políticas de IAM para el control del acceso al grupo de trabajo
](workgroups-iam-policy.md)
+ [Grupos de trabajo habilitados para IAM Identity Center](workgroups-identity-center.md)
+ [Configuración del cifrado mínimo](workgroups-minimum-encryption.md)
+ [

# Configuración del acceso a las declaraciones preparadas
](security-iam-athena-prepared-statements.md)
+ [Uso de las claves de contexto CalledVia](security-iam-athena-calledvia.md)
+ [

# Permiso de acceso al conector de datos de Athena para el metastore externo de Hive
](hive-metastore-iam-access.md)
+ [

# Permitir a la función de Lambda el acceso a los almacenes de metadatos externos de Hive
](hive-metastore-iam-access-lambda.md)
+ [

# Permisos necesarios para crear el conector y el catálogo de Athena
](athena-catalog-access.md)
+ [Permitir acceso a la consulta federada de Athena](federated-query-iam-access.md)
+ [Permiso de acceso a las UDF](udf-iam-access.md)
+ [

# Permiso de acceso para ML con Athena
](machine-learning-iam-access.md)
+ [

# Habilitación del acceso federado a la API de Athena
](access-federation-saml.md)

# AWSPolíticas administradas de para Amazon Athena
<a name="security-iam-awsmanpol"></a>

Una política administrada de AWS es una política independiente que AWS crea y administra. Las políticas administradas de AWS se diseñan para ofrecer permisos para muchos casos de uso comunes, por lo que puede empezar a asignar permisos a los usuarios, grupos y roles.

Considere que es posible que las políticas administradas por AWS no concedan permisos de privilegio mínimo para los casos de uso concretos, ya que están disponibles para que las utilicen todos los clientes de AWS. Se recomienda definir [políticas administradas por el cliente](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_managed-vs-inline.html#customer-managed-policies) específicas para sus casos de uso a fin de reducir aún más los permisos.

No puede cambiar los permisos definidos en las políticas administradas AWS. Si AWS actualiza los permisos definidos en una política administrada de AWS, la actualización afecta a todas las identidades de entidades principales (usuarios, grupos y roles) a las que está asociada la política. Lo más probable es que AWS actualice una política administrada de AWS cuando se lance un nuevo Servicio de AWS o las operaciones de la API nuevas estén disponibles para los servicios existentes.

Para obtener más información, consulte [Políticas administradas de AWS](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_managed-vs-inline.html#aws-managed-policies) en la *Guía del usuario de IAM*.

## Consideraciones al utilizar políticas administradas con Athena
<a name="managed-policies-considerations"></a>

Las políticas administradas son fáciles de utilizar y se actualizan automáticamente con las acciones necesarias a medida que el servicio evoluciona. Cuando utilice políticas administradas con Athena, tenga en cuenta los siguientes puntos:
+ Para permitir o denegar acciones de servicio de Amazon Athena para usted u otros usuarios mediante AWS Identity and Access Management (IAM), asocie políticas basadas en identidad a entidades principales, como usuarios o grupos. 
+ Cada política basada en identidad se compone de instrucciones que definen las acciones que se permiten o se deniegan. Para obtener más información e instrucciones paso a paso para asociar una política a un usuario, consulte [Asociar políticas administradas](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_managed-using.html#attach-managed-policy-console) en la *Guía del usuario de IAM*. Para obtener una lista de acciones, consulte la sección de [referencia de API de Amazon Athena](https://docs.aws.amazon.com/athena/latest/APIReference/).
+  Las políticas basadas en identidad *administradas por el cliente* e *insertadas* le permiten especificar acciones de Athena más detalladas para dar más precisión al acceso. Le recomendamos que utilice la política `AmazonAthenaFullAccess` como punto de partida y, a continuación, permita o deniegue acciones específicas que se muestran en la sección de [referencia de la API de Amazon Athena](https://docs.aws.amazon.com/athena/latest/APIReference/). Para obtener más información sobre las políticas insertadas, consulte [Políticas administradas e insertadas](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_managed-vs-inline.html) en la *Guía del usuario de IAM*.
+ Si también tiene entidades principales que se conectan a través de JDBC, debe proporcionar al controlador JDBC las credenciales para el acceso a su aplicación. Para obtener más información, consulte [Control del acceso a través de conexiones JDBC y ODBC](policy-actions.md).
+ Si ha cifrado el catálogo de datos de AWS Glue, debe especificar acciones adicionales en las políticas de IAM basadas en identidad para 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).
+ Si crea y utiliza grupos de trabajo, asegúrese de que sus políticas incluyan el acceso correspondiente a las acciones de los grupos de trabajo. Para obtener más información, consulte [Uso de políticas de IAM para el control del acceso al grupo de trabajo](workgroups-iam-policy.md) y [Ejemplos de políticas de grupo de trabajo](example-policies-workgroup.md). 

## AWSPolítica administrada de : AmazonAthenaFullAccess
<a name="amazonathenafullaccess-managed-policy"></a>

La política administrada de `AmazonAthenaFullAccess` concede acceso total a Athena.

Para proporcionar acceso, agregue permisos a sus usuarios, grupos o roles:
+ Usuarios y grupos en AWS IAM Identity Center:

  Cree un conjunto de permisos. Siga las instrucciones de [Creación de un conjunto de permisos](https://docs.aws.amazon.com//singlesignon/latest/userguide/howtocreatepermissionset.html) en la *Guía del usuario de AWS IAM Identity Center*.
+ Usuarios gestionados en IAM a través de un proveedor de identidades:

  Cree un rol para la federación de identidades. Siga las instrucciones descritas en [Creación de un rol para un proveedor de identidad de terceros (federación)](https://docs.aws.amazon.com//IAM/latest/UserGuide/id_roles_create_for-idp.html) en la *Guía del usuario de IAM*.
+ Usuarios de IAM:
  + Cree un rol que el usuario pueda aceptar. Siga las instrucciones descritas en [Creación de un rol para un usuario de IAM](https://docs.aws.amazon.com//IAM/latest/UserGuide/id_roles_create_for-user.html) en la *Guía del usuario de IAM*.
  + (No recomendado) Adjunte una política directamente a un usuario o agregue un usuario a un grupo de usuarios. Siga las instrucciones de [Adición de permisos a un usuario (consola)](https://docs.aws.amazon.com//IAM/latest/UserGuide/id_users_change-permissions.html#users_change_permissions-add-console) de la *Guía del usuario de IAM*.

### Grupos de permisos
<a name="amazonathenafullaccess-managed-policy-groupings"></a>

La política `AmazonAthenaFullAccess` se agrupa en los siguientes conjuntos de permisos.
+ **`athena`** – permite el acceso de las entidades principales a los recursos de Athena.
+ **`glue`**: permite el acceso de las entidades principales a catálogos, bases de datos, tablas y particiones de AWS Glue. Esto es necesario para que la entidad principal pueda utilizar AWS Glue Data Catalog con Athena.
+ **`s3`** – permite a la entidad principal escribir y leer los resultados de las consultas de Amazon S3, leer ejemplos de datos de Athena disponibles públicamente que residen en Amazon S3 y listar buckets. Esto es necesario para que la entidad principal pueda utilizar Athena para trabajar con Amazon S3.
+ **`sns`** – permite a las entidades principales enumerar temas de Amazon SNS y obtener atributos de temas. Esto permite a las entidades principales utilizar temas de Amazon SNS con Athena para fines de monitoreo y alerta.
+ **`cloudwatch`** – permite a las entidades principales crear, leer y eliminar alarmas de CloudWatch. Para obtener más información, consulte [Uso de CloudWatch y EventBridge para la supervisión de consultas y la administración de costos](workgroups-control-limits.md).
+ **`lakeformation`** – permite a las entidades principales solicitar credenciales temporales para acceder a los datos en una ubicación de lago de datos registrada con Lake Formation. Para obtener más información, consulte [Control de acceso a datos subyacentes](https://docs.aws.amazon.com/lake-formation/latest/dg/access-control-underlying-data.html) en la *Guía para desarrolladores de AWS Lake Formation*.
+ **`datazone`**: permite a las entidades principales enumerar proyectos, dominios y entornos de Amazon DataZone. Para obtener información acerca del uso de DataZone en Athena, consulte [Uso de Amazon DataZone en Athena](datazone-using.md).
+ **`pricing`** – proporciona acceso a Administración de facturación y costos de AWS. Para obtener más información, consulte [GetProducts](https://docs.aws.amazon.com/aws-cost-management/latest/APIReference/API_pricing_GetProducts.html) en la *Referencia de la API de Administración de facturación y costos de AWS*.

Para ver los permisos de esta política, consulte [AmazonAthenaFullAccess](https://docs.aws.amazon.com/aws-managed-policy/latest/reference/AmazonAthenaFullAccess.html) en la Referencia de políticas administradas por AWS.

**nota**  
Debe permitir de manera explícita el acceso a los buckets de Amazon S3 propiedad del servicio para almacenar consultas de ejemplo y conjuntos de datos de muestra. Para obtener más información, consulte [Perímetros de datos](data-perimeters.md).

## AWSPolítica administrada de : AWSQuicksightAthenaAccess
<a name="awsquicksightathenaaccess-managed-policy"></a>

`AWSQuicksightAthenaAccess` concede acceso a las acciones que Quick requiere para integrarse con Athena. Puede asociar la política `AWSQuicksightAthenaAccess` a las identidades de IAM. Asocie esta política solo a entidades principales que utilicen Quick con Athena. Esta política incluye algunas acciones para Athena que han quedado obsoletas y no se encuentran en la API pública actual o que se utilizan únicamente con los controladores JDBC y ODBC.

### Grupos de permisos
<a name="awsquicksightathenaaccess-managed-policy-groupings"></a>

La política `AWSQuicksightAthenaAccess` se agrupa en los siguientes conjuntos de permisos.
+ **`athena`** – permite que la entidad principal ejecute consultas sobre los recursos de Athena.
+ **`glue`**: permite el acceso de las entidades principales a catálogos, bases de datos, tablas y particiones de AWS Glue. Esto es necesario para que la entidad principal pueda utilizar AWS Glue Data Catalog con Athena.
+ **`s3`** – permite a la entidad principal escribir y leer los resultados de las consultas de Amazon S3.
+ **`lakeformation`** – permite a las entidades principales solicitar credenciales temporales para acceder a los datos en una ubicación de lago de datos registrada con Lake Formation. Para obtener más información, consulte [Control de acceso a datos subyacentes](https://docs.aws.amazon.com/lake-formation/latest/dg/access-control-underlying-data.html) en la *Guía para desarrolladores de AWS Lake Formation*.

Para ver los permisos de esta política, consulte [AWSQuicksightAthenaAccess](https://docs.aws.amazon.com/aws-managed-policy/latest/reference/AWSQuicksightAthenaAccess.html) en la Referencia de la política administrada por AWS.

## Actualizaciones de Athena en Políticas administradas de AWS
<a name="managed-policies-updates"></a>

Es posible consultar los detalles sobre las actualizaciones de las políticas administradas de AWS para Athena debido a que este servicio comenzó a realizar el seguimiento de estos cambios.


| Cambio | Descripción | Fecha | 
| --- | --- | --- | 
| [AWSQuicksightAthenaAccess](#awsquicksightathenaaccess-managed-policy): actualizaciones de las políticas existentes | Los permisos glue:GetCatalog y glue:GetCatalogs se agregaron para permitir a los usuarios de Athena acceder a los catálogos de SageMaker AI Lakehouse. | 2 de enero de 2025 | 
| [AmazonAthenaFullAccess](#amazonathenafullaccess-managed-policy): actualización de la política existente | Los permisos glue:GetCatalog y glue:GetCatalogs se agregaron para permitir a los usuarios de Athena acceder a los catálogos de SageMaker AI Lakehouse. | 2 de enero de 2025 | 
| [AmazonAthenaFullAccess](#amazonathenafullaccess-managed-policy): actualización de la política existente |  Permite a Athena utilizar la API AWS Glue `GetCatalogImportStatus` documentada públicamente para recuperar el estado de importación del catálogo.  | 18 de junio de 2024 | 
|  [AmazonAthenaFullAccess](#amazonathenafullaccess-managed-policy): actualización de la política existente  |  Se agregaron los permisos `datazone:ListDomains`, `datazone:ListProjects` y `datazone:ListAccountEnvironments` para permitir a los usuarios de Athena trabajar con dominios, proyectos y entornos de Amazon DataZone. Para obtener más información, consulte [Uso de Amazon DataZone en Athena](datazone-using.md).  | 3 de enero de 2024 | 
|  [AmazonAthenaFullAccess](#amazonathenafullaccess-managed-policy): actualización de la política existente  |  Se agregaron los permisos `glue:StartColumnStatisticsTaskRun`, `glue:GetColumnStatisticsTaskRun` y `glue:GetColumnStatisticsTaskRuns` para dar a Athena el derecho a llamar a AWS Glue para recuperar estadísticas de la característica de optimización basada en costos. Para obtener más información, consulte [Uso del optimizador basado en costos](cost-based-optimizer.md).  | 3 de enero de 2024 | 
|  [AmazonAthenaFullAccess](#amazonathenafullaccess-managed-policy): actualización de la política existente  |  Athena agregó `pricing:GetProducts` para proporcionar acceso a Administración de facturación y costos de AWS. Para obtener más información, consulte [GetProducts](https://docs.aws.amazon.com/aws-cost-management/latest/APIReference/API_pricing_GetProducts.html) en la *Referencia de la API de Administración de facturación y costos de AWS*.  | 25 de enero de 2023 | 
|  [AmazonAthenaFullAccess](#amazonathenafullaccess-managed-policy): actualización de la política existente  |  Athena agregó `cloudwatch:GetMetricData` para recuperar los valores de métricas de CloudWatch. Para obtener más información, consulte [GetMetricData](https://docs.aws.amazon.com/AmazonCloudWatch/latest/APIReference/API_GetMetricData.html) en la *Referencia de la API de los Registros de Amazon CloudWatch*.  | 14 de noviembre de 2022 | 
|  [AmazonAthenaFullAccess](#amazonathenafullaccess-managed-policy) y [AWSQuicksightAthenaAccess](#awsquicksightathenaaccess-managed-policy): actualizaciones de las políticas existentes  |  Athena agregó `s3:PutBucketPublicAccessBlock` para permitir el bloqueo del acceso público en los buckets creados por Athena.  | 7 de julio de 2021 | 
|  Athena comenzó a realizar el seguimiento de los cambios  |  Athena comenzó a realizar el seguimiento de los cambios de las políticas administradas de AWS.  | 7 de julio de 2021 | 

# Perímetros de datos
<a name="data-perimeters"></a>

Un [perímetro de datos](https://aws.amazon.com/identity/data-perimeters-on-aws/) es un conjunto de barreras de protección de permisos en su entorno de AWS que sirve para garantizar que solo sus identidades de confianza accedan a los recursos de confianza desde las redes esperadas. 

Amazon Athena usa buckets de Amazon S3 propiedad del servicio para almacenar consultas de ejemplo y conjuntos de datos de muestra. Si utiliza perímetros de datos para controlar el acceso en su entorno, debe permitir de forma explícita el acceso a estos recursos propiedad del servicio para utilizar las características de Athena correspondientes. 

 La siguiente tabla muestra el ARN del bucket de Amazon S3 al que Athena necesita acceder, los permisos requeridos, la identidad utilizada por Athena y las características que dependen del bucket de S3. Para permitir el acceso, sustituya `<region>` en el ARN del bucket por su Región de AWS actual y agregue este bucket a la lista de permitidos en función de sus controles de acceso a Amazon S3. 


**Perímetros de datos que utiliza Athena**  

| ARN de recurso | Permisos necesarios | Identidad utilizada para el acceso | Escenarios de acceso | 
| --- | --- | --- | --- | 
|  arn:aws:s3:::athena-examples-<region>  | s3:GetObjects3:ListBucket | La entidad principal de IAM que accede a Athena. |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/athena/latest/ug/data-perimeters.html)  | 

# Control del acceso a través de conexiones JDBC y ODBC
<a name="policy-actions"></a>

Para obtener acceso a los recursos y Servicios de AWS como Athena y los buckets de Amazon S3, proporcione credenciales de controlador JDBC u ODBC a su aplicación. Si utiliza el controlador JDBC u ODBC, asegúrese de que la política de permisos de IAM incluya todas las acciones enumeradas en la Política administrada [AWSPolítica administrada de : AWSQuicksightAthenaAccess](security-iam-awsmanpol.md#awsquicksightathenaaccess-managed-policy).

Siempre que utilice políticas de IAM, compruebe que sigue las mejores prácticas IAM. Para obtener más información, consulte la sección [Prácticas recomendadas de seguridad de IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/best-practices.html) en la *Guía del usuario de IAM*.

## Métodos de autenticación
<a name="security-jdbc-odbc-access-authentication"></a>

Los controladores JDBC y ODBC de Athena admiten la autenticación basada en SAML 2.0, incluidos los siguientes proveedores de identidad:
+ Active Directory Federation Services (AD FS)
+ Azure Active Directory (AD)
+ Okta 
+ PingFederate

Para obtener más información, consulte las guías de instalación y configuración de los controladores respectivos, que se pueden descargar en formato PDF desde las páginas de controladores [JDBC](connect-with-jdbc.md) y [ODBC](connect-with-odbc.md). Para obtener más información relacionada, consulte los siguientes temas:
+ [Habilitación del acceso federado a la API de Athena](access-federation-saml.md)
+ [Uso de Lake Formation y controladores JDBC u ODBC para el acceso federado a Athena](security-athena-lake-formation-jdbc.md)
+  [Configuración del inicio de sesión único con ODBC, SAML 2.0 y el proveedor de identidades Okta](okta-saml-sso.md)

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).

# Control del acceso a Amazon S3 desde Athena
<a name="s3-permissions"></a>

Puede conceder acceso a las ubicaciones de Amazon S3 mediante políticas basadas en identidad, políticas de recursos de bucket, políticas de puntos de acceso o cualquier combinación de las anteriores. Cuando los actores interactúan con Athena, sus permisos pasan por Athena para determinar a qué puede acceder Athena. Esto significa que los usuarios deben tener permiso para acceder a los buckets de Amazon S3 para poder consultarlos con Athena.

Siempre que utilice políticas de IAM, compruebe que sigue las mejores prácticas IAM. Para más información, consulte [Prácticas recomendadas de seguridad en IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/best-practices.html) en la *Guía del usuario de IAM*.

Tenga en cuenta que las solicitudes a Amazon S3 provienen de una dirección IPv4 privada para Athena, no de la IP de origen especificada en `aws:SourceIp`. Por este motivo, no puede utilizar la condición `aws:SourceIp` para denegar el acceso a las acciones de Amazon S3 en una política de IAM determinada. Tampoco puede restringir o permitir el acceso a los recursos de Amazon S3 basándose en las claves de condición `aws:SourceVpc` o `aws:SourceVpce`.

**nota**  
Los grupos de trabajo de Athena que utilizan la autenticación de IAM Identity Center requieren que S3 Access Grants esté configurado para utilizar identidades de propagación fiables. Para obtener más información, consulte [S3 Access Grants e identidades de directorio](https://docs.aws.amazon.com/AmazonS3/latest/userguide/access-grants-directory-ids.html) en la *Guía del usuario de Amazon Simple Storage Service*.

**Topics**
+ [Políticas basadas en identidad](#s3-permissions-identity-based-policies)
+ [Políticas de recursos de buckets](#s3-permissions-bucket-resource-policies)
+ [Políticas de puntos de acceso](#s3-permissions-aliases)
+ [Claves de contexto CalledVia](#s3-permissions-calledvia)
+ [

## Recursos adicionales
](#s3-permissions-additional-resources)

## Uso de políticas basadas en identidad para el control de acceso a los buckets de Amazon S3
<a name="s3-permissions-identity-based-policies"></a>

Las políticas basadas en identidad se asocian a un rol, grupo o usuario de IAM. Estas políticas le permiten especificar lo que esa identidad puede hacer (sus permisos). Puede utilizar políticas basadas en identidades para controlar el acceso a los buckets de Amazon S3.

La siguiente política basada en identidad permite a acceso de `Read` y `Write` a los objetos de un bucket específico de Amazon S3. Para utilizar esta política, sustituya el *texto en cursiva del marcador de posición* por sus propios valores.

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "ListObjectsInBucket",
            "Effect": "Allow",
            "Action": [
                "s3:ListBucket"
            ],
            "Resource": [
                "arn:aws:s3:::amzn-s3-demo-bucket"
            ]
        },
        {
            "Sid": "AllObjectActions",
            "Effect": "Allow",
            "Action": "s3:*Object",
            "Resource": [
                "arn:aws:s3:::amzn-s3-demo-bucket/*"
            ]
        }
    ]
}
```

------

## Uso de políticas de recursos de bucket para el control de acceso a los buckets de Amazon S3
<a name="s3-permissions-bucket-resource-policies"></a>

Puede utilizar políticas de buckets de Amazon S3 para proteger el acceso a los objetos de los buckets, de modo que solo los usuarios con los permisos adecuados puedan acceder a estos. Para obtener orientación sobre cómo crear la política de Amazon S3, consulte [Agregar una política de bucket mediante la Consola de Amazon S3](https://docs.aws.amazon.com/AmazonS3/latest/userguide/add-bucket-policy.html) en la *Guía del usuario de Amazon S3*.

El siguiente ejemplo de política de permisos limita a un usuario a leer objetos que tengan la clave y el valor de la etiqueta `environment: production`. Esta política usa la clave de condición `s3:ExistingObjectTag` para especificar la clave y el valor de la etiqueta.

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Principal": {
                "AWS": "arn:aws:iam::111122223333:role/JohnDoe"
            },
            "Effect": "Allow",
            "Action": [
                "s3:GetObject",
                "s3:GetObjectVersion"
            ],
            "Resource": "arn:aws:s3:::amzn-s3-demo-bucket/*",
            "Condition": {
                "StringEquals": {
                    "s3:ExistingObjectTag/environment": "production"
                }
            }
        }
    ]
}
```

------

Para obtener más ejemplos de políticas de bucket, consulte [Ejemplos de políticas de bucket de Amazon S3](https://docs.aws.amazon.com/AmazonS3/latest/userguide/example-bucket-policies.html) en la *Guía del usuario de Amazon S3*.

## Uso de los puntos de acceso de Amazon S3 para un control más preciso del acceso al bucket
<a name="s3-permissions-aliases"></a>

Si tiene un conjunto de datos compartido en un bucket de Amazon S3, puede resultar difícil mantener una política de bucket única que administre el acceso para cientos de casos de uso.

Los puntos de acceso, las políticas y los alias del bucket de Amazon S3 pueden ayudar a resolver este problema. Un bucket puede tener varios puntos de acceso, cada uno con una política que controla el acceso al bucket de forma diferente. 

Para cada punto de acceso que cree, Amazon S3 genera un alias que representa el punto de acceso. Debido a que el alias está en formato de nombre de bucket de Amazon S3, puede utilizar el alias de la cláusula `LOCATION` de sus instrucciones `CREATE TABLE` en Athena. La política para el punto de acceso que representa el alias controla entonces el acceso de Athena al bucket. 

Para obtener más información, consulte [Especificación de la ubicación de una tabla en Amazon S3](tables-location-format.md) y [Cómo utilizar los puntos de acceso](https://docs.aws.amazon.com/AmazonS3/latest/userguide/access-points.html) en la *Guía del usuario de Amazon S3*.

## Uso de las claves contextuales de CalledVia para permitir únicamente las llamadas de Athena a otro servicio
<a name="s3-permissions-calledvia"></a>

Para mayor seguridad, 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). La clave de condición `aws:CalledVia` contiene una lista de servicios que se permiten llamar a otro servicio. Por ejemplo, puedes permitir llamadas de `InvokeFunction` a AWS Lambda solo si provienen de Athena y debe especificar el nombre de la entidad principal del servicio de Athena, `athena.amazonaws.com`, para la clave de contexto `aws:CalledVia`. Para obtener más información, consulte [Uso de las claves de contexto CalledVia para Athena](security-iam-athena-calledvia.md).

## Recursos adicionales
<a name="s3-permissions-additional-resources"></a>

Para obtener información detallada y ejemplos acerca de cómo conceder acceso a Amazon S3, consulte los siguientes recursos:
+ [Ejemplos de explicaciones: Administración de acceso](https://docs.aws.amazon.com/AmazonS3/latest/userguide/example-walkthroughs-managing-access.html) en la *Guía del usuario de Simple Storage Service (Amazon S3)*.
+ [¿Cómo puedo proporcionar acceso entre cuentas a objetos que se encuentran en buckets de Amazon S3?](https://aws.amazon.com/premiumsupport/knowledge-center/cross-account-access-s3/) en el Centro de conocimientos de AWS.
+ [Configuración del acceso entre cuentas en Athena a los buckets de Amazon S3](cross-account-permissions.md).

# Configuración del acceso entre cuentas en Athena a los buckets de Amazon S3
<a name="cross-account-permissions"></a>

Es habitual en Amazon Athena que se conceda acceso a usuarios de una cuenta que no sea la cuenta del propietario del bucket, a fin de que dichos usuarios puedan realizar consultas. En este caso utilice una política de bucket para conceder acceso.

**nota**  
Para obtener información sobre el acceso entre cuentas a catálogos de datos de AWS Glue desde Athena, consulte [Configuración del acceso entre cuentas a los catálogos de datos de AWS Glue](security-iam-cross-account-glue-catalog-access.md).

La siguiente política de bucket de ejemplo, creada y aplicada al bucket `s3://amzn-s3-demo-bucket` por el propietario del bucket, concede acceso a todos los usuarios de la cuenta `123456789123`, que es una cuenta diferente.

------
#### [ JSON ]

****  

```
{
   "Version":"2012-10-17",		 	 	 
   "Id": "MyPolicyID",
   "Statement": [
      {
          "Sid": "MyStatementSid",
          "Effect": "Allow",
          "Principal": {
             "AWS": "arn:aws:iam::123456789123:root"
          },
          "Action": [
             "s3:GetBucketLocation",
             "s3:GetObject",
             "s3:ListBucket",
             "s3:ListBucketMultipartUploads",
             "s3:ListMultipartUploadParts",
             "s3:AbortMultipartUpload"
          ],
          "Resource": [
             "arn:aws:s3:::amzn-s3-demo-bucket",
             "arn:aws:s3:::amzn-s3-demo-bucket/*"
          ]
       }
    ]
 }
```

------

Para conceder acceso a un usuario determinado de una cuenta, reemplace la clave `Principal` por una clave que especifique al usuario en lugar de `root`. Por ejemplo, para el perfil de usuario `Dave` utilice `arn:aws:iam::123456789123:user/Dave`.

## Configuración del acceso entre cuentas a un bucket cifrado con una clave AWS KMS personalizada
<a name="cross-account-permissions-kms"></a>

Si tiene un bucket de Amazon S3 cifrado con una clave AWS Key Management Service (AWS KMS) personalizada, es posible que deba conceder acceso a él a los usuarios desde otra cuenta de Amazon Web Services.

La concesión de acceso a un bucket AWS KMS cifrado en la cuenta A a un usuario de la cuenta B requiere los siguientes permisos:
+ La política de bucket de la cuenta A debe conceder acceso al rol asumido por la cuenta B.
+ La política de claves de AWS KMS de la cuenta A debe conceder acceso al rol asumido por el usuario de la cuenta B.
+ El rol de AWS Identity and Access Management (IAM) asumido por la cuenta B debe conceder acceso tanto al bucket como a la clave de la cuenta A.

En los siguientes procedimientos se describe cómo conceder cada uno de estos permisos.

**Para conceder acceso al bucket de la cuenta A al usuario de la cuenta B**
+ En la cuenta A, [revise la política de bucket de S3](https://docs.aws.amazon.com/AmazonS3/latest/userguide/add-bucket-policy.html) y confirme que existe una declaración que permite el acceso desde el ID de cuenta de la cuenta B.

  Por ejemplo, la siguiente política de bucket permite el acceso `s3:GetObject` al ID de cuenta `111122223333`:

------
#### [ JSON ]

****  

  ```
  {
    "Id": "ExamplePolicy1",
    "Version":"2012-10-17",		 	 	 
    "Statement": [
      {
        "Sid": "ExampleStmt1",
        "Action": [
          "s3:GetObject"
        ],
        "Effect": "Allow",
        "Resource": "arn:aws:s3:::amzn-s3-demo-bucket/*",
        "Principal": {
          "AWS": [
            "111122223333"
          ]
        }
      }
    ]
  }
  ```

------

**Para conceder acceso al usuario de la cuenta B desde la política clave AWS KMS de la cuenta A**

1. En la política de claves de AWS KMS de la cuenta A, conceda al rol asumido por la cuenta B permisos para las siguientes acciones:
   +  `kms:Encrypt` 
   +  `kms:Decrypt` 
   +  `kms:ReEncrypt*` 
   +  `kms:GenerateDataKey*` 
   +  `kms:DescribeKey` 

   En el siguiente ejemplo se concede acceso de clave a un solo rol de IAM.

------
#### [ JSON ]

****  

   ```
   {
       "Version":"2012-10-17",		 	 	 
       "Statement": [
           {
               "Sid": "AllowUseOfTheKey",
               "Effect": "Allow",
               "Principal": {
                   "AWS": "arn:aws:iam::111122223333:role/role_name"
               },
               "Action": [
                   "kms:Encrypt",
                   "kms:Decrypt",
                   "kms:ReEncrypt*",
                   "kms:GenerateDataKey*",
                   "kms:DescribeKey"
               ],
               "Resource": "*"
           }
       ]
   }
   ```

------

1. En la cuenta A, revise la política de claves [mediante la vista de políticas de la Consola de administración de AWS](https://docs.aws.amazon.com/kms/latest/developerguide/key-policy-modifying.html#key-policy-modifying-how-to-console-policy-view).

1. En la política clave, compruebe que la siguiente instrucción muestra la cuenta B como entidad principal.

   ```
   "Sid": "Allow use of the key" 
   ```

1. Si la instrucción `"Sid": "Allow use of the key"` no está presente, lleve a cabo los siguientes pasos:

   1. Cambie para ver la política clave [mediante la vista predeterminada de la consola](https://docs.aws.amazon.com/kms/latest/developerguide/key-policy-modifying.html#key-policy-modifying-how-to-console-default-view). 

   1.  Añada el ID de cuenta de la cuenta B como una cuenta externa con acceso a la clave.

**Para conceder acceso al bucket y a la clave de la cuenta A desde el rol de IAM asumido por la cuenta B**

1. Desde la cuenta B, abra la consola de IAM en [https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/).

1. Abra el rol de IAM asociado al usuario en la cuenta B.

1. Revise la lista de políticas de permisos aplicadas al rol de IAM.

1. Asegúrese de que se aplica una política que conceda acceso al bucket.

   La siguiente instrucción de ejemplo concede al rol de IAM acceso a las operaciones `s3:GetObject` y `s3:PutObject` en el bucket `amzn-s3-demo-bucket`:

------
#### [ JSON ]

****  

   ```
   {
     "Version":"2012-10-17",		 	 	 
     "Statement": [
       {
         "Sid": "ExampleStmt2",
         "Action": [
           "s3:GetObject",
           "s3:PutObject"
         ],
         "Effect": "Allow",
         "Resource": "arn:aws:s3:::amzn-s3-demo-bucket/*"
       }
     ]
   }
   ```

------

1. Asegúrese de que se aplica una política que conceda acceso a la clave.
**nota**  
Si el rol de IAM de la cuenta B ya tiene [acceso de administrador](https://docs.aws.amazon.com/IAM/latest/UserGuide/getting-started_create-admin-group.html), no es necesario conceder acceso a la clave desde las políticas de IAM del usuario.

   La siguiente instrucción de ejemplo concede al rol de IAM acceso para utilizar la clave `arn:aws:kms:us-west-2:123456789098:key/111aa2bb-333c-4d44-5555-a111bb2c33dd`.

------
#### [ JSON ]

****  

   ```
   {
     "Version":"2012-10-17",		 	 	 
     "Statement": [
       {
         "Sid": "ExampleStmt3",
         "Action": [
           "kms:Decrypt",
           "kms:DescribeKey",
           "kms:Encrypt",
           "kms:GenerateDataKey",
           "kms:ReEncrypt*"
         ],
         "Effect": "Allow",
         "Resource": "arn:aws:kms:us-west-2:123456789098:key/111aa2bb-333c-4d44-5555-a111bb2c33dd"
       }
     ]
   }
   ```

------

## Configuración del acceso entre cuentas a los objetos del bucket
<a name="cross-account-permissions-objects"></a>

Los objetos cargados por una cuenta (cuenta C) distinta de la cuenta propietaria del bucket (cuenta A) pueden requerir ACL explícitas de nivel de objeto que concedan acceso de lectura a la cuenta que realiza la consulta (cuenta B). Para evitar este requisito, la cuenta C debe asumir un rol en la cuenta A antes de colocar objetos en el bucket de la cuenta A. Para obtener más información, consulte [¿Cómo puedo proporcionar acceso entre cuentas a objetos que se encuentran en buckets de Amazon S3?](https://aws.amazon.com/premiumsupport/knowledge-center/cross-account-access-s3/).

# Configuración del acceso a las bases de datos y tablas en el AWS Glue Data Catalog
<a name="fine-grained-access-to-glue-resources"></a>

Si utiliza la opción AWS Glue Data Catalog con Amazon Athena, puede definir políticas de nivel de recursos para la base de datos y los objetos del catálogo de datos que se utilizan en Athena.

**nota**  
En este tema se analiza la seguridad a nivel de bases de datos y tablas. Para obtener información sobre cómo configurar la seguridad a nivel de columna, fila y celda, consulte [Filtrado de datos y seguridad a nivel de celda en Lake Formation](https://docs.aws.amazon.com/lake-formation/latest/dg/data-filtering.html). 

Puede definir los permisos de nivel de recursos en las políticas basadas en identidad de IAM.

**importante**  
En esta sección se analizan los permisos de nivel de recursos en las políticas basadas en identidad de IAM. Son diferentes de las políticas basadas en recursos. Para obtener más información sobre las diferencias, consulte [Políticas basadas en identidad y políticas basadas en recursos](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_identity-vs-resource.html) en la *Guía del usuario de IAM*.

Consulte los siguientes temas sobre estas tareas: 


| Para llevar a cabo esta tarea | consulte el siguiente tema | 
| --- | --- | 
| Creación de una política de IAM que defina el acceso a los recursos | [Creación de políticas de IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_create.html) en la Guía del usuario de IAM. | 
| Más información acerca de las políticas basadas en identidad de IAM que se utilizan en el AWS Glue | [Políticas basadas en identidad (políticas de IAM)](https://docs.aws.amazon.com/glue/latest/dg/using-identity-based-policies.html) en la Guía para desarrolladores de AWS Glue.  | 

 **En esta sección** 
+  [Limitaciones](#access-to-glue-resources-limitations) 
+  [Configuración del acceso de AWS Glue a su catálogo y base de datos por Región de AWS](#full-access-to-default-db-per-region) 
+  [Acerca del control de acceso para las particiones y versiones de tablas en AWS Glue](#access-to-glue-resources-table-partitions-and-versions) 
+  [Ejemplos de permisos a nivel de base de datos y tabla](#examples-fine-grained-table-database-policies) 

## Limitaciones
<a name="access-to-glue-resources-limitations"></a>

Tenga en cuenta las siguientes limitaciones cuando utilice el control de acceso a nivel de base de datos y tabla para AWS Glue Data Catalog y Athena:
+ Los grupos de trabajo de Athena habilitados para IAM Identity Center requieren que Lake Formation esté configurado para utilizar las identidades del IAM Identity Center. Para obtener más información, consulte [Integración del IAM Identity Center](https://docs.aws.amazon.com/lake-formation/latest/dg/identity-center-integration.html) en la *Guía para desarrolladores de AWS Lake Formation*. 
+ El acceso solo puede limitarse a bases de datos y tablas. Estos controles se aplican a nivel de tabla. No se puede limitar el acceso a particiones individuales dentro de una tabla. Para obtener más información, consulte [Acerca del control de acceso para las particiones y versiones de tablas en AWS Glue](#access-to-glue-resources-table-partitions-and-versions).
+ El AWS Glue Data Catalog contiene los siguientes recursos: `CATALOG`, `DATABASE`, `TABLE` y `FUNCTION`. 
**nota**  
En esta lista, los recursos que son comunes entre Athena y AWS Glue Data Catalog son `TABLE`, `DATABASE` y `CATALOG` para cada cuenta. `Function` es específico de AWS Glue. Para eliminar acciones en Athena, debe incluir los permisos a las acciones de AWS Glue. Consulte [Ejemplos de permisos a nivel de base de datos y tabla](#examples-fine-grained-table-database-policies).

  La jerarquía es la siguiente: `CATALOG` es un antecesor de todas las `DATABASES` de cada cuenta y cada `DATABASE` es un antecesor de todas sus `TABLES` y `FUNCTIONS`. Por ejemplo, en el caso de una tabla denominada `table_test` que pertenezca a una base de datos `db` del catálogo de su cuenta, sus antecesores son `db` y el catálogo de su cuenta. Para la base de datos `db`, su antecesor es el catálogo de su cuenta y sus descendientes son las tablas y funciones. Para obtener más información acerca de la estructura jerárquica de los recursos, consulte [Lista de ARN del catálogo de datos](https://docs.aws.amazon.com/glue/latest/dg/glue-specifying-resource-arns.html#data-catalog-resource-arns) en la *Guía para desarrolladores de AWS Glue*. 
+ Para cualquier acción de Athena en un registro distinta a la operación de eliminación, como `CREATE DATABASE`, `CREATE TABLE`, `SHOW DATABASE`, `SHOW TABLE` o `ALTER TABLE`, necesita permisos para llamar a esta acción en el recurso (tabla o base de datos) y en todos los antecesores de ese recurso en el catálogo de datos. Por ejemplo, en el caso de una tabla, sus antecesores son la base de datos a la que pertenece y el catálogo de la cuenta. En el caso de una base de datos, su antecesor es el catálogo de la cuenta. Consulte [Ejemplos de permisos a nivel de base de datos y tabla](#examples-fine-grained-table-database-policies). 
+ Para una acción de eliminación en Athena, como `DROP DATABASE` o `DROP TABLE`, también necesita permisos para llamar a la acción de eliminación en todos los antecesores y descendientes del recurso en el catálogo de datos. Por ejemplo, para eliminar una base de datos necesita permisos en la base de datos, el catálogo, que es su antecesor, y todas las tablas y funciones definidas por el usuario, que son sus descendientes. Una tabla no tiene descendientes. Para ejecutar `DROP TABLE`, necesita permisos para esta acción en la tabla, la base de datos a la que pertenece y el catálogo. Consulte [Ejemplos de permisos a nivel de base de datos y tabla](#examples-fine-grained-table-database-policies).

## Configuración del acceso de AWS Glue a su catálogo y base de datos por Región de AWS
<a name="full-access-to-default-db-per-region"></a>

Para que Athena pueda trabajar con AWS Glue, se requiere una política que conceda el acceso a su base de datos y al AWS Glue Data Catalog en su cuenta por Región de AWS. Para crear bases de datos, también se requiere el permiso `CreateDatabase`. En el siguiente ejemplo de política, sustituya la Región de AWS, el ID de la Cuenta de AWS y el nombre de la base de datos por los suyos.

```
{
   "Sid": "DatabasePermissions",
   "Effect": "Allow",
   "Action": [
      "glue:GetDatabase", 
      "glue:GetDatabases",
      "glue:CreateDatabase"
   ],
   "Resource": [
     "arn:aws:glue:us-east-1:123456789012:catalog",
     "arn:aws:glue:us-east-1:123456789012:database/default"
   ]
}
```

## Acerca del control de acceso para las particiones y versiones de tablas en AWS Glue
<a name="access-to-glue-resources-table-partitions-and-versions"></a>

En AWS Glue, las tablas pueden tener particiones y versiones. Las versiones y particiones de tabla no se consideran recursos independientes en AWS Glue. El acceso a las versiones y particiones de tabla se otorga concediendo acceso a la tabla y a los recursos antecesores de la tabla. 

A efectos de control de acceso, se aplican los siguientes permisos de acceso:
+ Los controles se aplican a nivel de tabla. El acceso solo puede limitarse a bases de datos y tablas. Por ejemplo, si permite el acceso a una tabla particionada, este acceso se aplica a todas las particiones de la tabla. No se puede limitar el acceso a particiones individuales dentro de una tabla. 
**importante**  
A fin de ejecutar acciones de AWS Glue en las particiones, se requieren permisos para las acciones de partición en los niveles de catálogo, base de datos y tabla. No basta con tener acceso a las particiones de una tabla. Por ejemplo, para ejecutar `GetPartitions` en la tabla `myTable` de la base de datos `myDB`, debe otorgar permisos de `glue:GetPartitions` en el catálogo, la base de datos `myDB` y los recursos de la tabla `myTable`. 
+ Los controles de acceso no se aplican a las versiones de las tablas. Al igual que ocurre con las particiones, el acceso a las versiones anteriores de una tabla se concede mediante el acceso a las API de versión de tabla de AWS Glue en la tabla y en los antecesores de la tabla.

Para obtener información sobre los permisos para las acciones de AWS Glue, consulte [Permisos de API de AWS Glue: referencia de recursos y acciones](https://docs.aws.amazon.com/glue/latest/dg/api-permissions-reference.html) en la *Guía para desarrolladores de AWS Glue*. 

## Ejemplos de permisos a nivel de base de datos y tabla
<a name="examples-fine-grained-table-database-policies"></a>

La siguiente tabla enumera ejemplos de políticas basadas en identidad de IAM que permiten el acceso a bases de datos y tablas en Athena. Le sugerimos que comience con estos ejemplos y, en función de sus necesidades, los ajuste para permitir o denegar acciones específicas con bases de datos y tablas determinadas.

Estos ejemplos incluyen el acceso a bases de datos y catálogos para que Athena y AWS Glue pueden trabajar juntos. En el caso de trabajar en varias regiones de AWS, incluya políticas similares para cada una de las bases de datos y catálogos, con una línea por cada región. 

En los ejemplos, sustituya la base de datos `example_db` y la tabla `test` por sus propios nombres de base de datos y tabla.


| Instrucción DDL | Ejemplo de una política de acceso de IAM que concede acceso al recurso | 
| --- | --- | 
| ALTER DATABASE | Permite modificar las propiedades de la base de datos example\$1db.<pre>{<br />   "Effect": "Allow",<br />   "Action": [<br />      "glue:GetDatabase", <br />      "glue:UpdateDatabase"<br />   ],<br />   "Resource": [<br />     "arn:aws:glue:us-east-1:123456789012:catalog",<br />     "arn:aws:glue:us-east-1:123456789012:database/example_db"<br />   ]<br />}</pre> | 
| CREATE DATABASE | Permite crear la base de datos con el nombre example\$1db.<pre>{<br />   "Effect": "Allow",<br />   "Action": [<br />      "glue:GetDatabase", <br />      "glue:CreateDatabase"<br />   ],<br />   "Resource": [<br />     "arn:aws:glue:us-east-1:123456789012:catalog",<br />     "arn:aws:glue:us-east-1:123456789012:database/example_db"<br />   ]<br />}<br /></pre> | 
| CREATE TABLE | Permite crear una tabla con el nombre test en la base de datos example\$1db.<pre>{<br />   "Sid": "DatabasePermissions",<br />   "Effect": "Allow",<br />   "Action": [<br />      "glue:GetDatabase", <br />      "glue:GetDatabases"<br />   ],<br />   "Resource": [<br />     "arn:aws:glue:us-east-1:123456789012:catalog",<br />     "arn:aws:glue:us-east-1:123456789012:database/example_db"<br />   ]<br />},<br />{<br />   "Sid": "TablePermissions",<br />   "Effect": "Allow",<br />   "Action": [<br />      "glue:GetTables",<br />      "glue:GetTable",<br />      "glue:GetPartitions",<br />      "glue:CreateTable"<br />   ],<br />   "Resource": [<br />     "arn:aws:glue:us-east-1:123456789012:catalog",<br />     "arn:aws:glue:us-east-1:123456789012:database/example_db",<br />     "arn:aws:glue:us-east-1:123456789012:table/example_db/test"<br />   ]<br />}</pre> | 
| DROP DATABASE | Permite borrar la base de datos example\$1db, incluidas todas las tablas que contiene.<pre>{<br />   "Effect": "Allow",<br />   "Action": [<br />      "glue:GetDatabase",<br />      "glue:DeleteDatabase",<br />      "glue:GetTables", <br />      "glue:GetTable", <br />      "glue:DeleteTable" <br />   ],<br />   "Resource": [<br />     "arn:aws:glue:us-east-1:123456789012:catalog",<br />     "arn:aws:glue:us-east-1:123456789012:database/example_db", <br />     "arn:aws:glue:us-east-1:123456789012:table/example_db/*", <br />     "arn:aws:glue:us-east-1:123456789012:userDefinedFunction/example_db/*"<br />   ]<br /> }</pre> | 
| DROP TABLE | Permite borrar una tabla particionada llamada test en la base de datos example\$1db. Si la tabla no tiene particiones, no incluya acciones de partición.<pre>{<br />   "Effect": "Allow",<br />   "Action": [<br />      "glue:GetDatabase",<br />      "glue:GetTable",<br />      "glue:DeleteTable", <br />      "glue:GetPartitions",<br />      "glue:GetPartition",<br />      "glue:DeletePartition" <br />   ],<br />   "Resource": [<br />     "arn:aws:glue:us-east-1:123456789012:catalog",<br />     "arn:aws:glue:us-east-1:123456789012:database/example_db", <br />     "arn:aws:glue:us-east-1:123456789012:table/example_db/test"<br />   ]<br /> }</pre> | 
| MSCK REPAIR TABLE | Permite actualizar los metadatos del catálogo después de agregar particiones compatibles con Hive a la tabla denominada test en la base de datos example\$1db.<pre>{<br />    "Effect": "Allow",<br />    "Action": [<br />        "glue:GetDatabase",<br />        "glue:CreateDatabase",<br />        "glue:GetTable",<br />        "glue:GetPartitions",<br />        "glue:GetPartition",<br />        "glue:BatchCreatePartition"<br />    ],<br />    "Resource": [<br />      "arn:aws:glue:us-east-1:123456789012:catalog",<br />      "arn:aws:glue:us-east-1:123456789012:database/example_db", <br />      "arn:aws:glue:us-east-1:123456789012:table/example_db/test"<br />    ]<br />}</pre> | 
| SHOW DATABASES | Permite enumerar todas las bases de datos en AWS Glue Data Catalog.<pre>{<br />   "Effect": "Allow",<br />   "Action": [<br />      "glue:GetDatabase",<br />      "glue:GetDatabases" <br />   ],<br />   "Resource": [<br />     "arn:aws:glue:us-east-1:123456789012:catalog",<br />     "arn:aws:glue:us-east-1:123456789012:database/*"<br />   ]<br /> }</pre> | 
| SHOW TABLES | Permite enumerar todas las tablas de la base de datos example\$1db.<pre>{<br />   "Effect": "Allow",<br />   "Action": [<br />      "glue:GetDatabase",<br />      "glue:GetTables"    <br />   ],<br />   "Resource": [<br />     "arn:aws:glue:us-east-1:123456789012:catalog",<br />     "arn:aws:glue:us-east-1:123456789012:database/example_db",  <br />     "arn:aws:glue:us-east-1:123456789012:table/example_db/*"<br />   ]<br />}</pre> | 

# Configuración del acceso entre cuentas a los catálogos de datos de AWS Glue
<a name="security-iam-cross-account-glue-catalog-access"></a>

Puede utilizar la característica de catálogo de AWS Glue de cuentas cruzadas de Athena para registrar un catálogo AWS Glue desde una cuenta que no sea la suya. Una vez configurados los permisos de IAM necesarios para AWS Glue y registrar el catálogo como un recurso de Athena [DataCatalog](https://docs.aws.amazon.com/athena/latest/APIReference/API_DataCatalog.html), puede utilizar Athena para ejecutar consultas entre cuentas. Para obtener información sobre cómo utilizar la consola de Athena para registrar un catálogo de otra cuenta, consulte [Registrar un catálogo de datos desde otra cuenta](data-sources-glue-cross-account.md).

Para obtener más información sobre el acceso entre cuentas en AWS Glue,consulte [Concesión de acceso entre cuentas](https://docs.aws.amazon.com/glue/latest/dg/cross-account-access.html) en la *Guía para desarrolladores de AWS Glue*.

## Antes de comenzar
<a name="security-iam-cross-account-glue-catalog-access-before-you-start"></a>

Debido a que esta característica utiliza API y funciones de recursos `DataCatalog` de Athena existentes para habilitar el acceso entre cuentas, le recomendamos que lea los siguientes recursos antes de comenzar:
+ [Conexión con orígenes de datos](work-with-data-stores.md): contiene temas sobre el uso de Athena con fuentes del catálogo de datos de AWS Glue, Hive o Lambda.
+ [Políticas de catálogos de datos de ejemplo](datacatalogs-example-policies.md): muestra cómo escribir políticas que controlan el acceso a catálogos de datos.
+ [Uso de la AWS CLI con metastores de Hive](datastores-hive-cli.md): muestra cómo utilizar la AWS CLI con metaalmacenes de Hive, pero contiene casos de uso aplicables a otras fuentes de datos.

## Consideraciones y limitaciones
<a name="security-iam-cross-account-glue-catalog-access-considerations-and-limitations"></a>

Actualmente, el acceso al catálogo AWS Glue entre cuentas de Athena tiene las siguientes limitaciones:
+ La característica está disponible únicamente en las Regiones de AWS en las que se admite la versión 2 o una versión posterior del motor Athena. Para obtener más información acerca de las versiones de motor Athena, consulte [Control de versiones del motor Athena](engine-versions.md). Para actualizar la versión del motor de un grupo de trabajo, consulte [Cambio de las versiones del motor Athena](engine-versions-changing.md).
+ Cuando registra en su cuenta el AWS Glue Data Catalog de otra cuenta, crea un recurso `DataCatalog` regional que está vinculado a los datos de la otra cuenta en esa región en particular solamente.
+ En la actualidad, las instrucciones `CREATE VIEW` que incluyen un catálogo AWS Glue entre cuentas no son compatibles.
+ Los catálogos cifrados con claves administradas por AWS no se pueden consultar en todas las cuentas. Si desea consultar catálogos en todas las cuentas, utilice claves administradas por el cliente (`KMS_CMK`). Para obtener más información sobre las diferencias entre las claves administradas por el cliente y las claves administradas por AWS, consulte [Claves del cliente y claves de AWS](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#key-mgmt                     ) en la *Guía para desarrolladores de AWS Key Management Service*. 

## Introducción
<a name="security-iam-cross-account-glue-catalog-getting-started"></a>

En el siguiente escenario, la cuenta “Prestatario” (666666666666) quiere ejecutar una consulta `SELECT` que hace referencia al catálogo AWS Glue que pertenece a la cuenta “Propietario” (999999999999), como en el siguiente ejemplo:

```
SELECT * FROM ownerCatalog.tpch1000.customer
```

En el siguiente procedimiento, los pasos 1a y 1b muestran cómo concederle acceso de la cuenta del prestatario a los recursos de AWS Glue de la cuenta del propietario, tanto desde la perspectiva del propietario como desde la perspectiva del prestatario. El ejemplo concede acceso a la base de datos `tpch1000` y la tabla `customer`. Cambie estos nombres de ejemplo para adaptarlos a sus necesidades.

### Paso 1a: creación un rol de prestatario con una política para acceder a los recursos de AWS Glue del propietario
<a name="security-iam-cross-account-glue-catalog-access-step-1a"></a>

Para crear un rol de cuenta del prestatario con una política para acceder a los recursos de AWS Glue de la cuenta del propietario, puede utilizar la consola de AWS Identity and Access Management (IAM) o la [API de IAM](https://docs.aws.amazon.com/IAM/latest/APIReference/API_Operations.html). El siguiente procedimiento utiliza la consola de IAM.

**Cómo crear un rol de prestatario y una política para acceder a los recursos de AWS Glue de la cuenta del propietario**

1. Inicie sesión en la consola de IAM en [https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/) desde la cuenta del prestatario.

1. En el panel de navegación, amplíe **Administración de acceso** y, a continuación, seleccione **Políticas**.

1. Elija **Crear política**.

1. En el **editor de políticas**, seleccione **JSON**.

1. En el editor de políticas, ingrese la siguiente política y, a continuación, modifíquela de acuerdo con sus requisitos:

------
#### [ JSON ]

****  

   ```
   {
       "Version":"2012-10-17",		 	 	 
       "Statement": [
           {
               "Effect": "Allow",
               "Action": "glue:*",
               "Resource": [
                   "arn:aws:glue:us-east-1:999999999999:catalog",
                   "arn:aws:glue:us-east-1:999999999999:database/tpch1000",
                   "arn:aws:glue:us-east-1:999999999999:table/tpch1000/customer"
               ]
           }
       ]
   }
   ```

------

1. Elija **Siguiente**.

1. En la página **Revisar y crear**, en **Nombre de la política**, ingrese un nombre para la política, (por ejemplo, **CrossGluePolicyForBorrowerRole**).

1. Elija **Crear política**.

1. Seleccione **Roles** en el panel de navegación.

1. Elija **Creación de rol**.

1. En la página **Seleccionar entidad de confianza** elija **Cuenta de AWS**, y luego **Siguiente**.

1. En la página **Añadir permisos**, escriba el nombre de la política que creó en el cuadro de búsqueda (por ejemplo, **CrossGluePolicyForBorrowerRole**).

1. Elija la casilla de verificación situada junto al nombre de la política y, a continuación, elija **Siguiente**.

1. En la página **Name, review, and create** (Nombrar, revisar y crear), en **Role name** (Nombre del rol), ingrese un nombre para el rol (por ejemplo, **CrossGlueBorrowerRole**).

1. Seleccione **Crear rol**.

### Paso 1b: creación de una política de propietario para concederle acceso a AWS Glue al prestatario
<a name="security-iam-cross-account-glue-catalog-access-step-1b"></a>

Para conceder acceso a AWS Glue desde la cuenta del propietario (999999999999) al rol de prestatario, puede utilizar la consola de AWS Glue o la operación de la API [PutResourcePolicy](https://docs.aws.amazon.com/glue/latest/webapi/API_PutResourcePolicy.html) de AWS Glue. El siguiente procedimiento utiliza la consola de AWS Glue.

**Para conceder acceso a AWS Glue a la cuenta de prestatario desde el propietario**

1. Inicie sesión en la consola de AWS Glue en [https://console.aws.amazon.com/glue/](https://console.aws.amazon.com/glue/) desde la cuenta del propietario.

1. En el panel de navegación, amplíe **Catálogo de datos** y, a continuación, elija **Configuración del catálogo**.

1. En el navegador **Permissions** (Permisos), ingrese una política como la siguiente. Para *rolename*, introduzca el rol que el prestatario creó en el paso 1a (por ejemplo, **CrossGlueBorrowerRole**). Si desea aumentar el alcance de los permisos, puede utilizar el carácter comodín `*` para los tipos de recursos de base de datos y tabla.

------
#### [ JSON ]

****  

   ```
   {
       "Version":"2012-10-17",		 	 	 
       "Statement": [
           {
               "Effect": "Allow",
               "Principal": {
                   "AWS": [
                       "arn:aws:iam::666666666666:user/username",
                       "arn:aws:iam::666666666666:role/rolename"
                   ]
               },
               "Action": "glue:*",
               "Resource": [
                   "arn:aws:glue:us-east-1:999999999999:catalog",
                   "arn:aws:glue:us-east-1:999999999999:database/tpch1000",
                   "arn:aws:glue:us-east-1:999999999999:table/tpch1000/customer"
               ]
           }
       ]
   }
   ```

------

Después de terminar, se recomienda que utilice la [API de AWS Glue](https://docs.aws.amazon.com/glue/latest/dg/aws-glue-api.html) para realizar algunas llamadas de prueba entre cuentas y confirmar que los permisos están configurados de la manera esperada.

### Paso 2: El prestatario registra la AWS Glue Data Catalog que pertenece a la cuenta de propietario
<a name="security-iam-cross-account-glue-catalog-access-step-2"></a>

El siguiente procedimiento muestra cómo utilizar la consola de Athena para configurar la AWS Glue Data Catalog en la cuenta de Amazon Web Services del propietario como origen de datos. Para obtener información sobre el uso de operaciones de API en lugar de la consola para registrar el catálogo, consulte [(Opcional) Uso de la API para registrar un catálogo de datos de Athena que pertenece a la cuenta propietaria](#security-iam-cross-account-glue-catalog-access-step-2-api).

**Para registrar una AWS Glue Data Catalog que pertenece a otra cuenta**

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

1. Si el panel de navegación de la consola no está visible, elija el menú de expansión de la izquierda.  
![\[Elija el menú de expansión.\]](http://docs.aws.amazon.com/es_es/athena/latest/ug/images/nav-pane-expansion.png)

1. Amplíe **Administración** y, a continuación, elija **Orígenes de datos**.

1. En la parte superior derecha de la consola, seleccione **Create data source** (Crear origen de datos).

1. En la página **Elegir un origen de datos**, para **Orígenes de datos**, seleccione **S3: AWS Glue Data Catalog** y, a continuación, elija **Siguiente**.

1. En la página **Introducir detalles del origen de datos**, en la sección **AWS Glue Data Catalog**, para **Elegir un AWS Glue Data Catalog**, elija **AWS Glue Data Catalog en otra cuenta**.

1. En **Dataset details** (Detalles del origen de datos), ingrese la siguiente información:
   + **Data source name** (Nombre del origen de datos): ingrese el nombre que desea utilizar en las consultas SQL para hacer referencia al catálogo de datos de la otra cuenta.
   + **Descripción**: (opcional) ingrese una descripción del catálogo de datos en la otra cuenta.
   + **ID del catálogo**: ingrese el ID de cuenta de Amazon Web Services de 12 dígitos de la cuenta a la que pertenece el catálogo de datos. El ID de cuenta de Amazon Web Services es el ID del catálogo.

1. (Opcional) Amplíe **Etiquetas** y luego ingrese los pares clave-valor que quiera asociar con el origen de datos. Para obtener más información acerca de las etiquetas, consulte [Etiquetado de recursos de Athena](tags.md).

1. Elija **Siguiente**.

1. En la página **Review and create** (Revisar y crear), revise la información que ha proporcionado y, a continuación, elija **Create data source** (Crear un origen de datos). En la página **Data source details** (Detalles de origen de datos) se enumeran las bases de datos y etiquetas del catálogo de datos que ha registrado.

1. Elija **Orígenes de datos y catálogos**. El catálogo de datos que ha registrado se muestra en la columna **Data source name** (Nombre de origen de datos).

1. Para ver o editar información sobre el nuevo catálogo de datos, elija el catálogo y, a continuación, elija **Actions** (Acciones) y **Edit** (Editar).

1. Para eliminar el nuevo catálogo de datos, elija el catálogo y, a continuación, elija **Actions** (Acciones) y **Delete** (Eliminar).

### Paso 3: El prestatario envía una consulta
<a name="security-iam-cross-account-glue-catalog-access-step-4"></a>

El prestatario envía una consulta que hace referencia al catálogo mediante la sintaxis *catalog*.*database*.*table*, como en el ejemplo siguiente:

```
SELECT * FROM ownerCatalog.tpch1000.customer
```

En lugar de utilizar la sintaxis completa, el prestatario también puede especificar el catálogo según el contexto si lo hace pasar por [QueryExecutionContext](https://docs.aws.amazon.com/athena/latest/APIReference/API_QueryExecutionContext.html).

## (Opcional) Configuración de permisos adicionales de Amazon S3
<a name="security-iam-cross-account-glue-catalog-access-additional-s3-permissions"></a>
+ Si la cuenta del prestatario utiliza una consulta de Athena para escribir nuevos datos en una tabla de la cuenta del propietario, el propietario no tendrá acceso de manera automática a estos datos en Amazon S3, aunque la tabla exista en la cuenta del propietario. Esto se debe a que, a menos que se configure lo contrario, el prestatario es el propietario del objeto de la información en Amazon S3. Para concederle acceso a los datos al propietario, establezca los permisos en los objetos de manera apropiada como paso adicional.
+ Ciertas operaciones de DDL entre cuentas como [MSCK REPAIR TABLE](msck-repair-table.md) requieren permisos de Amazon S3. Por ejemplo, si la cuenta del prestatario está realizando una operación `MSCK REPAIR` entre cuentas contra una tabla de la cuenta del propietario que tiene sus datos en un bucket de S3 de la cuenta de propietario, ese bucket debe concederle permisos al rol asumido por el prestatario para que la consulta se realice de forma correcta.

Para obtener más información acerca de cómo conceder permisos de buckets, consulte [¿Cómo configuro permisos de buckets con ACL?](https://docs.aws.amazon.com/AmazonS3/latest/user-guide/set-bucket-permissions.html) en la *Guía del usuario de Amazon Simple Storage Service*.

## (Opcional) Uso dinámico de un catálogo
<a name="security-iam-cross-account-glue-catalog-access-dynamic-catalogs"></a>

En algunos casos, es posible que desee realizar pruebas rápidamente contra un catálogo de AWS Glue entre cuentas sin el paso previo de registrarlo. Puede realizar consultas entre cuentas de forma dinámica sin crear el objeto de recurso `DataCatalog` si los permisos necesarios de IAM y Amazon S3 están configurados correctamente como se describió anteriormente en este documento.

Para hacer referencia explícita a un catálogo sin registro, utilice la sintaxis del ejemplo siguiente:

```
SELECT * FROM "glue:arn:aws:glue:us-east-1:999999999999:catalog".tpch1000.customer
```

Utilice el formato “`glue:<arn>`”, donde `<arn>` es el [ARN de AWS Glue Data Catalog](https://docs.aws.amazon.com/glue/latest/dg/glue-specifying-resource-arns.html#data-catalog-resource-arns) que desea utilizar. En el ejemplo, Athena utiliza esta sintaxis para apuntar dinámicamente al catálogo de datos AWS Glue de la cuenta 999999999999 como si hubiera creado por separado un objeto de `DataCatalog` para él.

### Notas para el uso de catálogos dinámicos
<a name="security-iam-cross-account-glue-catalog-access-notes-dynamic-catalogs"></a>

Cuando utilice catálogos dinámicos, recuerde los siguientes puntos.
+ El uso de un catálogo dinámico requiere los permisos de IAM que utiliza normalmente para las operaciones de API de catálogo de datos de Athena. La principal diferencia es que el nombre de recurso del catálogo de datos sigue la convención de nomenclatura de `glue:*`.
+ El ARN del catálogo debe pertenecer a la misma región en la que se está ejecutando la consulta.
+ Cuando utilice un catálogo dinámico en una consulta o vista DML, indíquelo con comillas dobles escapadas (`\"`). Cuando utilice un catálogo dinámico en una consulta DDL, indíquelo con acentos graves (```).

## (Opcional) Uso de la API para registrar un catálogo de datos de Athena que pertenece a la cuenta propietaria
<a name="security-iam-cross-account-glue-catalog-access-step-2-api"></a>

En lugar de utilizar la consola de Athena como se describe en el paso 2, se pueden utilizar las operaciones de la API para registrar el catálogo de datos que pertenece a la cuenta del propietario.

El creador del recurso [DataCatalog](https://docs.aws.amazon.com/athena/latest/APIReference/API_DataCatalog.html) de Athena debe tener los permisos necesarios para ejecutar la operación de la API [CreateDataCatalog](https://docs.aws.amazon.com/athena/latest/APIReference/API_CreateDataCatalog.html) de Athena. En función de sus requisitos, es posible que sea necesario acceder a operaciones de API adicionales. Para obtener más información, consulte [Políticas de catálogos de datos de ejemplo](datacatalogs-example-policies.md).

El siguiente cuerpo de solicitud de `CreateDataCatalog` registra un catálogo de AWS Glue para acceso entre cuentas:

```
# Example CreateDataCatalog request to register a cross-account Glue catalog:
{
    "Description": "Cross-account Glue catalog",
    "Name": "ownerCatalog",
    "Parameters": {"catalog-id" : "999999999999"  # Owner's account ID
    },
    "Type": "GLUE"
}
```

El siguiente código de muestra utiliza un cliente Java para crear el objeto `DataCatalog`.

```
# Sample code to create the DataCatalog through Java client
CreateDataCatalogRequest request = new CreateDataCatalogRequest()
    .withName("ownerCatalog")
    .withType(DataCatalogType.GLUE)
    .withParameters(ImmutableMap.of("catalog-id", "999999999999"));

athenaClient.createDataCatalog(request);
```

Después de estos pasos, el prestatario debe ver el `ownerCatalog` cuando llama a la operación de la API [ListDataCatalogs](https://docs.aws.amazon.com/athena/latest/APIReference/API_ListDataCatalogs.html).

## Recursos adicionales
<a name="security-iam-cross-account-glue-catalog-access-additional-resources"></a>
+ [Registrar un catálogo de datos desde otra cuenta](data-sources-glue-cross-account.md)
+ [Configurar el acceso entre cuentas a un AWS Glue Data Catalog compartido mediante Amazon Athena](https://docs.aws.amazon.com/prescriptive-guidance/latest/patterns/configure-cross-account-access-to-a-shared-aws-glue-data-catalog-using-amazon-athena.html) en los *Patrones de recomendaciones de AWS*.
+ [Consultar un AWS Glue Data Catalog entre cuentas con Amazon Athena](https://aws.amazon.com/blogs/big-data/query-cross-account-aws-glue-data-catalogs-using-amazon-athena/) en el *Blog de macrodatos de AWS*
+ [Concesión de acceso entre cuentas](https://docs.aws.amazon.com/glue/latest/dg/cross-account-access.html) en la *Guía para desarrolladores de AWS Glue* 

# Configuración del acceso desde Athena a los metadatos cifrados en el AWS Glue Data Catalog
<a name="access-encrypted-data-glue-data-catalog"></a>

Si utiliza el AWS Glue Data Catalog con Amazon Athena, puede habilitar el cifrado en el AWS Glue Data Catalog mediante el uso de la consola de AWS Glue o la API. Para obtener más información, consulte [Cifrado del catálogo de datos](https://docs.aws.amazon.com/glue/latest/dg/encrypt-glue-data-catalog.html) en la *Guía para desarrolladores de AWS Glue*.

Si el AWS Glue Data Catalog está cifrado, debe agregar las siguientes acciones a todas las políticas que se utilizan para obtener acceso a Athena:

Siempre que utilice políticas de IAM, asegúrese de seguir las prácticas recomendadas de IAM. Para más información, consulte [Prácticas recomendadas de seguridad en IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/best-practices.html) en la *Guía del usuario de IAM*.

# Configuración del acceso a grupos de trabajo y etiquetas
<a name="workgroups-access"></a>

Un grupo de trabajo es un recurso administrado por Athena. Por tanto, si su política de grupos de trabajo utiliza acciones que toman a `workgroup` como entrada, deberá especificar el ARN del grupo de trabajo de la siguiente manera, donde `workgroup-name` es el nombre del grupo de trabajo:

```
"Resource": [arn:aws:athena:region:AWSAcctID:workgroup/workgroup-name]
```

Por ejemplo, en el caso de un grupo de trabajo denominado `test_workgroup` en la región `us-west-2` de la cuenta de Amazon Web Services `123456789012`, especifique el grupo de trabajo como un recurso usando el siguiente ARN:

```
"Resource":["arn:aws:athena:us-east-2:123456789012:workgroup/test_workgroup"]
```

Para acceder a los grupos de trabajo habilitados para la propagación de identidades fiables (TIP), los usuarios del IAM Identity Center deben estar asignados al `IdentityCenterApplicationArn` que devuelve la respuesta de la acción de la API [GetWorkGroup](https://docs.aws.amazon.com/athena/latest/APIReference/API_GetWorkGroup.html) de Athena.
+ Para ver una lista de políticas de grupos de trabajo, consulte [Ejemplos de políticas de grupo de trabajo](example-policies-workgroup.md).
+ Para obtener una lista de políticas basadas en etiquetas para grupos de trabajo, consulte [Uso de políticas de control de acceso de IAM basado en etiquetas](tags-access-control.md).
+ Para obtener más información acerca de la creación de políticas de IAM para grupos de trabajo, consulte [Uso de políticas de IAM para el control del acceso al grupo de trabajo](workgroups-iam-policy.md).
+ Para obtener una lista completa de las acciones de Amazon Athena, consulte los nombres de acciones de la API en la [Referencia de API de Amazon Athena](https://docs.aws.amazon.com/athena/latest/APIReference/). 
+ Para obtener más información sobre las políticas de IAM, consulte [Creación de políticas con el editor visual](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_create.html#access_policies_create-visual-editor) en la *Guía del usuario de IAM*. 

Siempre que utilice políticas de IAM, asegúrese de seguir las prácticas recomendadas de IAM. Para más información, consulte [Prácticas recomendadas de seguridad en IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/best-practices.html) en la *Guía del usuario de IAM*.

# Uso de políticas de IAM para el control del acceso al grupo de trabajo
<a name="workgroups-iam-policy"></a>

Para controlar el acceso a los grupos de trabajo, utilice permisos de IAM de nivel de recursos o políticas de IAM basadas en identidad. Siempre que utilice políticas de IAM, asegúrese de seguir las prácticas recomendadas de IAM. Para más información, consulte [Prácticas recomendadas de seguridad en IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/best-practices.html) en la *Guía del usuario de IAM*.

**nota**  
Para acceder a los grupos de trabajo habilitados para la propagación de identidad de confianza, los usuarios del IAM Identity Center deben estar asignados al `IdentityCenterApplicationArn` que se devuelve en la respuesta de la acción de la API [GetWorkGroup](https://docs.aws.amazon.com/athena/latest/APIReference/API_GetWorkGroup.html) de Athena.

El siguiente procedimiento es específico de Athena. 

Para obtener información específica sobre IAM, consulte los enlaces que se enumeran al final de esta sección. Para obtener información sobre políticas de grupos de trabajo JSON de ejemplo, consulte [Ejemplos de políticas de grupo de trabajo](example-policies-workgroup.md).

**Para utilizar el editor visual de la consola de IAM para crear una política de grupo de trabajo**

1. Inicie sesión en la Consola de administración de AWS y abra la consola de IAM en [https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/).

1. En el panel de navegación de la izquierda, elija **Políticas** y, a continuación, elija **Crear política**.

1. En la pestaña **Editor visual**, elija **Elegir un servicio**. A continuación, elija un servicio de Athena para agregar a la política.

1. Elija **Seleccionar acciones** y, a continuación, elija las acciones que desea añadir a la política. El editor visual muestra las acciones disponibles en Athena. Para obtener más información, consulte [Acciones, recursos y claves de condición de Amazon Athena](https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazonathena.html) en la *Referencia de autorizaciones de servicio*.

1. Elija **Añadir acciones** para escribir una acción específica o utilice comodines (\$1) para especificar varias acciones. 

   De forma predeterminada, la política que está creando permite las acciones que usted elija. Si eligió una o más acciones que admiten permisos en el nivel de recursos para el recurso `workgroup` en Athena, el editor visual enumera el recurso `workgroup`. 

1. Elija **Recursos** para especificar grupos de trabajo específicos para su política. Para ver políticas de JSON grupos de trabajo de ejemplo, consulte [Ejemplos de políticas de grupo de trabajo](example-policies-workgroup.md).

1. Especifique el recurso `workgroup` como se indica a continuación:

   ```
   arn:aws:athena:<region>:<user-account>:workgroup/<workgroup-name>
   ```

1. Elija **Revisar la política** y, a continuación, escriba un **Nombre** y una **Descripción** (opcional) para la política que está creando. Revise el resumen de la política para asegurarse de que ha concedido los permisos deseados. 

1. Elija **Crear política** para guardar la nueva política.

1. Adjunte esta política basada en identidad a un usuario, grupo o rol.

Para obtener más información, consulte los siguientes temas en la *Referencia de autorizaciones de servicio* y la *Guía del usuario de IAM*:
+  [Acciones, recursos y claves de condición de Amazon Athena](https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazonathena.html) 
+  [Creación de políticas con el editor visual](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_create.html#access_policies_create-visual-editor) 
+  [Adición y eliminación de políticas de IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_manage-attach-detach.html) 
+  [Control del acceso a los recursos](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_controlling.html#access_controlling-resources) 

Para ver políticas de JSON grupos de trabajo de ejemplo, consulte [Ejemplos de políticas de grupo de trabajo](example-policies-workgroup.md).

Para obtener una lista completa de las acciones de Amazon Athena, consulte los nombres de acciones de la API en la [Referencia de API de Amazon Athena](https://docs.aws.amazon.com/athena/latest/APIReference/). 

# Ejemplos de políticas de grupo de trabajo
<a name="example-policies-workgroup"></a>

En esta sección se incluyen ejemplos de políticas que puede utilizar para habilitar varias acciones en grupos de trabajo. Siempre que utilice políticas de IAM, asegúrese de seguir las prácticas recomendadas de IAM. Para obtener más información, consulte la sección [Prácticas recomendadas de seguridad de IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/best-practices.html) en la *Guía del usuario de IAM*.

Un grupo de trabajo es un recurso de IAM administrado por Athena. Por tanto, si su política de grupos de trabajo utiliza acciones que toman `workgroup` como entrada, deberá especificar el ARN del grupo de trabajo de la siguiente manera:

```
"Resource": [arn:aws:athena:<region>:<user-account>:workgroup/<workgroup-name>]
```

Donde `<workgroup-name>` es el nombre de su grupo de trabajo. Por ejemplo, para el grupo de trabajo denominado `test_workgroup`, especifíquelo como un recurso tal y como se indica a continuación:

```
"Resource": ["arn:aws:athena:us-east-1:123456789012:workgroup/test_workgroup"]
```

Para obtener una lista completa de las acciones de Amazon Athena, consulte los nombres de acciones de la API en la [Referencia de API de Amazon Athena](https://docs.aws.amazon.com/athena/latest/APIReference/). Para obtener más información sobre las políticas de IAM, consulte [Creación de políticas con el editor visual](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_create.html#access_policies_create-visual-editor) en la *Guía del usuario de IAM*. Para obtener más información acerca de la creación de políticas de IAM para grupos de trabajo, consulte [Uso de políticas de IAM para el control del acceso al grupo de trabajo](workgroups-iam-policy.md).
+  [Example policy for full access to all workgroups](#example1-full-access-all-wkgs) 
+  [Example policy for full access to a specified workgroup](#example2-full-access-this-wkg) 
+  [Example policy for running queries in a specified workgroup](#example3-user-access) 
+  [Example policy for running queries in the primary workgroup](#example4-run-in-primary-access) 
+  [Example policy for management operations on a specified workgroup](#example5-manage-wkgs-access) 
+  [Example policy for listing workgroups](#example6-list-all-wkgs-access) 
+  [Example policy for running and stopping queries in a specific workgroup](#example7-run-queries-access) 
+  [Example policy for working with named queries in a specific workgroup](#example8-named-queries-access) 
+  [Example policy for working with Spark notebooks](#example9-spark-workgroup) 

**Example Ejemplo de política para el acceso completo a todos los grupos de trabajo**  
La siguiente política permite acceso completo a todos los recursos de grupos de trabajo que podrían existir en la cuenta. Le recomendamos que utilice esta política para aquellos usuarios en su cuenta que deben administrar grupos de trabajo para los demás usuarios.    
****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "athena:*"
            ],
            "Resource": [
                "*"
            ]
        }
    ]
}
```

**Example Ejemplo de política para el acceso completo a un grupo de trabajo especificado**  
La siguiente política permite acceso completo al recurso del grupo de trabajo específico individual, denominado `workgroupA`. Puede utilizar esta política para los usuarios con control total sobre un grupo de trabajo en particular.    
****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "athena:ListEngineVersions",
                "athena:ListWorkGroups",
                "athena:ListDataCatalogs",
                "athena:ListDatabases",
                "athena:GetDatabase",
                "athena:ListTableMetadata",
                "athena:GetTableMetadata"
            ],
            "Resource": "*"
        },
        {
            "Effect": "Allow",
            "Action": [
                "athena:BatchGetQueryExecution",
                "athena:GetQueryExecution",
                "athena:ListQueryExecutions",
                "athena:StartQueryExecution",
                "athena:StopQueryExecution",
                "athena:GetQueryResults",
                "athena:GetQueryResultsStream",
                "athena:CreateNamedQuery",
                "athena:GetNamedQuery",
                "athena:BatchGetNamedQuery",
                "athena:ListNamedQueries",
                "athena:DeleteNamedQuery",
                "athena:CreatePreparedStatement",
                "athena:GetPreparedStatement",
                "athena:ListPreparedStatements",
                "athena:UpdatePreparedStatement",
                "athena:DeletePreparedStatement"
            ],
            "Resource": [
                "arn:aws:athena:us-east-1:123456789012:workgroup/workgroupA"
            ]
        },
        {
            "Effect": "Allow",
            "Action": [
                "athena:DeleteWorkGroup",
                "athena:UpdateWorkGroup",
                "athena:GetWorkGroup",
                "athena:CreateWorkGroup"
            ],
            "Resource": [
                "arn:aws:athena:us-east-1:123456789012:workgroup/workgroupA"
            ]
        }
    ]
}
```

**Example Ejemplo de política para la ejecución de consultas en un grupo de trabajo especificado**  
En la siguiente política, un usuario puede ejecutar consultas en el `workgroupA` especificado y verlas. El usuario no tiene permiso para realizar las tareas de administración para el grupo de trabajo en sí, como, por ejemplo, actualizar o eliminar. Tenga en cuenta que la política de ejemplo no limita a los usuarios solo a este grupo de trabajo ni niega el acceso a otros grupos de trabajo.    
****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
       {
            "Effect": "Allow",
            "Action": [
                "athena:ListEngineVersions",
                "athena:ListWorkGroups",
                "athena:ListDataCatalogs",
                "athena:ListDatabases",
                "athena:GetDatabase",
                "athena:ListTableMetadata",
                "athena:GetTableMetadata"
            ],
            "Resource": "*"
        },
        {
            "Effect": "Allow",
            "Action": [
                "athena:GetWorkGroup", 
                "athena:BatchGetQueryExecution",
                "athena:GetQueryExecution",
                "athena:ListQueryExecutions",
                "athena:StartQueryExecution",
                "athena:StopQueryExecution",
                "athena:GetQueryResults",
                "athena:GetQueryResultsStream",
                "athena:CreateNamedQuery",
                "athena:GetNamedQuery",
                "athena:BatchGetNamedQuery",
                "athena:ListNamedQueries",
                "athena:DeleteNamedQuery",
                "athena:CreatePreparedStatement",
                "athena:GetPreparedStatement",
                "athena:ListPreparedStatements",
                "athena:UpdatePreparedStatement",
                "athena:DeletePreparedStatement"
            ],
            "Resource": [
                "arn:aws:athena:us-east-1:123456789012:workgroup/workgroupA"
            ]
        }
    ]
}
```

**Example Ejemplo de política para la ejecución de consultas en el grupo de trabajo principal**  
Puede modificar el ejemplo anterior para permitir que un usuario determinado también ejecute consultas en el grupo de trabajo principal.   
Le recomendamos que agregue el recurso de grupo de trabajo principal para todos los usuarios que, de lo contrario, se configuran para ejecutar consultas en los grupos de trabajo designados. Agregar este recurso a las políticas de usuario del grupo de trabajo es útil en caso de eliminación o deshabilitación del grupo de trabajo designado. En este caso, pueden seguir ejecutando consultas en el grupo de trabajo principal.
Para permitir que los usuarios de su cuenta ejecuten consultas en el grupo de trabajo principal, agregue una línea que contenga el ARN del grupo de trabajo principal a la sección de recursos de [Example policy for running queries in a specified workgroup](#example3-user-access), como en el siguiente ejemplo.  

```
arn:aws:athena:us-east-1:123456789012:workgroup/primary"
```

**Example Ejemplo de política para la realización de operaciones de administración en un grupo de trabajo especificado**  
En la siguiente política, se permite a un usuario crear, eliminar, obtener detalles y actualizar un grupo de trabajo `test_workgroup`.     
****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "athena:ListEngineVersions"
            ],
            "Resource": "*"
        },
        {
            "Effect": "Allow",
            "Action": [
                "athena:CreateWorkGroup",
                "athena:GetWorkGroup",
                "athena:DeleteWorkGroup",
                "athena:UpdateWorkGroup"
            ],
            "Resource": [
                "arn:aws:athena:us-east-1:123456789012:workgroup/test_workgroup"
            ]
        }
    ]
}
```

**Example Ejemplo de política para crear una lista de los grupos de trabajo**  
La siguiente política permite a todos los usuarios crear una lista de todos los grupos de trabajo:    
****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "athena:ListWorkGroups"
            ],
            "Resource": "*"
        }
    ]
}
```

**Example Ejemplo de política para la ejecución y la detención de consultas en un grupo de trabajo específico**  
En esta política, se permite a un usuario ejecutar consultas en el grupo de trabajo:    
****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "athena:StartQueryExecution",
                "athena:StopQueryExecution"
            ],
            "Resource": [
                "arn:aws:athena:us-east-1:123456789012:workgroup/test_workgroup"
            ]
        }
    ]
}
```

**Example Ejemplo de política para trabajar con consultas con nombre en un grupo de trabajo específico**  
En la siguiente política, un usuario tiene permisos para crear, eliminar y obtener información acerca de consultas con nombre en el grupo de trabajo especificado:    
****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "athena:CreateNamedQuery",
                "athena:GetNamedQuery",
                "athena:DeleteNamedQuery"
            ],
            "Resource": [
                "arn:aws:athena:us-east-1:123456789012:workgroup/test_workgroup"            ]
        }
    ]
}
```

**Example Ejemplo de política para trabajar con cuadernos de Spark en Athena**  
Use una política como la siguiente para trabajar con los cuadernos de Spark en Athena.    
****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "AllowCreatingWorkGroupWithDefaults",
            "Action": [
                "athena:CreateWorkGroup",
                "s3:CreateBucket",
                "iam:CreateRole",
                "iam:CreatePolicy",
                "iam:AttachRolePolicy",
                "s3:GetBucketLocation",
                "athena:ImportNotebook"
            ],
            "Effect": "Allow",
            "Resource": [
                "arn:aws:athena:us-east-1:123456789012:workgroup/Demo*",
                "arn:aws:s3:::123456789012-us-east-1-athena-results-bucket-*",
                "arn:aws:iam::123456789012:role/service-role/AWSAthenaSparkExecutionRole-*",
                "arn:aws:iam::123456789012:policy/service-role/AWSAthenaSparkRolePolicy-*"
            ]
        },
        {
            "Sid": "AllowRunningCalculations",
            "Action": [
                "athena:ListWorkGroups",
                "athena:GetWorkGroup",
                "athena:StartSession",
                "athena:CreateNotebook",
                "athena:ListNotebookMetadata",
                "athena:ListNotebookSessions",
                "athena:GetSessionStatus",
                "athena:GetSession",
                "athena:GetNotebookMetadata",
                "athena:CreatePresignedNotebookUrl"
            ],
            "Effect": "Allow",
            "Resource": "arn:aws:athena:us-east-1:123456789012:workgroup/Demo*"
        },
        {
            "Sid": "AllowListWorkGroupAndEngineVersions",
            "Action": [
                "athena:ListWorkGroups",
                "athena:ListEngineVersions"
            ],
            "Effect": "Allow",
            "Resource": "*"
        }
    ]
}
```

# Uso de grupos de trabajo de Athena habilitados para IAM Identity Center
<a name="workgroups-identity-center"></a>

La [propagación de identidades de confianza](https://docs.aws.amazon.com//singlesignon/latest/userguide/trustedidentitypropagation-overview.html) es una característica de AWS IAM Identity Center que los administradores de los Servicios de AWS conectados pueden utilizar para conceder y auditar el acceso a los datos del servicio. El acceso a estos datos se basa en los atributos del usuario, como las asociaciones de grupo. La configuración de la propagación de identidades de confianza requiere la colaboración entre los administradores de los Servicios de AWS conectados y los administradores de IAM Identity Center. Para obtener más información, consulte [Requisitos previos y consideraciones](https://docs.aws.amazon.com//singlesignon/latest/userguide/trustedidentitypropagation-overall-prerequisites.html).

Con [IAM Identity Center](https://docs.aws.amazon.com/singlesignon/latest/userguide/what-is.html), puede administrar la seguridad de inicio de sesión de las identidades de sus empleados, también conocidos como usuarios de los empleados. El IAM Identity Center ofrece un lugar en el que puede crear o conectar a los usuarios de los empleados y administrar de forma centralizada su acceso a todas sus cuentas y aplicaciones de AWS. Puede utilizar permisos de varias cuentas para asignar a estos usuarios acceso a las Cuentas de AWS. Puede utilizar las asignaciones de aplicaciones para asignar a sus usuarios el acceso a las aplicaciones habilitadas para el IAM Identity Center, a las aplicaciones en la nube y a las aplicaciones del lenguaje de marcado para confirmaciones de seguridad (SAML 2.0) del cliente. Para obtener más información, consulte [Propagación de identidad de confianza en aplicaciones](https://docs.aws.amazon.com/singlesignon/latest/userguide/trustedidentitypropagation.html) en la *Guía del usuario del AWS IAM Identity Center*.

La compatibilidad con Athena SQL para la propagación fiable de identidades está disponible tanto en EMR Studio como en SageMaker Unified Studio. Cada plataforma proporciona interfaces específicas para usar TIP con Athena. 

Al utilizar Athena SQL en EMR Studio con identidades de IAM Identity Center, hay dos opciones para grupos de trabajo:
+ **Grupos de trabajo Regular** – No se necesitan asignaciones de usuarios o grupos.
+ **Grupos de trabajo habilitados para IAM Identity Center** – Requiere asignar usuarios o grupos a través de la consola o la API de IAM Identity Center.

Para ambas opciones, puede realizar consultas mediante la interfaz SQL de Athena en EMR Studio con IAM Identity Center habilitado. 

## Consideraciones y limitaciones
<a name="workgroups-identity-center-considerations-and-limitations"></a>

Al utilizar la propagación de identidad de confianza con Amazon Athena, tenga en cuenta los siguientes aspectos:
+ No puede cambiar el método de autenticación del grupo de trabajo una vez creado el grupo de trabajo.
  + No se pueden modificar los grupos de trabajo existentes de Athena SQL para admitir grupos de trabajo habilitados para IAM Identity Center. Los grupos de trabajo SQL de Athena existentes pueden propagar la identidad a los servicios posteriores.
  + No se pueden modificar los grupos de trabajo habilitados para IAM Identity Center para admitir permisos de IAM de nivel de recursos o políticas de IAM basadas en identidades.
+ Para acceder a los grupos de trabajo habilitados para la propagación de identidad de confianza, los usuarios del IAM Identity Center deben estar asignados al `IdentityCenterApplicationArn` que se devuelve en la respuesta de la acción de la API [GetWorkGroup](https://docs.aws.amazon.com/athena/latest/APIReference/API_GetWorkGroup.html) de Athena.
+ Las concesiones de acceso a Amazon S3 se deben configurar para utilizar identidades de propagación de identidad de confianza. Para obtener más información, consulte [S3 Access Grants and corporate directory identities](https://docs.aws.amazon.com/AmazonS3/latest/userguide/access-grants-directory-ids.html) en la *Guía del usuario de Amazon S3*.
+ Los grupos de trabajo de Athena habilitados para IAM Identity Center requieren que Lake Formation esté configurado para usar las identidades del IAM Identity Center. Para obtener más información sobre la configuración, consulte [Integración del IAM Identity Center](https://docs.aws.amazon.com/lake-formation/latest/dg/identity-center-integration.html) en la *Guía para desarrolladores de AWS Lake Formation*.
+ Por defecto, las consultas expiran luego de 30 minutos en los grupos de trabajo habilitados para IAM Identity Center. Es posible solicitar un aumento del tiempo de espera de una consulta; sin embargo, en los grupos de trabajo con propagación de identidad de confianza, la duración máxima de ejecución es de una hora. 
+ Los cambios en los permisos de usuarios o grupos dentro de los grupos de trabajo con propagación de identidad de confianza pueden tardar hasta una hora en aplicarse.
+ Las consultas de un grupo de trabajo de Athena con propagación de identidad de confianza no se pueden ejecutar directamente desde la consola de Athena. Deben ejecutarse desde la interfaz de Athena en un EMR Studio que tenga habilitado el IAM Identity Center. Para obtener más información sobre el uso de Athena en EMR Studio, consulte [Uso del editor de SQL de Amazon Athena en EMR Studio](https://docs.aws.amazon.com/emr/latest/ManagementGuide/emr-studio-athena.html) en la *Guía de administración de Amazon EMR*.
+ La propagación de identidades de confianza no es compatible con las siguientes características de Athena.
  + `aws:CalledVia` claves de contexto de grupos de trabajo habilitados para IAM Identity Center.
  + Athena para grupos de trabajo de Spark.
  + Acceso federado a la API de Athena.
  + Acceso federado a Athena mediante Lake Formation y los controladores JDBC y ODBC de Athena.
+ Puede utilizar la propagación de identidad de confianza con Athena solo en las siguientes Regiones de AWS: 
  + `us-east-2`: Este de EE. UU. (Ohio)
  + `us-east-1`: Este de EE. UU. (Norte de Virginia)
  + `us-west-1`: Oeste de EE. UU. (Norte de California)
  + `us-west-2`: Oeste de EE. UU. (Oregón)
  + `af-south-1`: África (Ciudad del Cabo)
  + `ap-east-1`: Asia-Pacífico (Hong Kong)
  + `ap-southeast-3`: Asia-Pacífico (Yakarta)
  + `ap-south-1`: Asia-Pacífico (Mumbai)
  + `ap-northeast-3`: Asia-Pacífico (Osaka)
  + `ap-northeast-2`: Asia-Pacífico (Seúl)
  + `ap-southeast-1`: Asia Pacífico (Singapur)
  + `ap-southeast-2`: Asia Pacífico (Sídney)
  + `ap-northeast-1`: Asia Pacífico (Tokio)
  + `ca-central-1`: Canadá (centro)
  + `eu-central-1`: Europa (Fráncfort)
  + `eu-central-2`: Europa (Zúrich)
  + `eu-west-1`: Europa (Irlanda)
  + `eu-west-2`: Europa (Londres)
  + `eu-south-1`: Europa (Milán)
  + `eu-west-3`: Europa (París)
  + `eu-north-1`: Europa (Estocolmo)
  + `me-south-1`: Medio Oriente (Baréin)
  + `sa-east-1`: América del Sur (São Paulo)

## Permisos necesarios
<a name="workgroups-identity-center-required-permissions"></a>

El usuario de IAM del administrador que crea el grupo de trabajo habilitado para IAM Identity Center en la consola de Athena debe tener adjuntas las siguientes políticas.
+ La política administrada de `AmazonAthenaFullAccess`. Para obtener más información, consulte [AWSPolítica administrada de : AmazonAthenaFullAccess](security-iam-awsmanpol.md#amazonathenafullaccess-managed-policy).
+ La siguiente política insertada que permite las acciones de IAM y del IAM Identity Center:

------
#### [ JSON ]

****  

  ```
  { "Version":"2012-10-17",		 	 	  "Statement": [ { "Action": [ "iam:createRole",
      "iam:CreatePolicy", "iam:AttachRolePolicy", "iam:ListRoles", "identitystore:ListUsers",
      "identitystore:ListGroups", "identitystore:CreateUser", "identitystore:CreateGroup",
      "sso:ListInstances", "sso:CreateInstance", "sso:DeleteInstance", "sso:ListTrustedTokenIssuers",
      "sso:DescribeTrustedTokenIssuer", "sso:ListApplicationAssignments",
      "sso:DescribeRegisteredRegions", "sso:GetManagedApplicationInstance",
      "sso:GetSharedSsoConfiguration", "sso:PutApplicationAssignmentConfiguration",
      "sso:CreateApplication", "sso:DeleteApplication", "sso:PutApplicationGrant",
      "sso:PutApplicationAuthenticationMethod", "sso:PutApplicationAccessScope",
      "sso:ListDirectoryAssociations", "sso:CreateApplicationAssignment",
      "sso:DeleteApplicationAssignment", "organizations:ListDelegatedAdministrators",
      "organizations:DescribeAccount", "organizations:DescribeOrganization",
      "organizations:CreateOrganization", "sso-directory:SearchUsers", "sso-directory:SearchGroups",
      "sso-directory:CreateUser" ], "Effect": "Allow", "Resource": [ "*" ] }, { "Action": [
      "iam:PassRole" ], "Effect": "Allow", "Resource": [
          "arn:aws:iam::111122223333:role/service-role/AWSAthenaSQLRole-*"
      ] } ] }
  ```

------

## Creación de un grupo de trabajo de Athena habilitado para IAM Identity Center
<a name="workgroups-identity-center-creating-an-identity-center-enabled-athena-workgroup"></a>

El siguiente procedimiento muestra los pasos y las opciones relacionadas con la creación de un grupo de trabajo de Athena habilitado para IAM Identity Center. Para obtener una descripción de las demás opciones de configuración disponibles para los grupos de trabajo de Athena, consulte [Creación de un grupo de trabajo](creating-workgroups.md).

**Cómo crear un grupo de trabajo habilitado para SSO en la consola de Athena**

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

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

1. En el panel **Grupos de trabajo**, elija **Crear grupo de trabajo**.

1. En la página **Crear grupo de trabajo**, para **Nombre del grupo de trabajo**, ingrese un nombre para el grupo de trabajo.

1. En **Motor de análisis**, utilice el **Athena SQL** predeterminado.

1. En **Autenticación**, elija **IAM Identity Center**.

1. En **Rol de servicio para el acceso al IAM Identity Center**, elija un rol de servicio existente o cree uno nuevo.

   Athena requiere permisos para acceder al IAM Identity Center en su nombre. Para ello, Athena necesita un rol de servicio. Un rol de servicio es un rol de IAM que usted administra y que autoriza a un servicio de AWS a acceder a otros servicios de AWS en su nombre. Para consultar catálogos federados o ejecutar UDF, actualice el rol de servicio con los permisos correspondientes para Lambda. Para obtener más información, consulte [Creación de un rol para delegar permisos a un servicio de AWS](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_create_for-service.html) en la *Guía del usuario de IAM*.

1. Expanda **Configuración de resultados de la consulta** y, a continuación, introduzca o elija una ruta de Amazon S3 en **Ubicación del resultado de las consultas**.

1. (Opcional) Elija **Cifrar resultados de la consulta**. De forma predeterminada, se admite SSE-S3. Para utilizar SSE-KMS y CSE-KMS con la ubicación de los resultados de la consulta, conceda permisos al **rol de servicio de IAM Identity Center** desde Concesiones de acceso a Amazon S3. Para obtener más información, consulte [Política de roles de muestra](#workgroups-identity-center-access-grant-location-sample-role-policy).

1. (Opcional) Elija **Crear un prefijo S3 basado en la identidad del usuario**.

   Al crear un grupo de trabajo habilitado para IAM Identity Center, la opción **Habilitar los permisos de acceso a S3** aparece seleccionada de forma predeterminada. Puede utilizar las concesiones de acceso de Amazon S3 para controlar el acceso a las ubicaciones (prefijos) de los resultados de las consultas de Athena en Amazon S3. Para obtener más información sobre los permisos de acceso de Amazon S3, consulte [Administración del acceso con las concecsiones de acceso de Amazon S3](https://docs.aws.amazon.com/AmazonS3/latest/userguide/access-grants.html).

   En grupos de trabajo de Athena que utilizan la autenticación de IAM Identity Center, puede habilitar la creación de ubicaciones de resultados de consultas basadas en la identidad que se rigen por las concesiones de acceso de Amazon S3. Estos prefijos de Amazon S3 basados en la identidad del usuario permiten que los usuarios en un grupo de trabajo de Athena mantengan sus resultados de consulta aislados de otros usuarios en el mismo grupo de trabajo.

   Al activar la opción de prefijo de usuario, Athena añade el ID de usuario como prefijo de ruta de Amazon S3 a la ubicación de salida del resultado de la consulta para el grupo de trabajo (por ejemplo, `s3://amzn-s3-demo-bucket/${user_id}`). Para utilizar esta característica, debe configurar los permisos de acceso para permitir que solo el usuario acceda a la ubicación que tiene el prefijo de `user_id`. Para ver un ejemplo de política de rol de ubicación de concesiones de acceso de Amazon S3 que restringe el acceso a los resultados de las consultas de Athena, consulte [Ejemplo de política de rol](#workgroups-identity-center-access-grant-location-sample-role-policy). 
**nota**  
Al seleccionar la opción de prefijo S3 de identidad de usuario, se habilita automáticamente la opción de anular la configuración del cliente para el grupo de trabajo, tal y como se describe en el siguiente paso. La opción de anular la configuración del cliente es un requisito para la característica de prefijo de identidad del usuario.

1. Expanda **Configuración** y, a continuación, confirme que esté seleccionada la opción **Invalidar la configuración del lado del cliente**.

   Cuando selecciona **Invalidar la configuración del cliente**, se aplica la configuración del grupo de trabajo al nivel del grupo de trabajo para todos los clientes. Para obtener más información, consulte [Invalidación de la configuración del cliente](workgroups-settings-override.md).

1. (Opcional) Realice cualquier otro ajuste de configuración que necesite tal y como se describe en [Creación de un grupo de trabajo](creating-workgroups.md).

1. Elija **Crear grupo de trabajo**.

1. Utilice la sección **Grupos de trabajo** de la consola de Athena para asignar usuarios o grupos del directorio del IAM Identity Center a su grupo de trabajo de Athena habilitado para el IAM Identity Center.

## Ejemplo de política de rol
<a name="workgroups-identity-center-access-grant-location-sample-role-policy"></a>

El siguiente ejemplo muestra una política para que un rol se asocie a una ubicación de permiso de acceso de Amazon S3 que restringe el acceso a los resultados de consulta de Athena. 

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Action": [
                "s3:*"
            ],
            "Condition": {
                "ArnNotEquals": {
                    "s3:AccessGrantsInstanceArn": "arn:aws:s3:us-east-1:111122223333:access-grants/default"
                },
                "StringNotEquals": {
                    "aws:ResourceAccount": "111122223333"
                }
            },
            "Effect": "Deny",
            "Resource": "*",
            "Sid": "ExplicitDenyS3"
        },
        {
            "Action": [
                "kms:*"
            ],
            "Effect": "Deny",
            "NotResource": "arn:aws:kms:us-east-1:111122223333:key/${keyid}",
            "Sid": "ExplictDenyKMS"
        },
        {
            "Action": [
                "s3:ListMultipartUploadParts",
                "s3:GetObject"
            ],
            "Condition": {
                "ArnEquals": {
                    "s3:AccessGrantsInstanceArn": "arn:aws:s3:us-east-1:111122223333:access-grants/default"
                },
                "StringEquals": {
                    "aws:ResourceAccount": "111122223333"
                }
            },
            "Effect": "Allow",
            "Resource": "arn:aws:s3:::ATHENA-QUERY-RESULT-LOCATION/${identitystore:UserId}/*",
            "Sid": "ObjectLevelReadPermissions"
        },
        {
            "Action": [
                "s3:PutObject",
                "s3:AbortMultipartUpload"
            ],
            "Condition": {
                "ArnEquals": {
                    "s3:AccessGrantsInstanceArn": "arn:aws:s3:us-east-1:111122223333:access-grants/default"
                },
                "StringEquals": {
                "aws:ResourceAccount": "111122223333"
                }
            },
            "Effect": "Allow",
            "Resource": "arn:aws:s3:::ATHENA-QUERY-RESULT-LOCATION/${identitystore:UserId}/*",
            "Sid": "ObjectLevelWritePermissions"
        },
        {
            "Action": "s3:ListBucket",
            "Condition": {
                "ArnEquals": {
                    "s3:AccessGrantsInstanceArn": "arn:aws:s3:us-east-1:111122223333:access-grants/default"
                },
                "StringEquals": {
                    "aws:ResourceAccount": "111122223333"
                },
                "StringLikeIfExists": {
                    "s3:prefix": [
                        "${identitystore:UserId}",
                        "${identitystore:UserId}/*"
                    ]
                }
            },
            "Effect": "Allow",
            "Resource": "arn:aws:s3:::ATHENA-QUERY-RESULT-LOCATION",
            "Sid": "BucketLevelReadPermissions"
        },
        {
            "Action": [
                "kms:GenerateDataKey",
                "kms:Decrypt"
            ],
            "Effect": "Allow",
            "Resource": "arn:aws:kms:us-east-1:111122223333:key/${keyid}",
            "Sid": "KMSPermissions"
        }
    ]
}
```

------

# Configuración del cifrado mínimo para un grupo de trabajo
<a name="workgroups-minimum-encryption"></a>

Como administrador de un grupo de trabajo de Athena SQL, puede aplicar un nivel mínimo de cifrado en Amazon S3 para todos los resultados de las consultas del grupo de trabajo. Puede utilizar esta característica para asegurarse de que los resultados de las consultas nunca se almacenen en un bucket de Amazon S3 sin cifrar.

Cuando los usuarios de un grupo de trabajo con el cifrado mínimo habilitado envían una consulta, solo pueden establecer el cifrado en el nivel mínimo que configure o en un nivel superior si hay alguno disponible. Athena cifra los resultados de la consulta en el nivel especificado cuando el usuario ejecuta la consulta o en el nivel establecido en el grupo de trabajo.

Se encuentran disponibles los siguientes niveles:
+ **Básico**: cifrado del servidor de Amazon S3 con claves administradas por Amazon S3 (**SSE\$1S3**).
+ **Intermedio**: cifrado del servidor con claves administradas por KMS (**SSE\$1KMS**).
+ **Avanzado**: cifrado del cliente con claves administradas por KMS (**CSE\$1KMS**).

## Consideraciones y limitaciones
<a name="workgroups-minimum-encryption-considerations-and-limitations"></a>
+ La característica de cifrado mínimo no se encuentra disponible para los grupos de trabajo habilitados para Apache Spark.
+ La característica de cifrado mínimo solo funciona cuando el grupo de trabajo no habilita la opción **[Invalidar la configuración del cliente](https://docs.aws.amazon.com/athena/latest/ug/workgroups-settings-override.html)**.
+ Si el grupo de trabajo tiene habilitada la opción **Invalidar la configuración del cliente**, prevalece la configuración de cifrado del grupo de trabajo y la configuración de cifrado mínimo no tiene efecto.
+ La habilitación de esta característica no tiene ningún costo.

## Habilitación del cifrado mínimo para un grupo de trabajo
<a name="workgroups-minimum-encryption-enabling"></a>

Puede habilitar un nivel de cifrado mínimo para los resultados de las consultas de su grupo de trabajo de Athena SQL al crear o actualizar el grupo de trabajo. Para ello, puede utilizar la consola, la API o la AWS CLI de Athena.

### Uso de la consola de Athena para habilitar el cifrado mínimo
<a name="workgroups-minimum-encryption-enabling-using-the-athena-console"></a>

Para comenzar a crear o editar un grupo de trabajo mediante la consola de Athena, consulte [Crear un grupo de trabajo](https://docs.aws.amazon.com/athena/latest/ug/workgroups-create-update-delete.html#creating-workgroups) o [Editar un grupo de trabajo](https://docs.aws.amazon.com/athena/latest/ug/workgroups-create-update-delete.html#editing-workgroups). Al configurar el grupo de trabajo, proceda con los siguientes pasos para habilitar el cifrado mínimo.

**A fin de configurar el nivel de cifrado mínimo para los resultados de las consultas del grupo de trabajo**

1. Desactive la opción **Invalidar la configuración del cliente** o compruebe que no se encuentre seleccionada.

1. Seleccione la opción **Cifrado de los resultados de la consulta**.

1. En **Tipo de cifrado**, seleccione el método de cifrado que desee que Athena utilice para los resultados de las consultas de su grupo de trabajo (**SSE\$1S3**, **SSE\$1KMS** o **CSE\$1KMS**). Estos tipos de cifrado corresponden a los niveles de seguridad básico, intermedio y avanzado.

1. A fin de aplicar el método de cifrado que eligió como nivel mínimo de cifrado para todos los usuarios, seleccione **Establecer *encryption\$1method* como cifrado mínimo**.

   Al seleccionar esta opción, en una tabla se muestra la jerarquía de cifrado y los niveles de cifrado que se permitirán a los usuarios cuando el tipo de cifrado que elija pase a ser el mínimo.

1. Después de crear el grupo de trabajo o actualizar la configuración del grupo de trabajo, elija **Crear grupo de trabajo** o **Guardar cambios**.

### Uso de la API o la AWS CLI de Athena para habilitar el cifrado mínimo
<a name="workgroups-minimum-encryption-enabling-using-the-athena-api-or-cli"></a>

Cuando utilice la API [CreateWorkGroup](https://docs.aws.amazon.com/athena/latest/APIReference/API_CreateWorkGroup.html) o [UpdateWorkGroup](https://docs.aws.amazon.com/athena/latest/APIReference/API_UpdateWorkGroup.html) para crear o actualizar un grupo de trabajo de Athena SQL, establezca [EnforceWorkGroupConfiguration](https://docs.aws.amazon.com/athena/latest/APIReference/API_WorkGroupConfiguration.html#athena-Type-WorkGroupConfiguration-EnforceWorkGroupConfiguration) en `false`, [EnableMinimumEncryptionConfiguration](https://docs.aws.amazon.com/athena/latest/APIReference/API_WorkGroupConfiguration.html#athena-Type-WorkGroupConfiguration-EnableMinimumEncryptionConfiguration) en `true`, y utilice [EncryptionOption](https://docs.aws.amazon.com/athena/latest/APIReference/API_EncryptionConfiguration.html#athena-Type-EncryptionConfiguration-EncryptionOption) a fin de especificar el tipo de cifrado.

En la AWS CLI, utilice el comando [https://awscli.amazonaws.com/v2/documentation/api/latest/reference/athena/create-work-group.html](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/athena/create-work-group.html) o [https://awscli.amazonaws.com/v2/documentation/api/latest/reference/athena/update-work-group.html](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/athena/update-work-group.html) con los parámetros `--configuration` o `--configuration-updates` y especifique las opciones correspondientes a las de la API.

# Configuración del acceso a las declaraciones preparadas
<a name="security-iam-athena-prepared-statements"></a>

En este tema se tratan los permisos de IAM para las instrucciones preparadas en Amazon Athena. Siempre que utilice políticas de IAM, asegúrese de seguir las prácticas recomendadas de IAM. Para obtener más información, consulte la sección [Prácticas recomendadas de seguridad de IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/best-practices.html) en la *Guía del usuario de IAM*.

Para obtener más información acerca de las instrucciones preparadas, consulte [Uso de consultas parametrizadas](querying-with-prepared-statements.md).

Los siguientes permisos de IAM son necesarios para crear, administrar y ejecutar instrucciones preparadas.

```
athena:CreatePreparedStatement
athena:UpdatePreparedStatement
athena:GetPreparedStatement
athena:ListPreparedStatements
athena:DeletePreparedStatement
```

Utilice estos permisos como se muestra en la tabla a continuación.


****  

| Para ello | Utilice estos permisos | 
| --- | --- | 
| Ejecute una consulta PREPARE | athena:StartQueryExecution athena:CreatePreparedStatement | 
| Vuelva a ejecutar una consulta PREPARE para actualizar una instrucción preparada existente | athena:StartQueryExecution athena:UpdatePreparedStatement | 
| Ejecute una consulta EXECUTE | athena:StartQueryExecution athena:GetPreparedStatement | 
| Ejecute una consulta DEALLOCATE PREPARE | athena:StartQueryExecution athena:DeletePreparedStatement | 

## Ejemplo
<a name="security-iam-athena-prepared-statements-example"></a>

En el siguiente ejemplo de política de IAM se otorgan permisos para administrar y ejecutar instrucciones preparadas en un ID de cuenta y grupo de trabajo especificados.

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "athena:StartQueryExecution",
                "athena:CreatePreparedStatement",
                "athena:UpdatePreparedStatement",
                "athena:GetPreparedStatement",
                "athena:DeletePreparedStatement",
                "athena:ListPreparedStatements"
            ],
            "Resource": [
                "arn:aws:athena:*:111122223333:workgroup/<workgroup-name>"
            ]
        }
    ]
}
```

------

# Uso de las claves de contexto CalledVia para Athena
<a name="security-iam-athena-calledvia"></a>

Cuando una [entidad principal](https://docs.aws.amazon.com/IAM/latest/UserGuide/intro-structure.html#intro-structure-principal) hace una [solicitud](https://docs.aws.amazon.com/IAM/latest/UserGuide/intro-structure.html#intro-structure-request) a AWS, AWS recopila la información de la solicitud en un *contexto de solicitud* que la evalúa y la autoriza. Puede utilizar el elemento `Condition` de una política JSON para comparar las claves de la solicitud de contexto con los valores de claves que especifique en su política. *Las claves de contexto de condición globales* son claves de condición con un prefijo `aws:`.

## Acerca de la clave de contexto aws:CalledVia
<a name="security-iam-athena-calledvia-the-awscalledvia-context-key"></a>

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 comparar los servicios de la política con los servicios que realizaron solicitudes en nombre de la entidad principal de IAM (usuario o rol). Cuando una entidad principal hace una solicitud a un Servicio de AWS, ese servicio puede utilizar las credenciales de la entidad principal para hacer solicitudes posteriores a otros servicios. La clave `aws:CalledVia` contiene una lista ordenada de cada servicio de la cadena que realizó solicitudes en nombre de la entidad principal.

Al especificar el nombre de una entidad principal del servicio para la clave de contexto `aws:CalledVia`, puede hacer que la clave de contexto sea específica del Servicio de AWS. Por ejemplo, puede utilizar la clave de condición `aws:CalledVia` para limitar las solicitudes únicamente a las realizadas desde Athena. Para utilizar la clave de condición `aws:CalledVia` en una política con Athena, especifica el nombre de la entidad principal de servicio de Athena `athena.amazonaws.com`, como en el siguiente ejemplo.

```
 ...
    "Condition": {
        "ForAnyValue:StringEquals": { 
            "aws:CalledVia": "athena.amazonaws.com"
        }
    }
...
```

Puede utilizar la clave de contexto `aws:CalledVia` para asegurarse de que las personas que llaman solo tengan acceso a un recurso (como una función de Lambda) si llaman al recurso desde Athena.

**nota**  
La clave de contexto `aws:CalledVia` no es compatible con la característica de propagación de identidades fiables.

## Incorporación de una clave de contexto CalledVia para el acceso a las funciones de Lambda
<a name="security-iam-athena-calledvia-example-policy-to-add-an-optional-calledvia-context-key-for-fine-grained-access-to-a-lambda-function"></a>

Athena requiere que la persona que llama tenga permisos `lambda:InvokeFunction` para invocar la función de Lambda asociada a la consulta. La siguiente declaración especifica que el usuario solo puede invocar funciones de Lambda desde Athena.

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "VisualEditor3",
            "Effect": "Allow",
            "Action": "lambda:InvokeFunction",
            "Resource": "arn:aws:lambda:us-east-1:111122223333:function:OneAthenaLambdaFunction",
            "Condition": {
                "ForAnyValue:StringEquals": {
                    "aws:CalledVia": "athena.amazonaws.com"
                }
            }
        }
    ]
}
```

------

En el siguiente ejemplo, se muestra la adición de la instrucción anterior a una política que permite a un usuario ejecutar y leer una consulta federada. Las entidades principales a las que se les permite realizar estas acciones pueden ejecutar consultas que especifican catálogos de Athena asociados a un origen de datos federado. Sin embargo, la entidad principal no puede acceder a la función de Lambda asociada a menos que la función se invoque través de Athena.

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "VisualEditor0", 
            "Effect": "Allow",
            "Action": [ 
                "athena:GetWorkGroup", 
                "s3:PutObject", 
                "s3:GetObject", 
                "athena:StartQueryExecution", 
                "s3:AbortMultipartUpload",  
                "athena:StopQueryExecution", 
                "athena:GetQueryExecution", 
                "athena:GetQueryResults", 
                "s3:ListMultipartUploadParts" 
            ], 
            "Resource": [ 
                "arn:aws:athena:*:111122223333:workgroup/WorkGroupName",
                "arn:aws:s3:::MyQueryResultsBucket/*", 
                "arn:aws:s3:::MyLambdaSpillBucket/MyLambdaSpillPrefix*"
            ] 
        }, 
        {
            "Sid": "VisualEditor1", 
            "Effect": "Allow", 
            "Action": "athena:ListWorkGroups", 
            "Resource": "*" 
        }, 
        {
            "Sid": "VisualEditor2", 
            "Effect": "Allow", 
            "Action": 
                [ 
                "s3:ListBucket", 
                "s3:GetBucketLocation" 
                ], 
            "Resource": "arn:aws:s3:::MyLambdaSpillBucket" 
        },
        {
            "Sid": "VisualEditor3",
            "Effect": "Allow",
            "Action": "lambda:InvokeFunction",
            "Resource": [
                "arn:aws:lambda:*:111122223333:function:OneAthenaLambdaFunction", 
                "arn:aws:lambda:*:111122223333:function:AnotherAthenaLambdaFunction"
            ], 
            "Condition": {
                "ForAnyValue:StringEquals": { 
                    "aws:CalledVia": "athena.amazonaws.com"
                }
            }
        }            
    ]
}
```

------

Para obtener más información acerca de las claves de condición `CalledVia`, consulte [claves de contexto de condición globales de AWS](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html) en la *Guía del usuario de IAM*.

# Permiso de acceso al conector de datos de Athena para el metastore externo de Hive
<a name="hive-metastore-iam-access"></a>

Los ejemplos de políticas de permisos de este tema muestran las acciones permitidas necesarias y los recursos para las que están permitidas. Examine estas políticas detenidamente y modifíquelas de acuerdo con sus requisitos antes de adjuntar políticas de permisos similares a las identidades de IAM.
+  [Example Policy to Allow an IAM Principal to Query Data Using Athena Data Connector for External Hive Metastore](#hive-using-iam) 
+  [Example Policy to Allow an IAM Principal to Create an Athena Data Connector for External Hive Metastore](#hive-creating-iam) 

**Example : permitir que una entidad principal de IAM consulte datos con el conector de datos de Athena para un almacén de metadatos externo de Hive**  
La siguiente política se conecta a las entidades principales de IAM, además de [AWSPolítica administrada de : AmazonAthenaFullAccess](security-iam-awsmanpol.md#amazonathenafullaccess-managed-policy), que concede acceso completo a las acciones de Athena.    
****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "VisualEditor1",
            "Effect": "Allow",
            "Action": [
                "lambda:GetFunction",
                "lambda:GetLayerVersion",
                "lambda:InvokeFunction"
            ],
            "Resource": [
                "arn:aws:lambda:*:111122223333:function:MyAthenaLambdaFunction",
                "arn:aws:lambda:*:111122223333:function:AnotherAthenaLambdaFunction",
                "arn:aws:lambda:*:111122223333:layer:MyAthenaLambdaLayer:*"
            ]
        },
        {
            "Sid": "VisualEditor2",
            "Effect": "Allow",
            "Action": [
                "s3:GetBucketLocation",
                "s3:GetObject",
                "s3:ListBucket",
                "s3:PutObject",
                "s3:ListMultipartUploadParts",
                "s3:AbortMultipartUpload"
            ],
            "Resource": "arn:aws:s3:::MyLambdaSpillBucket/MyLambdaSpillLocation"
        }
    ]
}
```


**Explicación de permisos**  

| Acciones permitidas | Explicación | 
| --- | --- | 
|  <pre>"s3:GetBucketLocation",<br />"s3:GetObject",<br />"s3:ListBucket",<br />"s3:PutObject",<br />"s3:ListMultipartUploadParts",<br />"s3:AbortMultipartUpload"</pre>  |  Las acciones de `s3` que permiten leer y escribir en el recurso especificado como `"arn:aws:s3:::MyLambdaSpillBucket/MyLambdaSpillLocation"`, donde *MyLambdaSpillLocation* identifica el bucket de desbordamiento que se especifica en la configuración de la función o funciones de Lambda que se invocan. El identificador de recursos *arn:aws:lambda:\$1:*MyAWSAcctId*:layer:*MyAthenaLambdaLayer*:\$1* es necesario solo si utiliza una capa Lambda para crear dependencias de tiempo de ejecución personalizadas para reducir el tamaño del artefacto de la función en el momento de la implementación. `*` en la última posición es un comodín para la versión de capa.  | 
|  <pre>"lambda:GetFunction",<br />"lambda:GetLayerVersion",<br />"lambda:InvokeFunction"</pre>  | Permite que las consultas invoquen las funciones AWS Lambda especificadas en el bloque Resource. Por ejemplo, arn:aws:lambda:\$1:MyAWSAcctId:function:MyAthenaLambdaFunction, donde MyAthenaLambdaFunction especifica el nombre de una función de Lambda que se va a invocar. Se pueden especificar varias funciones como se muestra en el ejemplo. | 

**Example : permitir que una entidad principal de IAM cree un conector de datos de Athena para un almacén de metadatos externo de Hive**  
La siguiente política se conecta a las entidades principales de IAM, además de [AWSPolítica administrada de : AmazonAthenaFullAccess](security-iam-awsmanpol.md#amazonathenafullaccess-managed-policy), que concede acceso completo a las acciones de Athena.    
****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "VisualEditor0",
            "Effect": "Allow",
            "Action": [
                "lambda:GetFunction",
                "lambda:ListFunctions",
                "lambda:GetLayerVersion",
                "lambda:InvokeFunction",
                "lambda:CreateFunction",
                "lambda:DeleteFunction",
                "lambda:PublishLayerVersion",
                "lambda:DeleteLayerVersion",
                "lambda:UpdateFunctionConfiguration",
                "lambda:PutFunctionConcurrency",
                "lambda:DeleteFunctionConcurrency"
            ],
            "Resource": "arn:aws:lambda:*:111122223333: function: MyAthenaLambdaFunctionsPrefix*"
        }
    ]
}
```
 **Explicación de permisos**   
Permite que las consultas invoquen las funciones AWS Lambda para las funciones de AWS Lambda especificadas en el bloque `Resource`. Por ejemplo, `arn:aws:lambda:*:MyAWSAcctId:function:MyAthenaLambdaFunction`, donde *MyAthenaLambdaFunction* especifica el nombre de una función de Lambda que se va a invocar. Se pueden especificar varias funciones como se muestra en el ejemplo.

# Permitir a la función de Lambda el acceso a los almacenes de metadatos externos de Hive
<a name="hive-metastore-iam-access-lambda"></a>

Para invocar una función de Lambda en su cuenta, debe crear un rol que tenga los siguientes permisos:
+ `AWSLambdaVPCAccessExecutionRole`: un permiso [de rol de ejecución de AWS Lambda](https://docs.aws.amazon.com/lambda/latest/dg/lambda-intro-execution-role.html) para administrar interfaces de red elásticas que conectan la función a una VPC. Asegúrese de disponer de un número suficiente de interfaces de red y direcciones IP disponibles.
+ `AmazonAthenaFullAccess`: la política administrada [AmazonAthenaFullAccess](security-iam-awsmanpol.md#amazonathenafullaccess-managed-policy) concede acceso total a Athena.
+ Una política de Amazon S3 para permitir que la función de Lambda escriba en S3 y para permitir que Athena lea desde S3.

Por ejemplo, la siguiente política define el permiso para la ubicación del desbordamiento `s3:\\mybucket\spill`.

------
#### [ JSON ]

****  

```
{ "Version":"2012-10-17",		 	 	  "Statement": [ { "Effect": "Allow", "Action": [
    "s3:GetBucketLocation", "s3:GetObject", "s3:ListBucket", "s3:PutObject" ], "Resource": [
        "arn:aws:s3:::amzn-s3-demo-bucket/spill" ] } ] }
```

------

Siempre que utilice políticas de IAM, asegúrese de seguir las prácticas recomendadas de IAM. Para más información, consulte [Prácticas recomendadas de seguridad en IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/best-practices.html) en la *Guía del usuario de IAM*.

## Creación de funciones de Lambda
<a name="hive-metastore-iam-access-lambda-creating-lambda-functions"></a>

Para crear una función de Lambda en su cuenta, se requieren permisos de desarrollo de funciones o el rol `AWSLambdaFullAccess`. Para obtener más información, consulte [Políticas de IAM basadas en identidades para AWS Lambda](https://docs.aws.amazon.com/lambda/latest/dg/access-control-identity-based.html).

Dado que Athena utiliza el AWS Serverless Application Repository para crear funciones de Lambda, el superusuario o administrador que crea funciones de Lambda también debe tener políticas de IAM para [permitir consultas federadas de Athena](federated-query-iam-access.md).

## Configuración de permisos para el registro del catálogo y las operaciones de la API de metadatos
<a name="hive-metastore-iam-access-lambda-catalog-registration-and-metadata-api-operations"></a>

Para el acceso a la API para el registro del catálogo y las operaciones de metadatos, puede usar la [política administrada AmazonAthenaFullAccess](security-iam-awsmanpol.md#amazonathenafullaccess-managed-policy). Si no utiliza la política `AmazonAthenaFullAccess`, agregue las siguientes operaciones de la API a sus políticas de Athena:

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "athena:ListDataCatalogs",
                "athena:GetDataCatalog",
                "athena:CreateDataCatalog",
                "athena:UpdateDataCatalog",
                "athena:DeleteDataCatalog",
                "athena:GetDatabase",
                "athena:ListDatabases",
                "athena:GetTableMetadata",
                "athena:ListTableMetadata"
            ],
            "Resource": [
                "*"
            ]
        }
    ]
}
```

------

## Llamada a una función de Lambda en todas las regiones
<a name="hive-metastore-iam-access-lambda-cross-region-invocation"></a>

De forma predeterminada, Athena invoca funciones de Lambda definidas en la misma región. Para invocar una función de Lambda en una Región de AWS diferente a la región en la que está ejecutando las consultas de Athena, utilice el ARN completo de la función de Lambda. 

En el siguiente ejemplo, se muestra cómo un catálogo en la región de Europa (Fráncfort) puede especificar una función de Lambda en la región Este de EE. UU. (Norte de Virginia) para obtener datos del metastore de Hive en la región de Europa (Fráncfort).

```
arn:aws:lambda:us-east-1:111122223333:function:external-hms-service-new     
```

Cuando se especifica el ARN completo de esta manera, Athena puede llamar a la función de Lambda `external-hms-service-new` en `us-east-1` para obtener los datos de metaalmacén de Hive de `eu-central-1`.

**nota**  
El catálogo debe estar registrado en la misma Región de AWS que utiliza para ejecutar las consultas de Athena.

## Llamada a una función de Lambda entre cuentas
<a name="hive-metastore-iam-access-lambda-cross-account-invocation"></a>

A veces es posible que necesite acceso a una metaalmacén de Hive desde una cuenta diferente. Por ejemplo, para ejecutar un metastore de Hive, podría usar una cuenta diferente de la que utiliza para las consultas de Athena. Diferentes grupos o equipos pueden ejecutar el metaalmacén de Hive con distintas cuentas dentro de su VPC. O es posible que desee acceder a metadatos de distintos metaalmacenes de Hive de distintos grupos o equipos.

Athena utiliza el [soporte de AWS Lambda para el acceso entre cuentas](https://aws.amazon.com/blogs/compute/easy-authorization-of-aws-lambda-functions/) para habilitar el acceso entre cuentas para metaalmacenes de Hive.

**nota**  
Tenga en cuenta que el acceso entre cuentas para Athena normalmente implica el acceso entre cuentas tanto para metadatos como para datos en Amazon S3.

Imagine la siguiente situación:
+ La cuenta `111122223333` configura la función de Lambda `external-hms-service-new` en us-east-1 en Athena para acceder a un metaalmacén de Hive que se ejecuta en un clúster de EMR.
+ La cuenta `111122223333` quiere permitir que la cuenta 444455556666 acceda a los datos del metaalmacén de Hive.

Para conceder a la cuenta `444455556666` acceso a la función de Lambda `external-hms-service-new`, la cuenta `111122223333` utiliza el siguiente comando AWS CLI de `add-permission`. El comando se ha formateado para fines de legibilidad.

```
$ aws --profile perf-test lambda add-permission
      --function-name external-hms-service-new
      --region us-east-1
      --statement-id Id-ehms-invocation2
      --action "lambda:InvokeFunction"
      --principal arn:aws:iam::444455556666:user/perf1-test
{
    "Statement": "{\"Sid\":\"Id-ehms-invocation2\",
                   \"Effect\":\"Allow\",
                   \"Principal\":{\"AWS\":\"arn:aws:iam::444455556666:user/perf1-test\"},
                   \"Action\":\"lambda:InvokeFunction\",
                   \"Resource\":\"arn:aws:lambda:us-east-1:111122223333:function:external-hms-service-new\"}"
}
```

Para verificar el permiso de Lambda, utilice el comando `get-policy`, como en el siguiente ejemplo. El comando se ha formateado para fines de legibilidad.

```
$ aws --profile perf-test lambda get-policy 
      --function-name arn:aws:lambda:us-east-1:111122223333:function:external-hms-service-new 
      --region us-east-1
{
    "RevisionId": "711e93ea-9851-44c8-a09f-5f2a2829d40f",
    "Policy": "{\"Version\":\"2012-10-17\",		 	 	 
                \"Id\":\"default\",
                \"Statement\":[{\"Sid\":\"Id-ehms-invocation2\",
                                \"Effect\":\"Allow\",
                                \"Principal\":{\"AWS\":\"arn:aws:iam::444455556666:user/perf1-test\"},
                                \"Action\":\"lambda:InvokeFunction\",
                                \"Resource\":\"arn:aws:lambda:us-east-1:111122223333:function:external-hms-service-new\"}]}"
}
```

Después de agregar el permiso, puede usar un ARN completo de la función de Lambda de `us-east-1` como el siguiente al definir el catálogo `ehms`:

```
arn:aws:lambda:us-east-1:111122223333:function:external-hms-service-new
```

Para obtener información acerca de la invocación entre regiones, consulte [Llamada a una función de Lambda en todas las regiones](#hive-metastore-iam-access-lambda-cross-region-invocation) anteriormente en este tema.

### Concesión de acceso entre cuentas a los datos
<a name="hive-metastore-iam-access-lambda-granting-cross-account-access-to-data"></a>

Antes de poder ejecutar consultas de Athena, debe conceder acceso entre cuentas a los datos de Amazon S3. Puedes hacerlo de una de las siguientes formas:
+ Actualice la política de lista de control de acceso del bucket de Amazon S3 con un [ID de usuario canónico](https://docs.aws.amazon.com/general/latest/gr/acct-identifiers.html).
+ Agregue acceso entre cuentas a la política de bucket de Amazon S3.

Por ejemplo, agregue la siguiente política a la política de bucket de Amazon S3 en la cuenta `111122223333` para permitir que la cuenta `444455556666` lea datos de la ubicación de Amazon S3 especificada.

------
#### [ JSON ]

****  

```
{ "Version":"2012-10-17",		 	 	  "Statement": [ { "Sid": "Stmt1234567890123", "Effect":
    "Allow", "Principal": { "AWS":
        "arn:aws:iam::444455556666:user/perf1-test"
    }, "Action": "s3:GetObject", "Resource": "arn:aws:s3:::athena-test/lambda/dataset/*" } ]
    }
```

------

**nota**  
Es posible que tenga que conceder acceso entre cuentas a Amazon S3 no solo a sus datos, sino también a su ubicación de desbordamiento de Amazon S3. Su función de Lambda desborda datos adicionales a la ubicación de desbordamiento cuando el tamaño del objeto de respuesta supera un umbral determinado. Consulte al principio de este tema para obtener una política de ejemplo.

En el ejemplo actual, después de conceder acceso entre cuentas a `444455556666,` `444455556666` puede utilizar el catálogo `ehms` en su propia `account` para consultar tablas definidas en la cuenta `111122223333`.

En el siguiente ejemplo, el perfil de SQL Workbench `perf-test-1` es para la cuenta `444455556666`. La consulta utiliza el catálogo `ehms` para acceder al metaalmacén de Hive y a los datos de Amazon S3 en la cuenta `111122223333`.

![\[Acceso al metaalmacén de Hive y a datos de Amazon S3 a través de cuentas en SQL Workbench.\]](http://docs.aws.amazon.com/es_es/athena/latest/ug/images/hive-metastore-iam-access-lambda-1.png)


# Permisos necesarios para crear el conector y el catálogo de Athena
<a name="athena-catalog-access"></a>

Para invocar Athena `CreateDataCatalog` debe crear un rol que tenga los siguientes permisos:

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
  {
  "Sid": "ECR",
  "Effect": "Allow",
  "Action": [
  "ecr:BatchGetImage",
  "ecr:GetDownloadUrlForLayer"
  ],
  "Resource": "arn:aws:ecr:*:*:repository/*"
  },
  {
  "Effect": "Allow",
  "Action": [
  "s3:GetObject",
  "glue:TagResource",
  "glue:GetConnection",
  "glue:CreateConnection",
  "glue:DeleteConnection",
  "glue:UpdateConnection",
  "serverlessrepo:CreateCloudFormationTemplate",
  "serverlessrepo:GetCloudFormationTemplate",
  "cloudformation:CreateStack",
  "cloudformation:DeleteStack",
  "cloudformation:DescribeStacks",
  "cloudformation:CreateChangeSet",
  "cloudformation:DescribeAccountLimits",
  "cloudformation:CreateStackSet",
  "cloudformation:ValidateTemplate",
  "cloudformation:CreateUploadBucket",
  "cloudformation:DescribeStackDriftDetectionStatus",
  "cloudformation:ListExports",
  "cloudformation:ListStacks",
  "cloudformation:EstimateTemplateCost",
  "cloudformation:ListImports",
  "lambda:InvokeFunction",
  "lambda:GetFunction",
  "lambda:DeleteFunction",
  "lambda:CreateFunction",
  "lambda:TagResource",
  "lambda:ListFunctions",
  "lambda:GetAccountSettings",
  "lambda:ListEventSourceMappings",
  "lambda:ListVersionsByFunction",
  "lambda:GetFunctionConfiguration",
  "lambda:PutFunctionConcurrency",
  "lambda:UpdateFunctionConfiguration",
  "lambda:UpdateFunctionCode",
  "lambda:DeleteFunctionConcurrency",
  "lambda:RemovePermission",
  "lambda:AddPermission",
  "lambda:ListTags",
  "lambda:GetAlias",
  "lambda:GetPolicy",
  "lambda:ListAliases",
  "ec2:DescribeSecurityGroups",
  "ec2:DescribeSubnets",
  "ec2:DescribeVpcs",
  "secretsmanager:ListSecrets",
  "glue:GetCatalogs"
  ],
  "Resource": "*"
  },
  {
  "Effect": "Allow",
  "Action": [
  "iam:AttachRolePolicy",
  "iam:DetachRolePolicy",
  "iam:DeleteRolePolicy",
  "iam:PutRolePolicy",
  "iam:GetRolePolicy",
  "iam:CreateRole",
  "iam:TagRole",
  "iam:DeleteRole",
  "iam:GetRole",
  "iam:PassRole",
  "iam:ListRoles",
  "iam:ListAttachedRolePolicies",
  "iam:ListRolePolicies",
  "iam:GetPolicy",
  "iam:UpdateRole"
  ],
  "Resource": [
  "arn:aws:iam::*:role/RoleName",
  "arn:aws:iam::111122223333:policy/*"
  ]
  }
  ]
  }
```

------

# Permiso de acceso a la consulta federada de Athena: políticas de ejemplo
<a name="federated-query-iam-access"></a>

Los ejemplos de políticas de permisos de este tema muestran las acciones permitidas necesarias y los recursos para las que están permitidas. Examine estas políticas detenidamente y modifíquelas de acuerdo con sus requisitos antes de adjuntarlas a las identidades de IAM.

Para obtener información sobre cómo adjuntar políticas a identidades de IAM, consulte [Adición y eliminación de permisos de identidad de IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_manage-attach-detach.html) en la [Guía del usuario de IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/).
+  [Example policy to allow an IAM principal to run and return results using Athena Federated Query](#fed-using-iam) 
+  [Example Policy to Allow an IAM Principal to Create a Data Source Connector](#fed-creating-iam) 

**Example : permitir que una entidad principal de IAM ejecute y devuelva resultados mediante la consulta federada de Athena**  
La siguiente política de permisos basada en identidad permite acciones que un usuario u otra entidad principal de IAM necesita para utilizar la consulta federada de Athena. Las entidades principales a las que se les permite realizar estas acciones pueden ejecutar consultas que especifican catálogos de Athena asociados a un origen de datos federado.    
****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "Athena",
            "Effect": "Allow",
            "Action": [
                "athena:GetDataCatalog",
                "athena:GetQueryExecution",
                "athena:GetQueryResults",
                "athena:GetWorkGroup",
                "athena:StartQueryExecution",
                "athena:StopQueryExecution"
            ],
            "Resource": [
                "arn:aws:athena:*:111122223333:workgroup/WorkgroupName",
                "arn:aws:athena:us-east-1:111122223333:datacatalog/DataCatalogName"
            ]
        },
        {
            "Sid": "ListAthenaWorkGroups",
            "Effect": "Allow",
            "Action": "athena:ListWorkGroups",
            "Resource": "*"
        },
        {
            "Sid": "Lambda",
            "Effect": "Allow",
            "Action": "lambda:InvokeFunction",
            "Resource": [
                "arn:aws:lambda:*:111122223333:function:OneAthenaLambdaFunction",
                "arn:aws:lambda:*:111122223333:function:AnotherAthenaLambdaFunction"
            ]
        },
        {
            "Sid": "S3",
            "Effect": "Allow",
            "Action": [
                "s3:AbortMultipartUpload",
                "s3:GetBucketLocation",
                "s3:GetObject",
                "s3:ListBucket",
                "s3:ListMultipartUploadParts",
                "s3:PutObject"
            ],
            "Resource": [
                "arn:aws:s3:::MyLambdaSpillBucket",
                "arn:aws:s3:::MyLambdaSpillBucket/*",
                "arn:aws:s3:::MyQueryResultsBucket",
                "arn:aws:s3:::MyQueryResultsBucket/*"
            ]
        }
    ]
}
```


**Explicación de permisos**  

| Acciones permitidas | Explicación | 
| --- | --- | 
|  <pre> "athena:GetQueryExecution", <br /> "athena:GetQueryResults",<br /> "athena:GetWorkGroup",<br /> "athena:StartQueryExecution",<br /> "athena:StopQueryExecution"</pre>  |  Permisos de Athena necesarios para ejecutar consultas federadas.  | 
|  <pre> "athena:GetDataCatalog",<br /> "athena:GetQueryExecution,"<br /> "athena:GetQueryResults",<br /> "athena:GetWorkGroup",<br /> "athena:StartQueryExecution",<br /> "athena:StopQueryExecution"</pre>  |  Permisos de Athena necesarios para ejecutar consultas de vistas federadas. La acción `GetDataCatalog` es obligatoria para las vistas.  | 
|  <pre>"lambda:InvokeFunction"</pre>  | Permite que las consultas invoquen las funciones AWS Lambda para las funciones de AWS Lambda especificadas en el bloque Resource. Por ejemplo, arn:aws:lambda:\$1:MyAWSAcctId:function:MyAthenaLambdaFunction, donde MyAthenaLambdaFunction especifica el nombre de una función de Lambda que se va a invocar. Se pueden especificar varias funciones, como se muestra en el ejemplo. | 
|  <pre>"s3:AbortMultipartUpload",<br />"s3:GetBucketLocation",<br />"s3:GetObject",<br />"s3:ListBucket",<br />"s3:ListMultipartUploadParts",<br />"s3:PutObject"</pre>  |  Los permisos `s3:ListBucket` y `s3:GetBucketLocation` son necesarios para acceder al bucket de resultados de la consulta para las entidades principales de IAM que ejecutan `StartQueryExecution`. `s3:PutObject`, `s3:ListMultipartUploadParts` y `s3:AbortMultipartUpload` permiten escribir los resultados de la consulta en todas las subcarpetas del bucket de resultados de la consulta según lo especificado por el identificador de recursos `arn:aws:s3:::MyQueryResultsBucket/*`, donde *MyQueryResultsBucket* es el bucket de resultados de la consulta de Athena. Para obtener más información, consulte [Trabajo con resultados de la consulta y consultas recientes](querying.md). `s3:GetObject` permite leer los resultados de la consulta y el historial de consultas para el recurso especificado como `arn:aws:s3:::MyQueryResultsBucket`, donde *MyQueryResultsBucket* es el bucket de resultados de la consulta de Athena. `s3:GetObject` también permite leer desde el recurso especificado como `"arn:aws:s3:::MyLambdaSpillBucket/MyLambdaSpillPrefix*"`, donde *MyLambdaSpillPrefix* se especifica en la configuración de la función o funciones de Lambda invocadas.  | 

**Example : permitir que una entidad principal de IAM cree un conector de origen de datos**  

```
{
    "Version": "2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "VisualEditor0",
            "Effect": "Allow",
            "Action": [
                "lambda:CreateFunction",
                "lambda:ListVersionsByFunction",
                "iam:CreateRole",
                "lambda:GetFunctionConfiguration",
                "iam:AttachRolePolicy",
                "iam:PutRolePolicy",
                "lambda:PutFunctionConcurrency",
                "iam:PassRole",
                "iam:DetachRolePolicy",
                "lambda:ListTags",
                "iam:ListAttachedRolePolicies",
                "iam:DeleteRolePolicy",
                "lambda:DeleteFunction",
                "lambda:GetAlias",
                "iam:ListRolePolicies",
                "iam:GetRole",
                "iam:GetPolicy",
                "lambda:InvokeFunction",
                "lambda:GetFunction",
                "lambda:ListAliases",
                "lambda:UpdateFunctionConfiguration",
                "iam:DeleteRole",
                "lambda:UpdateFunctionCode",
                "s3:GetObject",
                "lambda:AddPermission",
                "iam:UpdateRole",
                "lambda:DeleteFunctionConcurrency",
                "lambda:RemovePermission",
                "iam:GetRolePolicy",
                "lambda:GetPolicy"
            ],
            "Resource": [
                "arn:aws:lambda:*:111122223333:function:MyAthenaLambdaFunctionsPrefix*",
                "arn:aws:s3:::awsserverlessrepo-changesets-1iiv3xa62ln3m/*",
                "arn:aws:iam::*:role/RoleName",
                "arn:aws:iam::111122223333:policy/*"
            ]
        },
        {
            "Sid": "VisualEditor1",
            "Effect": "Allow",
            "Action": [
                "cloudformation:CreateUploadBucket",
                "cloudformation:DescribeStackDriftDetectionStatus",
                "cloudformation:ListExports",
                "cloudformation:ListStacks",
                "cloudformation:ListImports",
                "lambda:ListFunctions",
                "iam:ListRoles",
                "lambda:GetAccountSettings",
                "ec2:DescribeSecurityGroups",
                "cloudformation:EstimateTemplateCost",
                "ec2:DescribeVpcs",
                "lambda:ListEventSourceMappings",
                "cloudformation:DescribeAccountLimits",
                "ec2:DescribeSubnets",
                "cloudformation:CreateStackSet",
                "cloudformation:ValidateTemplate"
            ],
            "Resource": "*"
        },
        {
            "Sid": "VisualEditor2",
            "Effect": "Allow",
            "Action": "cloudformation:*",
            "Resource": [
                "arn:aws:cloudformation:*:111122223333:stack/aws-serverless-repository-MyCFStackPrefix*/*",
                "arn:aws:cloudformation:*:111122223333:stack/serverlessrepo-MyCFStackPrefix*/*",
                "arn:aws:cloudformation:*:*:transform/Serverless-*",
                "arn:aws:cloudformation:*:111122223333:stackset/aws-serverless-repository-MyCFStackPrefix*:*",
                "arn:aws:cloudformation:*:111122223333:stackset/serverlessrepo-MyCFStackPrefix*:*"
            ]
        },
        {
            "Sid": "VisualEditor3",
            "Effect": "Allow",
            "Action": "serverlessrepo:*",
            "Resource": "arn:aws:serverlessrepo:*:*:applications/*"
        },
        {
            "Sid": "ECR",
            "Effect": "Allow",
            "Action": [
                "ecr:BatchGetImage",
                "ecr:GetDownloadUrlForLayer"
            ],
            "Resource": "arn:aws:ecr:*:*:repository/*"
        }
    ]
}
```


**Explicación de permisos**  

| Acciones permitidas | Explicación | 
| --- | --- | 
|  <pre>"lambda:CreateFunction",<br />"lambda:ListVersionsByFunction",<br />"lambda:GetFunctionConfiguration",<br />"lambda:PutFunctionConcurrency",<br />"lambda:ListTags",<br />"lambda:DeleteFunction",<br />"lambda:GetAlias",<br />"lambda:InvokeFunction",<br />"lambda:GetFunction",<br />"lambda:ListAliases",<br />"lambda:UpdateFunctionConfiguration",<br />"lambda:UpdateFunctionCode",<br />"lambda:AddPermission",<br />"lambda:DeleteFunctionConcurrency",<br />"lambda:RemovePermission",<br />"lambda:GetPolicy"<br />"lambda:GetAccountSettings",<br />"lambda:ListFunctions",<br />"lambda:ListEventSourceMappings",<br /></pre>  |  Permita la creación y administración de las funciones de Lambda enumeradas como recursos. En el ejemplo, se utiliza un prefijo de nombre en el identificador de recurso `arn:aws:lambda:*:MyAWSAcctId:function:MyAthenaLambdaFunctionsPrefix*`, donde `MyAthenaLambdaFunctionsPrefix` es un prefijo compartido utilizado en el nombre de un grupo de funciones de Lambda para que no sea necesario especificarlas individualmente como recursos. Puede especificar uno o más recursos de funciones de Lambda.  | 
|  <pre>"s3:GetObject"</pre>  | Permite la lectura de un bucket que AWS Serverless Application Repository requiere según lo especificado por el identificador de recurso arn:aws:s3:::awsserverlessrepo-changesets-1iiv3xa62ln3m/\$1. Este bucket puede ser específico de su cuenta. | 
|  <pre>"cloudformation:*"</pre>  |  Permite la creación y administración de las pilas de CloudFormation especificadas por el recurso `MyCFStackPrefix`. Estas pilas y conjuntos de pilas indican la forma en la que AWS Serverless Application Repository implementa los conectores y las UDF.  | 
|  <pre>"serverlessrepo:*"</pre>  | Permite buscar, ver, publicar y actualizar aplicaciones en AWS Serverless Application Repository, especificado por el identificador de recurso arn:aws:serverlessrepo:\$1:\$1:applications/\$1. | 
|  <pre>"ecr:BatchGetImage",<br />"ecr:GetDownloadUrlForLayer"</pre>  |  Permite que la función de Lambda creada obtenga acceso a la imagen ECR del conector de federación.  | 

# Permiso de acceso a las UDF de Athena: políticas de ejemplo
<a name="udf-iam-access"></a>

Los ejemplos de políticas de permisos de este tema muestran las acciones permitidas necesarias y los recursos para las que están permitidas. Examine estas políticas detenidamente y modifíquelas de acuerdo con sus requisitos antes de adjuntar políticas de permisos similares a las identidades de IAM.
+  [Example Policy to Allow an IAM Principal to Run and Return Queries that Contain an Athena UDF Statement](#udf-using-iam) 
+  [Example Policy to Allow an IAM Principal to Create an Athena UDF](#udf-creating-iam) 

**Example : permitir que una entidad principal de IAM ejecute y devuelva consultas que contengan una instrucción UDF de Athena**  
La siguiente política de permisos basada en identidad permite acciones que un usuario u otra entidad principal de IAM necesitan para ejecutar consultas que usan instrucciones UDF de Athena.  

```
{
    "Version": "2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "VisualEditor0",
            "Effect": "Allow",
            "Action": [
                "athena:StartQueryExecution",
                "lambda:InvokeFunction",
                "athena:GetQueryResults",
                "s3:ListMultipartUploadParts",
                "athena:GetWorkGroup",
                "s3:PutObject",
                "s3:GetObject",
                "s3:AbortMultipartUpload",
                "athena:StopQueryExecution",
                "athena:GetQueryExecution",
                "s3:GetBucketLocation"
            ],
            "Resource": [
                "arn:aws:athena:*:MyAWSAcctId:workgroup/MyAthenaWorkGroup",
                "arn:aws:s3:::MyQueryResultsBucket/*",
                "arn:aws:lambda:*:MyAWSAcctId:function:OneAthenaLambdaFunction",
                "arn:aws:lambda:*:MyAWSAcctId:function:AnotherAthenaLambdaFunction"
            ]
        },
        {
            "Sid": "VisualEditor1",
            "Effect": "Allow",
            "Action": "athena:ListWorkGroups",
            "Resource": "*"
        }
    ]
}
```


**Explicación de permisos**  

| Acciones permitidas | Explicación | 
| --- | --- | 
|  <pre>"athena:StartQueryExecution",<br /> "athena:GetQueryResults",<br /> "athena:GetWorkGroup",<br /> "athena:StopQueryExecution",<br /> "athena:GetQueryExecution",<br /></pre>  |  Permisos de Athena necesarios para ejecutar consultas en el grupo de trabajo de `MyAthenaWorkGroup`.  | 
|  <pre>"s3:PutObject",<br />"s3:GetObject",<br />"s3:AbortMultipartUpload"</pre>  |  `s3:PutObject` y `s3:AbortMultipartUpload` permiten escribir los resultados de la consulta en todas las subcarpetas del bucket de resultados de la consulta según lo especificado por el identificador de recursos `arn:aws:s3:::MyQueryResultsBucket/*`, donde *MyQueryResultsBucket* es el bucket de resultados de la consulta de Athena. Para obtener más información, consulte [Trabajo con resultados de la consulta y consultas recientes](querying.md). `s3:GetObject` permite leer los resultados de la consulta y el historial de consultas para el recurso especificado como `arn:aws:s3:::MyQueryResultsBucket`, donde *MyQueryResultsBucket* es el bucket de resultados de la consulta de Athena. Para obtener más información, consulte [Trabajo con resultados de la consulta y consultas recientes](querying.md). `s3:GetObject` también permite leer desde el recurso especificado como `"arn:aws:s3:::MyLambdaSpillBucket/MyLambdaSpillPrefix*"`, donde *MyLambdaSpillPrefix* se especifica en la configuración de la función o funciones de Lambda invocadas.  | 
|  <pre>"lambda:InvokeFunction"</pre>  | Permite que las consultas invoquen las funciones AWS Lambda especificadas en el bloque Resource. Por ejemplo, arn:aws:lambda:\$1:MyAWSAcctId:function:MyAthenaLambdaFunction, donde MyAthenaLambdaFunction especifica el nombre de una función de Lambda que se va a invocar. Se pueden especificar varias funciones como se muestra en el ejemplo. | 

**Example : permitir que una entidad principal de IAM cree una UDF de Athena**  

```
{
    "Version": "2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "VisualEditor0",
            "Effect": "Allow",
            "Action": [
                "lambda:CreateFunction",
                "lambda:ListVersionsByFunction",
                "iam:CreateRole",
                "lambda:GetFunctionConfiguration",
                "iam:AttachRolePolicy",
                "iam:PutRolePolicy",
                "lambda:PutFunctionConcurrency",
                "iam:PassRole",
                "iam:DetachRolePolicy",
                "lambda:ListTags",
                "iam:ListAttachedRolePolicies",
                "iam:DeleteRolePolicy",
                "lambda:DeleteFunction",
                "lambda:GetAlias",
                "iam:ListRolePolicies",
                "iam:GetRole",
                "iam:GetPolicy",
                "lambda:InvokeFunction",
                "lambda:GetFunction",
                "lambda:ListAliases",
                "lambda:UpdateFunctionConfiguration",
                "iam:DeleteRole",
                "lambda:UpdateFunctionCode",
                "s3:GetObject",
                "lambda:AddPermission",
                "iam:UpdateRole",
                "lambda:DeleteFunctionConcurrency",
                "lambda:RemovePermission",
                "iam:GetRolePolicy",
                "lambda:GetPolicy"
            ],
            "Resource": [
                "arn:aws:lambda:*:111122223333:function:MyAthenaLambdaFunctionsPrefix*",
                "arn:aws:s3:::awsserverlessrepo-changesets-1iiv3xa62ln3m/*",
                "arn:aws:iam::*:role/RoleName",
                "arn:aws:iam::111122223333:policy/*"
            ]
        },
        {
            "Sid": "VisualEditor1",
            "Effect": "Allow",
            "Action": [
                "cloudformation:CreateUploadBucket",
                "cloudformation:DescribeStackDriftDetectionStatus",
                "cloudformation:ListExports",
                "cloudformation:ListStacks",
                "cloudformation:ListImports",
                "lambda:ListFunctions",
                "iam:ListRoles",
                "lambda:GetAccountSettings",
                "ec2:DescribeSecurityGroups",
                "cloudformation:EstimateTemplateCost",
                "ec2:DescribeVpcs",
                "lambda:ListEventSourceMappings",
                "cloudformation:DescribeAccountLimits",
                "ec2:DescribeSubnets",
                "cloudformation:CreateStackSet",
                "cloudformation:ValidateTemplate"
            ],
            "Resource": "*"
        },
        {
            "Sid": "VisualEditor2",
            "Effect": "Allow",
            "Action": "cloudformation:*",
            "Resource": [
                "arn:aws:cloudformation:*:111122223333:stack/aws-serverless-repository-MyCFStackPrefix*/*",
                "arn:aws:cloudformation:*:111122223333:stack/serverlessrepo-MyCFStackPrefix*/*",
                "arn:aws:cloudformation:*:*:transform/Serverless-*",
                "arn:aws:cloudformation:*:111122223333:stackset/aws-serverless-repository-MyCFStackPrefix*:*",
                "arn:aws:cloudformation:*:111122223333:stackset/serverlessrepo-MyCFStackPrefix*:*"
            ]
        },
        {
            "Sid": "VisualEditor3",
            "Effect": "Allow",
            "Action": "serverlessrepo:*",
            "Resource": "arn:aws:serverlessrepo:*:*:applications/*"
        },
        {
            "Sid": "ECR",
            "Effect": "Allow",
            "Action": [
                "ecr:BatchGetImage",
                "ecr:GetDownloadUrlForLayer"
            ],
            "Resource": "arn:aws:ecr:*:*:repository/*"
        }
    ]
}
```


**Explicación de permisos**  

| Acciones permitidas | Explicación | 
| --- | --- | 
|  <pre>"lambda:CreateFunction",<br />"lambda:ListVersionsByFunction",<br />"lambda:GetFunctionConfiguration",<br />"lambda:PutFunctionConcurrency",<br />"lambda:ListTags",<br />"lambda:DeleteFunction",<br />"lambda:GetAlias",<br />"lambda:InvokeFunction",<br />"lambda:GetFunction",<br />"lambda:ListAliases",<br />"lambda:UpdateFunctionConfiguration",<br />"lambda:UpdateFunctionCode",<br />"lambda:AddPermission",<br />"lambda:DeleteFunctionConcurrency",<br />"lambda:RemovePermission",<br />"lambda:GetPolicy"<br />"lambda:GetAccountSettings",<br />"lambda:ListFunctions",<br />"lambda:ListEventSourceMappings",<br /></pre>  |  Permita la creación y administración de las funciones de Lambda enumeradas como recursos. En el ejemplo, se utiliza un prefijo de nombre en el identificador de recurso `arn:aws:lambda:*:MyAWSAcctId:function:MyAthenaLambdaFunctionsPrefix*`, donde *MyAthenaLambdaFunctionsPrefix* es un prefijo compartido utilizado en el nombre de un grupo de funciones de Lambda para que no sea necesario especificarlas individualmente como recursos. Puede especificar uno o más recursos de funciones de Lambda.  | 
|  <pre>"s3:GetObject"</pre>  | Permite la lectura de un bucket que AWS Serverless Application Repository requiere según lo especificado por el identificador de recurso arn:aws:s3:::awsserverlessrepo-changesets-1iiv3xa62ln3m/\$1. | 
|  <pre>"cloudformation:*"</pre>  |  Permite la creación y administración de las pilas de CloudFormation especificadas por el recurso *MyCFStackPrefix*. Estas pilas y conjuntos de pilas indican la forma en la que AWS Serverless Application Repository implementa los conectores y las UDF.  | 
|  <pre>"serverlessrepo:*"</pre>  | Permite buscar, ver, publicar y actualizar aplicaciones en AWS Serverless Application Repository, especificado por el identificador de recurso arn:aws:serverlessrepo:\$1:\$1:applications/\$1. | 

# Permiso de acceso para ML con Athena
<a name="machine-learning-iam-access"></a>

Las entidades principales de IAM que ejecutan consultas de ML de Athena deben tener permiso para realizar la acción `sagemaker:invokeEndpoint` para los puntos de conexión de SageMaker que utilizan. Incluya una instrucción de política similar a la siguiente en las políticas de permisos basadas en identidad asociadas a identidades de usuario. Además, adjunte [AWSPolítica administrada de : AmazonAthenaFullAccess](security-iam-awsmanpol.md#amazonathenafullaccess-managed-policy), que proporciona acceso completo a las acciones de Athena, o una política insertada modificada que permite un subconjunto de acciones.

Reemplace `arn:aws:sagemaker:region:AWSAcctID:ModelEndpoint` en el ejemplo por el ARN o los ARN de los puntos de conexión del modelo que se utilizarán en las consultas. Para obtener más información, consulte [Acciones, recursos y claves de condición de SageMaker IA](https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazonsagemaker.html) en la *Referencia de autorizaciones de servicio*.

```
{
            "Effect": "Allow",
            "Action": [
                "sagemaker:invokeEndpoint"
            ],
            "Resource": "arn:aws:sagemaker:us-west-2:123456789012:workteam/public-crowd/default"
}
```

Siempre que utilice políticas de IAM, compruebe que sigue las mejores prácticas IAM. Para más información, consulte [Prácticas recomendadas de seguridad en IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/best-practices.html) en la *Guía del usuario de IAM*.

# Habilitación del acceso federado a la API de Athena
<a name="access-federation-saml"></a>

En esta sección se trata el acceso federado que permite a un usuario o aplicación cliente en la organización llamar a operaciones de la API de Amazon Athena. En este caso, los usuarios de la organización no tienen acceso directo a Athena. En su lugar, administra credenciales de usuario fuera de AWS en Microsoft Active Directory. Active Directory es compatible con [SAML 2.0](https://wiki.oasis-open.org/security) (Lenguaje de marcado para confirmaciones de seguridad 2.0).

Para autenticar a los usuarios en este escenario, utilice el controlador JDBC u ODBC con compatibilidad con SAML.2.0 para obtener acceso a Active Directory Federation Services (AD FS) 3.0 y permitir que una aplicación cliente llame las operaciones de la API de Athena.

Para obtener más información sobre la compatibilidad con SAML 2.0 en AWS, consulte [Acerca de la federación SAML 2.0](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_providers_saml.html) en la *Guía del usuario de IAM*. 

**nota**  
El acceso federado a la API de Athena es compatible con un determinado tipo de proveedor de identidades (IdP), el Active Directory Federation Service (ADFS 3.0), que forma parte de Windows Server. El acceso de federación no es compatible con la característica de propagación de identidades fiables del IAM Identity Center. El acceso se establece a través de las versiones de los controladores JDBC u ODBC que admiten SAML 2.0. Para obtener más informació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).

**Topics**
+ [

## Antes de empezar
](#access-federation-before-you-begin)
+ [

## Descripción del proceso de autenticación
](#access-federation-diagram)
+ [

## Procedimiento: habilitación del acceso federado a la API de Athena basado en SAML
](#access-federation-procedure)

## Antes de empezar
<a name="access-federation-before-you-begin"></a>

 Antes de comenzar, complete los siguientes requisitos previos: 
+ Dentro de su organización, instale y configure ADFS 3.0 como proveedor de identidad.
+ Instale y configure las últimas versiones disponibles de los controladores JDBC u ODBC en los clientes que se utilizan para obtener acceso a Athena. El controlador debe incluir compatibilidad con el acceso federado compatible con SAML 2.0. Para obtener más informació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).

## Descripción del proceso de autenticación
<a name="access-federation-diagram"></a>

El siguiente diagrama ilustra el proceso de autenticación para el acceso federado a la API de Athena.

![\[Diagrama del acceso federado a la API de Athena.\]](http://docs.aws.amazon.com/es_es/athena/latest/ug/images/athena-saml-based-federation.png)


1. Un usuario de su organización utiliza una aplicación cliente con el controlador JDBC u ODBC para solicitar autenticación del proveedor de identidad de su organización. El proveedor de identidad es ADFS 3.0.

1. El proveedor de identidad autentica al usuario en función de Active Directory, que es el almacén de identidades de la organización.

1. El proveedor de identidad construye una aserción de SAML con información sobre el usuario y envía dicha aserción a la aplicación cliente a través del controlador JDBC u ODBC.

1. El controlador JDBC u ODBC llama a la operación API AWS Security Token Service [AssumeRoleWithSAML](https://docs.aws.amazon.com/STS/latest/APIReference/API_AssumeRoleWithSAML.html), transfiriéndole los siguientes parámetros:
   + El ARN del proveedor SAML.
   + El ARN del rol que suponer
   + La aserción SAML del proveedor de identidades

   Para obtener más información, consulte [AssumeRoleWithSAML](https://docs.aws.amazon.com/STS/latest/APIReference/API_AssumeRoleWithSAML.html) en la *Referencia de la API de AWS Security Token Service*.

1. La respuesta de la API a la aplicación cliente a través del controlador JDBC u ODBC incluye credenciales de seguridad temporales.

1. La aplicación cliente utiliza credenciales de seguridad temporales para llamar a las operaciones de la API de Athena, lo que permite a los usuarios obtener acceso a las operaciones de la API de Athena.

## Procedimiento: habilitación del acceso federado a la API de Athena basado en SAML
<a name="access-federation-procedure"></a>

El procedimiento establece una relación de confianza entre el proveedor de identidad de la organización y su cuenta de AWS para habilitar el acceso federado basado en SAML a la operación API de Amazon Athena.

**Para habilitar el acceso federado a la API de Athena:**

1. En su organización, registre AWS como proveedor de servicios (SP) en su proveedor de identidad. Este proceso se conoce como *relación de confianza*. Para obtener más información, consulte [Configuración de una relación de confianza para usuario autenticado en el proveedor de identidades SAML 2.0](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_providers_create_saml_relying-party.html) en la *Guía del usuario de IAM*. Como parte de esta tarea, siga estos pasos:

   1. Obtenga el documento de metadatos de SAML de muestra de esta URL: [https://signin.aws.amazon.com/static/saml-metadata.xml](https://signin.aws.amazon.com/static/saml-metadata.xml).

   1. En el proveedor de identidad de la organización (ADFS), puede generar un archivo XML de metadatos equivalente que describa su proveedor de identidad como proveedor de identidad de AWS. El archivo de metadatos debe incluir el nombre de emisor, una fecha de creación, una fecha de vencimiento y claves que AWS utiliza para validar las respuestas de autenticación (aserciones) de la organización. 

1. En la consola de IAM, cree una entidad de proveedor de identidad SAML. Para obtener más información, consulte [Creación de proveedores de identidad SAML](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_providers_create_saml.html) en la *Guía del usuario de IAM*. Como parte de este paso, haga lo siguiente: 

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

   1. Cargue el documento de metadatos de SAML producido por el proveedor de identidad (ADFS) en el paso 1 de este procedimiento. 

1. En la consola de IAM, cree uno o varios roles de IAM para su proveedor de identidad. Para obtener más información, consulte [Creación de un rol para un proveedor de identidad de terceros (federación)](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_create_for-idp.html) en la *Guía del usuario de IAM*. Como parte de este paso, haga lo siguiente: 
   + En la política de permisos del rol, enumere las acciones que pueden realizar los usuarios de la organización en AWS. 
   + En la política de confianza del rol, establezca la entidad de proveedor de SAML que creó en el Paso 2 de este procedimiento como principal. 

   Esto establece una relación de confianza entre la organización y AWS.

1. En el proveedor de identidad de la organización (ADFS), defina aserciones que asignen usuarios o grupos de la organización a los roles de IAM. El mapeo de usuarios y grupos a los roles de IAM también se conoce como *regla de reclamación*. Tenga en cuenta que los distintos usuarios y grupos de la organización pueden asignarse a diferentes roles de IAM. 

   Para obtener información sobre cómo configurar la asignación en ADFS, consulte la publicación de blog: [Enabling Federation to AWS Using Windows Active Directory, ADFS, and SAML 2.0](https://aws.amazon.com/blogs/security/enabling-federation-to-aws-using-windows-active-directory-adfs-and-saml-2-0/) (Habilitación de la federación por medio de Windows Active Directory, ADFS y SAML 2.0).

1. Instale y configure el controlador JDBC u ODBC con compatibilidad con SAML 2.0. Para obtener más informació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).

1. Especifique la cadena de conexión de la aplicación al controlador JDBC u ODBC. Para obtener más información acerca de la cadena de conexión que su aplicación debe utilizar, consulte el tema *“Uso del proveedor de credenciales de los servicios de federación de Active Directory (ADFS)”* en la *Guía de instalación y configuración del controlador JDBC*, o un tema similar en la *Guía de instalación y configuración del controlador ODBC* disponible como descarga en formato PDF en los temas [Conexión a Amazon Athena con JDBC](connect-with-jdbc.md) y [Conexión a Amazon Athena con ODBC](connect-with-odbc.md).

   A continuación se ofrece el resumen general de configuración de la cadena de conexión para los controladores:

   1. En la `AwsCredentialsProviderClass configuration`, establezca `com.simba.athena.iamsupport.plugin.AdfsCredentialsProvider` para indicar que desea utilizar la autenticación basada en SAML 2.0 a través del proveedor de identidad ADFS. 

   1. Para `idp_host`, proporcione el nombre de host del servidor de proveedor de identidad de ADFS.

   1. Para `idp_port`, proporcione el número de puerto en el que escucha el proveedor de identidad ADFS para la solicitud de aserción de SAML.

   1. Para `UID` y `PWD`, proporcione las credenciales de usuario de dominio de AD. Cuando se utiliza el controlador en Windows, si no se proporcionan `UID` y `PWD`, el controlador intenta obtener las credenciales de usuario del usuario que ha iniciado sesión en el equipo Windows.

   1. Opcionalmente, configure `ssl_insecure` en `true`. En este caso, el controlador no comprueba la autenticidad del certificado SSL para el servidor de proveedor de identidad ADFS. Es necesario definirlo en `true` si no se ha configurado que el controlador confíe en el certificado SSL del proveedor de identidad ADFS.

   1. Para habilitar el mapeo de un grupo o usuario de dominio de Active Directory en uno o varios roles de IAM (tal como se indicó en el paso 4 de este procedimiento), en el `preferred_role` de la conexión JDBC u ODBC, especifique el rol de IAM (ARN) que suponer para la conexión del controlador. Especificar `preferred_role` es opcional y es útil si el rol no es el primero indicado en la regla de reclamación.

   Como resultado de este procedimiento, se producen las siguientes acciones:

   1. El controlador ODBC o JDBC de llama a la API [AssumeRoleWithSAML](https://docs.aws.amazon.com/STS/latest/APIReference/API_AssumeRoleWithSAML.html) de AWS STS, y le pasa las aserciones, como se muestra en el paso 4 del [Diagrama de la arquitectura](#access-federation-diagram). 

   1. AWS se asegurará de que la solicitud para suponer que rol procede del proveedor de identidad al que se hace referencia en la entidad del proveedor SAML. 

   1. Si la solicitud se realiza correctamente, la operación de la API [AssumeRoleWithSAML](https://docs.aws.amazon.com/STS/latest/APIReference/API_AssumeRoleWithSAML.html) de AWS STS devuelve un conjunto de credenciales de seguridad temporales, que su aplicación cliente utiliza para realizar solicitudes firmadas a Athena. 

      La aplicación ahora tiene información sobre el usuario actual y puede acceder a Athena mediante programación. 

# Registro y supervisión de Athena
<a name="security-logging-monitoring"></a>

Para detectar incidentes, recibir alertas cuando ocurran y responder a ellas, utilice estas opciones con Amazon Athena: 
+ **Monitoreo de Athena con AWS CloudTrail**: [AWS CloudTrail](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/) proporciona un registro de las medidas adoptadas por un usuario, rol o Servicio de AWS en Athena. Captura las llamadas desde la consola de Athena y las llamadas de código a las operaciones de la API de Athena como eventos. Esto le permite determinar la solicitud que se envió a Athena, la dirección IP desde la que se realizó la solicitud, quién realizó la solicitud, cuándo la realizó y detalles adicionales. Para obtener más información, consulte [Registro de las llamadas a la API de Amazon Athena con AWS CloudTrail](monitor-with-cloudtrail.md).

  También puede usar Athena para consultar los archivos de registro de CloudTrail no solo para Athena, sino también para otros Servicios de AWS. Para obtener más información, consulte [Consulta de registros de AWS CloudTrail](cloudtrail-logs.md).
+ **Supervise el uso de Athena con CloudTrail y Amazon Quick**: [Amazon Quick](https://aws.amazon.com/quicksight/) es un servicio de inteligencia empresarial totalmente administrado y basado en la nube que le permite crear paneles interactivos a los que la organización puede acceder desde cualquier dispositivo. Para ver un ejemplo de una solución en la que se utiliza CloudTrail y Amazon Quick a fin de supervisar el uso de Athena, consulte la publicación del blog de macrodatos de AWS [“How Realtor.com monitors Amazon Athena usage with AWS CloudTrail and Quick”](https://aws.amazon.com/blogs/big-data/analyzing-amazon-athena-usage-by-teams-within-a-real-estate-company/).
+ **Utilizar Amazon EventBridge con Athena**: Amazon EventBridge proporciona una transmisión casi en tiempo real de eventos de sistema que describen cambios en los recursos de AWS. EventBridge descubre los cambios operativos a medida que ocurren, responde a ellos y toma medidas correctivas según sea necesario al enviar mensajes para responder al entorno, activar funciones, realizar cambios y registrar información de estado. Los eventos se emiten en la medida de lo posible. Para obtener más información, consulte [Introducción a Amazon EventBridge](https://docs.aws.amazon.com/eventbridge/latest/userguide/eb-get-started.html) en la *Guía del usuario de Amazon EventBridge*.
+ **Utilice grupos de trabajo para separar usuarios, equipos, aplicaciones o cargas de trabajo y establecer límites de consulta y controlar los costos de las consultas**: puede ver métricas relacionadas con las consultas en Amazon CloudWatch, controlar los costos de las consultas mediante la configuración de los límites de la cantidad de datos escaneados, crear umbrales y desencadenar acciones, como alarmas de Amazon SNS, cuando se superan estos umbrales. Para obtener más información, consulte [Uso de grupos de trabajo para controlar el acceso a las consultas y los costos](workgroups-manage-queries-control-costs.md). Utilice permisos de IAM de nivel de recursos para controlar el acceso a un grupo de trabajo específico. Para obtener más información, consulte [Uso de políticas de IAM para el control del acceso al grupo de trabajo](workgroups-iam-policy.md) y [Uso de CloudWatch y EventBridge para la supervisión de consultas y la administración de costos](workgroups-control-limits.md).

**Topics**
+ [

# Registro de las llamadas a la API de Amazon Athena con AWS CloudTrail
](monitor-with-cloudtrail.md)

# Registro de las llamadas a la API de Amazon Athena con AWS CloudTrail
<a name="monitor-with-cloudtrail"></a>

Athena está integrada con AWS CloudTrail, un servicio que proporciona un registro de las acciones del usuario, el rol o un Servicio de AWS en Athena. 

CloudTrail captura todas las llamadas a la API de Athena como eventos. Las llamadas capturadas incluyen las llamadas desde la consola de Athena y las llamadas desde el código a las operaciones de la API de Athena. Si crea un registro de seguimiento, puede habilitar la entrega continua de eventos de CloudTrail a un bucket de Amazon S3, incluidos los eventos para Athena. Si no configura un registro de seguimiento, puede ver los eventos más recientes en la consola de CloudTrail en el **Historial de eventos**. 

Mediante la información recopilada por CloudTrail, puede determinar la solicitud que se realizó a Athena, la dirección IP desde la que se realizó la solicitud, quién la realizó, cuándo la realizó y los detalles adicionales. 

Para obtener más información sobre CloudTrail, consulte la [Guía del usuario de AWS CloudTrail](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/).

Puede usar Athena para consultar archivos de registro de CloudTrail desde Athena en sí y desde otros Servicios de AWS. Para obtener más información, consulte [Consulta de registros de AWS CloudTrail](cloudtrail-logs.md), [El SerDe JSON de Hive](hive-json-serde.md) y la publicación del Blog de macrodatos de AWS [Utilizar instrucciones CTAS con Amazon Athena para reducir los costos y mejorar el rendimiento](https://aws.amazon.com/blogs/big-data/using-ctas-statements-with-amazon-athena-to-reduce-cost-and-improve-performance/), que utiliza CloudTrail para proporcionar información sobre el uso de Athena.

## Acerca de la información de Athena en CloudTrail
<a name="athena-info-in-cloudtrail"></a>

CloudTrail se habilita en su cuenta de Amazon Web Services cuando crea la cuenta. Cuando se produce una actividad en Athena, esa actividad se registra en un evento de CloudTrail junto con otros eventos de servicio de AWS en el **Historial de eventos**. Puede ver, buscar y descargar los últimos eventos de la cuenta de Amazon Web Services. Para obtener más información, consulte [Viewing events with CloudTrail event history](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/view-cloudtrail-events.html). 

Para mantener un registro continuo de eventos en la cuenta de Amazon Web Services, incluidos los eventos de Athena, cree un registro de seguimiento. Un *registro de seguimiento* permite a CloudTrail enviar archivos de registro a un bucket de Amazon S3. De forma predeterminada, cuando se crea un registro de seguimiento en la consola, el registro de seguimiento se aplica a todas las Regiones de AWS. El registro de seguimiento registra los eventos de todas las regiones de la partición de AWS y envía los archivos de registro al bucket de Amazon S3 especificado. También es posible configurar otros Servicios de AWS para analizar en profundidad y actuar en función de los datos de eventos recopilados en los registros de CloudTrail. Para más información, consulte los siguientes temas: 
+ [Introducción a la creación de registros de seguimiento](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/cloudtrail-create-and-update-a-trail.html)
+ [Servicios e integraciones compatibles con CloudTrail](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/cloudtrail-aws-service-specific-topics.html#cloudtrail-aws-service-specific-topics-integrations)
+ [Configuración de notificaciones de Amazon SNS para CloudTrail](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/getting_notifications_top_level.html)
+ [Recibir archivos de registro de CloudTrail de varias regiones](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/receive-cloudtrail-log-files-from-multiple-regions.html) y [Recibir archivos de registro de CloudTrail de varias cuentas](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/cloudtrail-receive-logs-from-multiple-accounts.html)

CloudTrail registra todas las acciones de Athena, que están documentadas en la [Referencia de la API de Amazon Athena](https://docs.aws.amazon.com/athena/latest/APIReference/). Por ejemplo, las llamadas a las acciones [StartQueryExecution](https://docs.aws.amazon.com/athena/latest/APIReference/API_StartQueryExecution.html) y [GetQueryResults](https://docs.aws.amazon.com/athena/latest/APIReference/API_StartQueryExecution.html) generan entradas en los archivos de registro de CloudTrail.

Cada entrada de registro o evento contiene información sobre quién generó la solicitud. La información de identidad del usuario lo ayuda a determinar lo siguiente: 
+ Si la solicitud se realizó con credenciales de usuario de AWS Identity and Access Management (IAM) o credenciales de usuario raíz.
+ Si la solicitud se realizó con credenciales de seguridad temporales de un rol o fue un usuario federado.
+ Si la solicitud la realizó otro Servicio de AWS.

Para obtener más información, consulte [Elemento userIdentity de CloudTrail](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/cloudtrail-event-reference-user-identity.html).

## Comprensión de las entradas de archivos de registro de Athena
<a name="understanding-ate-log-file-entries"></a>

Un registro de seguimiento es una configuración que permite la entrega de eventos como archivos de registros en un bucket de Amazon S3 que especifique. Los archivos de registro de CloudTrail pueden contener una o varias entradas de registro. Un evento representa una solicitud específica realizada desde un origen cualquiera y contiene información sobre la acción solicitada, la fecha y la hora de la acción, los parámetros de la solicitud, etc. Los archivos de registro de CloudTrail no rastrean el orden en la pila de las llamadas públicas a la API, por lo que estas no aparecen en ningún orden específico. 

**nota**  
Para evitar la divulgación involuntaria de información confidencial, la entrada `queryString` en los registros `StartQueryExecution` y `CreateNamedQuery` tiene un valor de `***OMITTED***`. Este comportamiento es así por diseño. Para acceder a la cadena de consulta real, puede utilizar la API [GetQueryExecution](https://docs.aws.amazon.com/athena/latest/APIReference/API_GetQueryExecution.html) de Athena y pasar el valor de `responseElements.queryExecutionId` del registro de CloudTrail. 

Los siguientes son ejemplos de entradas de registro de CloudTrail para:
+  [StartQueryExecution (correcto)](#startqueryexecution-successful) 
+  [StartQueryExecution (error)](#startqueryexecution-failed) 
+  [CreateNamedQuery](#createnamedquery) 

### StartQueryExecution (correcto)
<a name="startqueryexecution-successful"></a>

```
{
 "eventVersion":"1.05",
 "userIdentity":{
    "type":"IAMUser",
    "principalId":"EXAMPLE_PRINCIPAL_ID",
    "arn":"arn:aws:iam::123456789012:user/johndoe",
    "accountId":"123456789012",
    "accessKeyId":"EXAMPLE_KEY_ID",
    "userName":"johndoe"
 },
 "eventTime":"2017-05-04T00:23:55Z",
 "eventSource":"athena.amazonaws.com",
 "eventName":"StartQueryExecution",
 "awsRegion":"us-east-1",
 "sourceIPAddress":"77.88.999.69",
 "userAgent":"aws-internal/3",
 "requestParameters":{
    "clientRequestToken":"16bc6e70-f972-4260-b18a-db1b623cb35c",
    "resultConfiguration":{
       "outputLocation":"s3://amzn-s3-demo-bucket/test/"
    },
    "queryString":"***OMITTED***"
 },
 "responseElements":{
    "queryExecutionId":"b621c254-74e0-48e3-9630-78ed857782f9"
 },
 "requestID":"f5039b01-305f-11e7-b146-c3fc56a7dc7a",
 "eventID":"c97cf8c8-6112-467a-8777-53bb38f83fd5",
 "eventType":"AwsApiCall",
 "recipientAccountId":"123456789012"
}
```

### StartQueryExecution (error)
<a name="startqueryexecution-failed"></a>

```
{
 "eventVersion":"1.05",
 "userIdentity":{
  "type":"IAMUser",
  "principalId":"EXAMPLE_PRINCIPAL_ID",
  "arn":"arn:aws:iam::123456789012:user/johndoe",
  "accountId":"123456789012",
  "accessKeyId":"EXAMPLE_KEY_ID",
  "userName":"johndoe"
  },
 "eventTime":"2017-05-04T00:21:57Z",
 "eventSource":"athena.amazonaws.com",
 "eventName":"StartQueryExecution",
 "awsRegion":"us-east-1",
 "sourceIPAddress":"77.88.999.69",
 "userAgent":"aws-internal/3",
 "errorCode":"InvalidRequestException",
 "errorMessage":"Invalid result configuration. Should specify either output location or result configuration",
 "requestParameters":{
  "clientRequestToken":"ca0e965f-d6d8-4277-8257-814a57f57446",
  "queryString":"***OMITTED***"
  },
 "responseElements":null,
 "requestID":"aefbc057-305f-11e7-9f39-bbc56d5d161e",
 "eventID":"6e1fc69b-d076-477e-8dec-024ee51488c4",
 "eventType":"AwsApiCall",
 "recipientAccountId":"123456789012"
}
```

### CreateNamedQuery
<a name="createnamedquery"></a>

```
{
  "eventVersion":"1.05",
  "userIdentity":{
     "type":"IAMUser",
     "principalId":"EXAMPLE_PRINCIPAL_ID",
     "arn":"arn:aws:iam::123456789012:user/johndoe",
     "accountId":"123456789012",
     "accessKeyId":"EXAMPLE_KEY_ID",
     "userName":"johndoe"
  },
  "eventTime":"2017-05-16T22:00:58Z",
  "eventSource":"athena.amazonaws.com",
  "eventName":"CreateNamedQuery",
  "awsRegion":"us-west-2",
  "sourceIPAddress":"77.88.999.69",
  "userAgent":"aws-cli/1.11.85 Python/2.7.10 Darwin/16.6.0 botocore/1.5.48",
  "requestParameters":{
     "name":"johndoetest",
     "queryString":"***OMITTED***",
     "database":"default",
     "clientRequestToken":"fc1ad880-69ee-4df0-bb0f-1770d9a539b1"
     },
  "responseElements":{
     "namedQueryId":"cdd0fe29-4787-4263-9188-a9c8db29f2d6"
     },
  "requestID":"2487dd96-3a83-11e7-8f67-c9de5ac76512",
  "eventID":"15e3d3b5-6c3b-4c7c-bc0b-36a8dd95227b",
  "eventType":"AwsApiCall",
  "recipientAccountId":"123456789012"
},
```

# Validación de conformidad para
<a name="security-compliance-validation"></a>

Auditores externos evalúan la seguridad y la conformidad de como parte de varios programas de conformidad de AWS. Estos incluyen SOC, PCI, FedRAMP y otros.

Para obtener una lista de Servicios de AWS en el ámbito de programas de conformidad específicos, consulte los [Servicios de AWS en el ámbito del programa de conformidad](https://aws.amazon.com/compliance/services-in-scope/). Para obtener información general, consulte [Programas de conformidad de AWS](https://aws.amazon.com/compliance/programs/).

Se puede descargar los informes de auditoría de terceros utilizando AWS Artifact. Para obtener más información, consulte [Descarga de informes en AWS Artifact](https://docs.aws.amazon.com/artifact/latest/ug/downloading-documents.html).

Su responsabilidad de conformidad al utilizar se determina en función de la sensibilidad de los datos, los objetivos de cumplimiento de su empresa y la legislación y los reglamentos correspondientes. AWS proporciona los siguientes recursos para ayudar con la conformidad:
+ [Guías de inicio rápido de seguridad y conformidad](https://aws.amazon.com/quickstart/?awsf.quickstart-homepage-filter=categories%23security-identity-compliance): estas guías de implementación tratan consideraciones sobre arquitectura y ofrecen pasos para implementar los entornos de referencia centrados en la seguridad y la conformidad en AWS.
+ [Arquitectura de las medidas de seguridad y cumplimiento de HIPAA en Amazon Web Services](https://docs.aws.amazon.com/whitepapers/latest/architecting-hipaa-security-and-compliance-on-aws/architecting-hipaa-security-and-compliance-on-aws.html): en este documento técnico, se describe cómo las empresas pueden utilizar AWS para crear aplicaciones que cumplan los requisitos de la HIPAA.
+ [Recursos de conformidad de AWS](https://aws.amazon.com/compliance/resources/): este conjunto de manuales y guías podría aplicarse a su sector y ubicación.
+ [AWS Config](https://docs.aws.amazon.com/config/latest/developerguide/evaluate-config.html): este Servicio de AWS evalúa en qué medida las configuraciones de los recursos cumplen las prácticas internas, las directrices del sector y la normativa.
+ [AWS Security Hub CSPM](https://docs.aws.amazon.com/securityhub/latest/userguide/what-is-securityhub.html): este Servicio de AWS proporciona una vista integral de su estado de seguridad en AWS que lo ayuda a verificar la conformidad con los estándares y las prácticas recomendadas del sector de seguridad.

# Resiliencia en Athena
<a name="security-resilience"></a>

La infraestructura global de AWS se divide en Regiones de AWS y zonas de disponibilidad. Las Regiones de AWS proporcionan varias zonas de disponibilidad físicamente independientes y aisladas que se encuentran conectadas mediante redes con un alto nivel de rendimiento y redundancia, además de baja latencia. Con las zonas de disponibilidad, puede diseñar y utilizar aplicaciones y bases de datos que realizan una conmutación por error automática entre zonas de disponibilidad sin interrupciones. Las zonas de disponibilidad tienen una mayor disponibilidad, tolerancia a errores y escalabilidad que las infraestructuras tradicionales de centros de datos únicos o múltiples. 

Para obtener más información sobre las Regiones de AWS y las zonas de disponibilidad, consulte [Infraestructura global de AWS](https://aws.amazon.com/about-aws/global-infrastructure/).

Además de la infraestructura global de , ofrece varias características que le ayudan con sus necesidades de resiliencia y copia de seguridad de los datos.

Athena no usa servidor, por lo que no hay ninguna infraestructura que configurar ni administrar. Athena tiene alta disponibilidad y ejecuta consultas utilizando recursos informáticos en varias zonas de disponibilidad; además, enruta automáticamente las consultas de forma adecuada si no se puede obtener acceso a una zona de disponibilidad concreta. Athena utiliza Amazon S3 como su almacén de datos subyacente. De este modo, sus datos tienen alta disponibilidad y son duraderos. Amazon S3 proporciona una infraestructura duradera para almacenar datos importantes y se ha diseñado para ofrecer una durabilidad del 99,999999999 % de los objetos. Sus datos se almacenan de forma redundante en varias instalaciones y en diferentes dispositivos dentro de ellas.

# Seguridad de la infraestructura en Athena
<a name="security-infrastructure"></a>

Como se trata de un servicio administrado, está protegido por la seguridad de red global de AWS. Para obtener información sobre los servicios de seguridad de AWS y cómo AWSprotege la infraestructura, consulte [Seguridad en la nube de AWS](https://aws.amazon.com/security/). Para diseñar su entorno de AWS con las prácticas recomendadas de seguridad de infraestructura, consulte [Protección de la infraestructura](https://docs.aws.amazon.com/wellarchitected/latest/security-pillar/infrastructure-protection.html) en *Portal de seguridad de AWS Well‐Architected Framework*.

Puede utilizar llamadas a la API publicadas en AWS para acceder a través de la red. Los clientes deben admitir lo siguiente:
+ Seguridad de la capa de transporte (TLS). Exigimos TLS 1.2 y recomendamos TLS 1.3.
+ Conjuntos de cifrado con confidencialidad directa total (PFS) como DHE (Ephemeral Diffie-Hellman) o ECDHE (Elliptic Curve Ephemeral Diffie-Hellman). La mayoría de los sistemas modernos como Java 7 y posteriores son compatibles con estos modos.

Utilice políticas de política de IAM para restringir el acceso a las operaciones de Athena. Siempre que utilice políticas de IAM, asegúrese de seguir las prácticas recomendadas de IAM. Para obtener más información, consulte la sección [Prácticas recomendadas de seguridad de IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/best-practices.html) en la *Guía del usuario de IAM*.

Las [políticas administradas](security-iam-awsmanpol.md) por Athena son fáciles de utilizar y se actualizan automáticamente con las acciones necesarias a medida que el servicio evoluciona. Las políticas administradas por el cliente e insertadas le permiten ajustar las políticas especificando más acciones de Athena detalladas en la política. Conceda un acceso adecuado a la ubicación de Amazon S3 de los datos. Para obtener información detallada y casos sobre cómo otorgar acceso a Simple Storage Service (Amazon S3), consulte [Explicaciones de ejemplo: Administración de acceso](https://docs.aws.amazon.com/AmazonS3/latest/userguide/example-walkthroughs-managing-access.html) en la *Guía para desarrolladores de Amazon Simple Storage Service*. Para obtener más información y un ejemplo de las acciones de Amazon S3 que debe permitir, consulte el ejemplo de política de bucket en [Acceso entre cuentas](cross-account-permissions.md). 

**Topics**
+ [

# Conexión a Amazon Athena mediante un punto de conexión de VPC de tipo interfaz
](interface-vpc-endpoint.md)

# Conexión a Amazon Athena mediante un punto de conexión de VPC de tipo interfaz
<a name="interface-vpc-endpoint"></a>

Puede mejorar la posición de seguridad de su VPC mediante el uso de un [punto de conexión de VPC de interfaz (AWS PrivateLink)](https://docs.aws.amazon.com/vpc/latest/userguide/vpce-interface.html) y un [punto de conexión de VPC de AWS Glue](https://docs.aws.amazon.com/glue/latest/dg/vpc-endpoint.html) en su nube privada virtual (VPC). Un punto de conexión de VPC de interfaz mejora la seguridad, ya que le permite controlar a qué destinos se puede llegar desde dentro de su VPC. Cada punto de conexión de VPC está representado por una o varias [Interfaces de red elásticas](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/using-eni.html) (ENI) con direcciones IP privadas en las subredes de la VPC.

El punto de conexión de VPC de tipo interfaz conecta directamente la VPC con Athena sin necesidad de puerta de enlace de Internet, dispositivos NAT, conexiones de VPN ni conexiones de Direct Connect. Las instancias de la VPC no necesitan direcciones IP públicas para comunicarse con la API de Athena.

Para utilizar Athena a través de la VPC, debe conectarse desde una instancia que está dentro de la VPC o conectar su red privada a la VPC a través de una red privada virtual (VPN) de Amazon o Direct Connect. Para obtener más información sobre Amazon VPN, consulte [Conexiones VPN](https://docs.aws.amazon.com/vpc/latest/userguide/vpn-connections.html) en la *Guía del usuario de Amazon Virtual Private Cloud*. Para obtener información sobre AWS Direct Connect, consulte [Creación de una conexión](https://docs.aws.amazon.com/directconnect/latest/UserGuide/create-connection.html) en la *Guía del usuario de Direct Connect*.

Athena admite puntos de conexión de VPC en todas las Regiones de AWS en las que estén disponibles [Amazon VPC](https://docs.aws.amazon.com/general/latest/gr/rande.html#vpc_region) y [Athena](https://docs.aws.amazon.com/general/latest/gr/rande.html#athena).

Puede crear un punto de conexión de VPC de tipo interfaz para conectarse a Athena mediante Consola de administración de AWS o comandos de AWS Command Line Interface (AWS CLI). Para obtener más información, consulte [Creación de un punto de conexión de interfaz](https://docs.aws.amazon.com/vpc/latest/userguide/vpce-interface.html#create-interface-endpoint).

Después de crear un punto de conexión de VPC de tipo interfaz, si habilita nombres de host de [DNS privados](https://docs.aws.amazon.com/vpc/latest/userguide/vpce-interface.html#vpce-private-dns) para el punto de conexión, el punto de conexión predeterminado de Athena (https://athena.*Región*.amazonaws.com) se resuelve en el punto de conexión de VPC.

Si no habilita nombres de host de DNS privados, Amazon VPC proporciona un nombre de punto de conexión de DNS que puede utilizar en el siguiente formato:

```
VPC_Endpoint_ID.athena.Region.vpce.amazonaws.com
```

Para obtener más información, consulte [Puntos de conexión de VPC de tipo interfaz (AWS PrivateLink)](https://docs.aws.amazon.com/vpc/latest/userguide/vpce-interface.html) en la *Guía del usuario de Amazon VPC*.

Athena admite la realización de llamadas a todas sus [acciones de API](https://docs.aws.amazon.com/athena/latest/APIReference/API_Operations.html) dentro de su VPC.

## Crear una política de punto de conexión de VPC para Athena
<a name="api-private-link-policy"></a>

Puede crear una política para los puntos de conexión de VPC de Amazon para Athena a fin de especificar restricciones como las siguientes:
+ **Entidad principal**: la entidad principal que puede realizar acciones.
+ **Acciones**: las acciones que se pueden realizar.
+ **Recursos**: los recursos en los que se pueden llevar a cabo las acciones.
+ **Solo identidades de confianza**: utilice la condición `aws:PrincipalOrgId` para restringir el acceso solo a las credenciales que forman parte de su organización de AWS. Esto puede ayudar a evitar el acceso no previsto por parte de entidades principales no deseadas. 
+ **Solo recursos de confianza**: utilice la condición `aws:ResourceOrgId` para evitar el acceso a recursos no deseados. 
+ **Solo identidades y recursos de confianza**: cree una política combinada para un punto de conexión de VPC que ayude a evitar el acceso a entidades principales y recursos no deseados. 

Para obtener más información, consulte [Control del acceso a los servicios con puntos de conexión de VPC](https://docs.aws.amazon.com/vpc/latest/userguide/vpc-endpoints-access.html) en la *Guía del usuario de Amazon VPC* y el [Apéndice 2: ejemplos de políticas de puntos de conexión de VPC](https://docs.aws.amazon.com/whitepapers/latest/building-a-data-perimeter-on-aws/appendix-2-vpc-endpoint-policy-examples.html) en el documento técnico de AWS *Creación de un perímetro de datos en AWS*.

**Example Política de punto de conexión de VPC**  
En el siguiente ejemplo se permiten las solicitudes por identidades de la organización a los recursos de la organización y se permiten las solicitudes por parte de las entidades principales del servicio de AWS.    
****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "AllowRequestsByOrgsIdentitiesToOrgsResources",
            "Effect": "Allow",
            "Principal": {
                "AWS": "*"
            },
            "Action": "*",
            "Resource": "*",
            "Condition": {
                "StringEquals": {
                    "aws:PrincipalOrgID": "my-org-id",
                    "aws:ResourceOrgID": "my-org-id"
                }
            }
        },
        {
            "Sid": "AllowRequestsByAWSServicePrincipals",
            "Effect": "Allow",
            "Principal": {
                "AWS": "*"
            },
            "Action": "*",
            "Resource": "*",
            "Condition": {
                "Bool": {
                    "aws:PrincipalIsAWSService": "true"
                }
            }
        }
    ]
}
```

Siempre que utilice políticas de IAM, compruebe que sigue las mejores prácticas IAM. Para más información, consulte [Prácticas recomendadas de seguridad en IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/best-practices.html) en la *Guía del usuario de IAM*.

## Acerca de los puntos de conexión de VPC en subredes compartidas
<a name="interface-vpc-endpoint-shared-subnets"></a>

No puede crear, describir, modificar ni eliminar puntos de conexión de VPC en subredes que se compartan con usted. No obstante, puede usar los puntos de conexión de VPC en las subredes que se compartan con usted. Para obtener información sobre el uso compartido de VPC, consulte [Compartir su VPC con otras cuentas](https://docs.aws.amazon.com/vpc/latest/userguide/vpc-sharing.html) en la *Guía del usuario de Amazon VPC*.

# Configuración y análisis de vulnerabilidades en Athena
<a name="security-vulnerability-management"></a>

Athena no tiene servidor, por lo que no hay una infraestructura para configurar o administrar. AWS gestiona las tareas de seguridad básicas como el sistema operativo (SO) invitado y la aplicación de parches en la base de datos, la configuración del firewall y la recuperación de desastres. Estos procedimientos han sido revisados y certificados por los terceros pertinentes. Para obtener más detalles, consulte los siguientes recursos de AWS:
+  [Modelo de responsabilidad compartida](https://aws.amazon.com/compliance/shared-responsibility-model/) 
+ [Prácticas recomendadas para seguridad, identidad y conformidad](https://aws.amazon.com/architecture/security-identity-compliance/)

# Uso de Athena para consultar datos registrados en AWS Lake Formation
<a name="security-athena-lake-formation"></a>

[AWS Lake Formation](https://docs.aws.amazon.com/lake-formation/latest/dg/what-is-lake-formation.html) permite definir y aplicar políticas de acceso a nivel de base de datos, tabla y columna cuando se utilizan consultas de Athena para leer datos almacenados en Amazon S3 o a los que se obtiene acceso a través de orígenes de datos federados. Lake Formation proporciona un nivel de autorización y gobernanza sobre los datos almacenados en Amazon S3 o en catálogos de datos federados. Es posible utilizar una jerarquía de permisos en Lake Formation para conceder o revocar permisos para leer objetos del catálogo de datos como bases de datos, tablas y columnas. Lake Formation simplifica la administración de permisos y le permite implementar un control de acceso detallado (FGAC, fine-grained access control) para los datos.

Se puede utilizar Athena para consultar tanto los datos registrados en Lake Formation como los datos que no están registrados en Lake Formation.

Los permisos de Lake Formation se aplican cuando se utiliza Athena para consultar datos de origen desde ubicaciones de Amazon S3 o catálogos de datos registrados en Lake Formation. Los permisos de Lake Formation también se aplican cuando se crean bases de datos y tablas que apuntan a catálogos de datos o ubicaciones de datos de Amazon S3 registrados.

Los permisos de Lake Formation no se aplican cuando se escriben objetos, ni cuando se consultan datos o metadatos que no están registrados en Lake Formation. En el caso de los datos y metadatos de origen que no están registrados en Lake Formation, las políticas de permisos de IAM y las acciones de AWS Glue determinan el acceso. Las ubicaciones de resultados de consultas de Athena en Amazon S3 no se pueden registrar con Lake Formation y las políticas de permisos de IAM para el acceso de control de Amazon S3. Además, los permisos de Lake Formation no se aplican al historial de consultas de Athena. Puede utilizar grupos de trabajo de Athena para controlar el acceso al historial de consultas.

Para obtener más información acerca de Lake Formation, consulte [Preguntas frecuentes sobre Lake Formation](https://aws.amazon.com/lake-formation/faqs/) en la [Guía para desarrolladores de AWS Lake Formation](https://docs.aws.amazon.com/lake-formation/latest/dg/what-is-lake-formation.html).

## Aplicación de permisos de Lake Formation a bases de datos y tablas existentes
<a name="lf-athena-apply-lf-permissions-to-existing-databases-and-tables"></a>

Si es nuevo en Athena y utiliza Lake Formation para configurar el acceso a los datos de consulta, no necesita configurar políticas de IAM para que los usuarios puedan leer datos y crear metadatos. Puede utilizar Lake Formation para administrar permisos.

El registro de datos con Lake Formation y la actualización de políticas de permisos de IAM no es un requisito. Si los datos no están registrados en Lake Formation, los usuarios de Athena que dispongan de los permisos adecuados podrán seguir consultando los datos que no estén registrados en Lake Formation.

Si ya tiene usuarios de Athena que consultan datos de Amazon S3 que no estén registrados en Lake Formation, puede actualizar los permisos de IAM para Amazon S3 (y para AWS Glue Data Catalog, si procede) con el fin de utilizar los permisos de Lake Formation para administrar el acceso de los usuarios de forma centralizada. Para obtener permiso para leer ubicaciones de datos de Amazon S3, puede actualizar políticas basadas en recursos y políticas basadas en identidad para modificar permisos de Amazon S3. Para obtener acceso a los metadatos, si ha configurado políticas de nivel de recursos para un control de acceso detallado con AWS Glue, puede utilizar permisos de Lake Formation para administrar el acceso en su lugar. 

Para obtener más información, consulte [Configuración del acceso a las bases de datos y tablas en el AWS Glue Data Catalog](fine-grained-access-to-glue-resources.md) y [Actualización de permisos de datos de AWS Glue para el modelo de AWS Lake Formation](https://docs.aws.amazon.com/lake-formation/latest/dg/upgrade-glue-lake-formation.html) en la *Guía para desarrolladores de AWS Lake Formation*.

**Topics**
+ [

## Aplicación de permisos de Lake Formation a bases de datos y tablas existentes
](#lf-athena-apply-lf-permissions-to-existing-databases-and-tables)
+ [Cómo funciona el acceso a los datos](lf-athena-access.md)
+ [Consideraciones y limitaciones](lf-athena-limitations.md)
+ [Acceso entre cuentas](lf-athena-limitations-cross-account.md)
+ [Administración de los permisos de usuario](lf-athena-user-permissions.md)
+ [Uso de Lake Formation y JDBC u ODBC para el acceso federado](security-athena-lake-formation-jdbc.md)

# Cómo accede Athena a los datos registrados en Lake Formation
<a name="lf-athena-access"></a>

El flujo de trabajo de acceso que se describe en esta sección se aplica al ejecutar consultas de Athena en ubicaciones de Amazon S3, catálogos de datos u objetos de metadatos registrados en Lake Formation. Para obtener más información, consulte [Registro de un lago de datos](https://docs.aws.amazon.com/lake-formation/latest/dg/register-data-lake.html) en la *Guía para desarrolladores de AWS Lake Formation*. Además de registrar los datos, el administrador de Lake Formation aplica permisos de Lake Formation que conceden o revocan el acceso a los metadatos en el catálogo de datos, AWS Glue Data Catalog, o la ubicación de datos en Amazon S3. Para obtener más información, consulte [Seguridad y control de acceso a metadatos y datos](https://docs.aws.amazon.com/lake-formation/latest/dg/security-data-access.html#security-data-access-permissions) en la *Guía para desarrolladores de AWS Lake Formation*.

Cada vez que una entidad principal de Athena (usuario, grupo o rol) ejecuta una consulta sobre datos registrados mediante Lake Formation, Lake Formation verifica que la entidad principal tenga los permisos de Lake Formation adecuados para la base de datos, la tabla y la ubicación del origen de datos según corresponda para la consulta. Si la entidad principal tiene acceso, Lake Formation *ofrece* credenciales temporales a Athena y se ejecuta la consulta.

En el siguiente diagrama se ilustra cómo funciona el suministro de credenciales en Athena consulta a consulta para una consulta `SELECT` hipotética en una tabla con una ubicación de Amazon S3 o un catálogo de datos registrado en Lake Formation:

![\[Flujo de trabajo de venta de credenciales para una consulta en una tabla de Athena.\]](http://docs.aws.amazon.com/es_es/athena/latest/ug/images/lake-formation-athena-security.png)


1. Una entidad principal ejecuta una consulta `SELECT` en Athena.

1. Athena analiza la consulta y verifica los permisos de Lake Formation para ver si se ha concedido a la entidad principal acceso a la tabla y a las columnas de la tabla.

1. Si la entidad principal tiene acceso, Athena solicita credenciales de Lake Formation. Si la entidad principal *no* tiene acceso, Athena emite un error de acceso denegado.

1. Lake Formation emite credenciales para que Athena las utilice al leer datos de Amazon S3 o del catálogo, junto con la lista de columnas permitidas.

1. Athena utiliza las credenciales temporales de Lake Formation para consultar los datos de Amazon S3 o del catálogo. Una vez completada la consulta, Athena descarta las credenciales.

# Consideraciones y limitaciones para consultar datos registrados en Lake Formation
<a name="lf-athena-limitations"></a>

Tenga en cuenta lo siguiente al utilizar Athena para consultar los datos registrados en Lake Formation. Para obtener información adicional, consulte [Problemas conocidos de AWS Lake Formation](https://docs.aws.amazon.com/lake-formation/latest/dg/limitations.html) en la *Guía para desarrolladores de AWS Lake Formation*.

**Topics**
+ [Metadatos de columna visibles para usuarios sin permisos de datos para columnas en algunas circunstancias](#lf-athena-limitations-column-metadata)
+ [Uso de permisos de Lake Formation para vistas](#lf-athena-limitations-permissions-to-views)
+ [

## Compatibilidad con DDL de Iceberg
](#lf-athena-limitations-iceberg-ddl-operations)
+ [

## Control de acceso detallado de Lake Formation y grupos de trabajo de Athena
](#lf-athena-limitations-fine-grained-access-control)
+ [Ubicación de los resultados de consulta de Athena en Simple Storage Service (Amazon S3) no registrados en Lake Formation](#lf-athena-limitations-query-results-location)
+ [Uso de grupos de trabajo de Athena para limitar el acceso al historial de consultas](#lf-athena-limitations-use-workgroups-to-limit-access-to-query-history)
+ [Las ubicaciones de Amazon S3 cifradas con CSE-KMS registradas en Lake Formation no se pueden consultar en Athena](#lf-athena-limitations-cse-kms)
+ [Las ubicaciones de datos particionadas registradas en Lake Formation deben estar en subdirectorios de tablas](#lf-athena-limitations-partioned-data-locations)
+ [Las consultas Create Table As Select (CTAS) requieren permisos de escritura de Amazon S3](#lf-athena-limitations-ctas-queries)
+ [

## El permiso DESCRIBE es necesario en la base de datos predeterminada
](#lf-athena-limitations-describe-default)

## Metadatos de columna visibles para usuarios no autorizados en algunas circunstancias con Avro y SerDe personalizado
<a name="lf-athena-limitations-column-metadata"></a>

La autorización de nivel de columna de Lake Formation impide que los usuarios obtengan acceso a los datos de las columnas para las que el usuario no tiene permisos de Lake Formation. Sin embargo, en determinadas situaciones, los usuarios pueden obtener acceso a los metadatos que describen todas las columnas de la tabla, incluidas las columnas para las que no tienen permisos sobre los datos.

Esto ocurre cuando los metadatos de columna se almacenan en propiedades de tabla para tablas que utilizan el formato de almacenamiento Apache Avro o un serializador/deserializador (SerDe) personalizado en el que el esquema de tabla se define en las propiedades de la tabla junto con la definición del SerDe. Cuando utilice Athena con Lake Formation, le recomendamos que revise el contenido de las propiedades de la tabla que registra con Lake Formation y, siempre que sea posible, limite la información almacenada en las propiedades de la tabla para evitar que los metadatos confidenciales sean visibles para los usuarios.

## Descripción de Lake Formation y sus vistas
<a name="lf-athena-limitations-permissions-to-views"></a>

Para los datos registrados en Lake Formation, un usuario de Athena puede crear una `VIEW` solo si tiene permisos de Lake Formation para las tablas, las columnas y las ubicaciones de datos de Amazon S3 de origen en los que se basa la `VIEW`. Después de crear una `VIEW` en Athena, los permisos de Lake Formation se pueden aplicar a la `VIEW`. Los permisos de nivel de columna no están disponibles para un `VIEW`. Los usuarios que tienen permisos de Lake Formation para una `VIEW` pero no tienen permisos para la tabla y las columnas en las que se basó la vista no pueden utilizar la `VIEW` para consultar datos. Sin embargo, los usuarios con esta combinación de permisos pueden utilizar instrucciones como `DESCRIBE VIEW`, `SHOW CREATE VIEW`, y `SHOW COLUMNS` para ver metadatos de `VIEW`. Por este motivo, asegúrese de alinear los permisos de Lake Formation para cada `VIEW` con los permisos de tabla subyacentes. Los filtros de celda definidos en una tabla no se aplican a una `VIEW` para esa tabla. Los nombres de enlace de recursos deben tener el mismo nombre que el recurso de la cuenta de origen. Existen limitaciones adicionales al trabajar con vistas en una configuración multicuenta. Para obtener más información sobre cómo configurar los permisos para vistas compartidas entre cuentas, consulte [Configuración del acceso al catálogo de datos entre cuentas](lf-athena-limitations-cross-account.md).

## Compatibilidad con DDL de Iceberg
<a name="lf-athena-limitations-iceberg-ddl-operations"></a>

Actualmente, Athena no admite operaciones de DDL en tablas de Iceberg cuya ubicación esté registrada en Lake Formation. Si se intenta ejecutar una consulta DDL en una de estas tablas de Iceberg, se puede producir un error de acceso denegado a Amazon S3 o se puede producir un error por agotamiento del tiempo de espera de la consulta. Las operaciones de DDL en las tablas de Iceberg requieren que el usuario tenga acceso directo de Amazon S3 a la ubicación de la tabla de Iceberg.

## Control de acceso detallado de Lake Formation y grupos de trabajo de Athena
<a name="lf-athena-limitations-fine-grained-access-control"></a>

Los usuarios del mismo grupo de trabajo de Athena pueden ver los datos que el control de acceso detallado de Lake Formation ha configurado para que el grupo de trabajo pueda acceder a ellos. Para obtener más información sobre el uso de un control de acceso detallado en Lake Formation, consulte [Manage fine-grained access control using AWS Lake Formation](https://aws.amazon.com/blogs/big-data/manage-fine-grained-access-control-using-aws-lake-formation/) en el *Blog de macrodatos de AWS*. 

## Ubicación de los resultados de consulta de Athena en Simple Storage Service (Amazon S3) no registrados en Lake Formation
<a name="lf-athena-limitations-query-results-location"></a>

Las ubicaciones de los resultados de consulta en Amazon S3 para Athena no se pueden registrar en Lake Formation. Los permisos de Lake Formation no limitan el acceso a estas ubicaciones. A menos que limite el acceso, los usuarios de Athena pueden acceder a los archivos de resultados de consultas y metadatos cuando no tienen permisos de Lake Formation para los datos. Para evitar esto, le recomendamos que utilice grupos de trabajo para especificar la ubicación de los resultados de consulta y alinear la pertenencia a grupos de trabajo con permisos de Lake Formation. A continuación, puede utilizar políticas de permisos de IAM para limitar el acceso a ubicaciones de resultados de consulta. Para obtener más información sobre los resultados de consultas, consulte [Trabajo con resultados de la consulta y consultas recientes](querying.md).

## Uso de grupos de trabajo de Athena para limitar el acceso al historial de consultas
<a name="lf-athena-limitations-use-workgroups-to-limit-access-to-query-history"></a>

El historial de consultas de Athena expone una lista de consultas guardadas y las cadenas de consultas completas. A menos que utilice grupos de trabajo para separar el acceso a los historiales de consultas, los usuarios de Athena que no tengan autorización para consultar datos en Lake Formation pueden ver cadenas de consulta ejecutadas en esos datos, incluidos nombres de columna, criterios de selección, etc. Le recomendamos que utilice grupos de trabajo para separar los historiales de consultas y alinear la pertenencia al grupo de trabajo de Athena con permisos de Lake Formation para limitar el acceso. Para obtener más información, consulte [Uso de grupos de trabajo para controlar el acceso a las consultas y los costos](workgroups-manage-queries-control-costs.md).

## Consulta de tablas cifradas con CSE\$1KMS registradas en Lake Formation
<a name="lf-athena-limitations-cse-kms"></a>

Las tablas de formato de tabla abierta (OTF), como Apache Iceberg, que tienen las siguientes características no se pueden consultar con Athena:
+ Las tablas se basan en ubicaciones de datos de Amazon S3 registradas en Lake Formation.
+ Los objetos de Amazon S3 se cifran mediante el cifrado del cliente (CSE).
+ El cifrado utiliza claves administradas por el cliente de AWS KMS (`CSE_KMS`).

Para consultar tablas que no son OTF (que están cifradas con una clave `CSE_KMS`), añada el siguiente bloque a la política de la clave de AWS KMS que utiliza para el cifrado CSE. *<KMS\$1KEY\$1ARN>* es el ARN de la clave de AWS KMS que cifra los datos. *<IAM-ROLE-ARN>* es el ARN del rol de IAM que registra la ubicación de Amazon S3 en Lake Formation.

```
{
    "Sid": "Allow use of the key",
    "Effect": "Allow",
    "Principal": {
        "AWS": "*"
    },
    "Action": "kms:Decrypt",
    "Resource": "<KMS-KEY-ARN>",
    "Condition": {
        "ArnLike": {
            "aws:PrincipalArn": "<IAM-ROLE-ARN>"
        }
    }
}
```

## Las ubicaciones de datos particionadas registradas en Lake Formation deben estar en subdirectorios de tablas
<a name="lf-athena-limitations-partioned-data-locations"></a>

Las tablas particionadas registradas en Lake Formation deben tener datos particionados en directorios que sean subdirectorios de la tabla en Amazon S3. Por ejemplo, una tabla con la ubicación `s3://amzn-s3-demo-bucket/mytable` y las particiones `s3://amzn-s3-demo-bucket/mytable/dt=2019-07-11`, `s3://amzn-s3-demo-bucket/mytable/dt=2019-07-12`, etc. se puede registrar en Lake Formation y consultar mediante Athena. Por otra parte, una tabla con la ubicación `s3://amzn-s3-demo-bucket/mytable` y las particiones ubicadas en `s3://amzn-s3-demo-bucket/dt=2019-07-11`, `s3://amzn-s3-demo-bucket/dt=2019-07-12`, etc. no se puede registrar en Lake Formation. Debido a que estas particiones no son subdirectorios de `s3://amzn-s3-demo-bucket/mytable`, tampoco se pueden leer desde Athena.

## Las consultas Create Table As Select (CTAS) requieren permisos de escritura de Amazon S3
<a name="lf-athena-limitations-ctas-queries"></a>

Las consultas Create Table As Statements (CTAS) requieren acceso de escritura a la ubicación de las tablas de Amazon S3. Para ejecutar consultas CTAS sobre datos registrados en Lake Formation, los usuarios de Athena deben tener permisos de IAM para escribir en la tabla ubicaciones de Amazon S3, además de los permisos de Lake Formation correspondientes para leer las ubicaciones de datos. Para obtener más información, consulte [Creación de una tabla a partir de los resultados de una consulta (CTAS)](ctas.md).

## El permiso DESCRIBE es necesario en la base de datos predeterminada
<a name="lf-athena-limitations-describe-default"></a>

Se requiere el permiso `DESCRIBE` de Lake Formation en la base de datos `default` para que Lake Formation pueda verlo. El siguiente ejemplo de comando AWS CLI otorga el permiso `DESCRIBE` en la base de datos `default` al usuario `datalake_user1` en la cuenta `111122223333` de AWS.

```
aws lakeformation grant-permissions --principal DataLakePrincipalIdentifier=arn:aws:iam::111122223333:user/datalake_user1 --permissions "DESCRIBE" --resource '{ "Database": {"Name":"default"}}
```

Para obtener más información, consulte [DESCRIBE](https://docs.aws.amazon.com/lake-formation/latest/dg/lf-permissions-reference.html#perm-describe) en la *Guía para desarrolladores de AWS Lake Formation*.

# Configuración del acceso al catálogo de datos entre cuentas
<a name="lf-athena-limitations-cross-account"></a>

Para acceder a un catálogo de datos en otra cuenta, puede utilizar la característica AWS Glue entre cuentas de Athena o configurar el acceso entre cuentas en Lake Formation.

## Opción A: configuración del acceso al catálogo de datos entre cuentas en Athena
<a name="lf-athena-limitations-cross-account-glue"></a>

Puede utilizar la característica de catálogo de AWS Glue entre cuentas de Athena para registrar el catálogo en su cuenta. Esta capacidad está disponible únicamente en la versión 2 o una versión posterior del motor Athena y está limitada al uso de la misma región entre cuentas. Para obtener más información, consulte [Registrar un catálogo de datos desde otra cuenta](data-sources-glue-cross-account.md).

Si el catálogo de datos que se va a compartir tiene una política de recursos configurada en AWS Glue, esta se debe actualizar para permitir el acceso a AWS Resource Access Manager y otorgar permisos a la cuenta B para usar el catálogo de datos de la cuenta A.

Para obtener más información, consulte [Configuración del acceso entre cuentas a los catálogos de datos de AWS Glue](security-iam-cross-account-glue-catalog-access.md).

## Opción B: configuración del acceso entre cuentas en Lake Formation
<a name="lf-athena-limitations-cross-account-glue-lf-xacct"></a>

AWS Lake Formation le permite utilizar una sola cuenta para administrar un catálogo de datos central. Puede utilizar esta característica para implementar el [acceso entre cuentas](https://docs.aws.amazon.com/lake-formation/latest/dg/access-control-cross-account.html) Acceder los metadatos del catálogo de datos y los datos subyacentes. Por ejemplo, una cuenta de propietario puede conceder permiso `SELECT` en una tabla a otra cuenta (destinatario). 

Para que aparezca una base de datos compartida o una tabla en el Editor de consultas de Athena, debe [crear un enlace de recursos](https://docs.aws.amazon.com/lake-formation/latest/dg/resource-links-about.html) en Lake Formation a la base de datos o tabla compartida. Cuando la cuenta de destinatario en Lake Formation consulta la tabla del propietario, [CloudTrail](https://docs.aws.amazon.com/lake-formation/latest/dg/cross-account-logging.html) agrega el evento de acceso a datos a los registros de la cuenta de destinatario y de la cuenta de propietario.

Para las vistas compartidas, tenga en cuenta los siguientes puntos:
+ Las consultas se ejecutan en enlaces de recursos de destino, no en la vista o la tabla de origen y luego, la salida se comparte en la cuenta de destino.
+ No es suficiente compartir solo la vista. Todas las tablas que participan en la creación de la vista deben formar parte del recurso compartido entre cuentas.
+ El nombre del enlace de recursos creado en los recursos compartidos debe coincidir con el nombre del recurso en la cuenta de propietario. Si el nombre no coincide, aparece un mensaje de error como el siguiente Failed analyzing stored view 'awsdatacatalog.*my-lf-resource-link*.*my-lf-view*': line 3:3: Schema *schema\$1name* does not exist (Se produjo un error al momento de analizar la vista almacenada 'awsdatacatalog.my-lf-resource-link.my-lf-view': line 3:3: El esquema schema\$1name no existe).

Para obtener más información sobre el acceso entre cuentas en Lake Formation, consulte los siguientes recursos en la *Guía para desarrolladores de AWS Lake Formation*:

 [Acceso entre cuentas](https://docs.aws.amazon.com/lake-formation/latest/dg/access-control-cross-account.html) 

 [Cómo funcionan los enlaces de recursos en Lake Formation](https://docs.aws.amazon.com/lake-formation/latest/dg/resource-links-about.html) 

 [Registro entre cuentas de CloudTrail](https://docs.aws.amazon.com/lake-formation/latest/dg/cross-account-logging.html) 

# Administración de permisos de usuario de Lake Formation y Athena
<a name="lf-athena-user-permissions"></a>

Lake Formation suministra credenciales para consultar almacenes de datos de Amazon S3 o catálogos federados registrados en Lake Formation. Si anteriormente utilizaba políticas de IAM para permitir o denegar permisos de lectura de catálogos o ubicaciones de datos en Amazon S3, puede utilizar permisos de Lake Formation en su lugar. Sin embargo, otros permisos de IAM siguen siendo necesarios.

Siempre que utilice políticas de IAM, asegúrese de seguir las prácticas recomendadas de IAM. Para obtener más información, consulte la sección [Prácticas recomendadas de seguridad de IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/best-practices.html) en la *Guía del usuario de IAM*.

En las siguientes secciones, se resumen los permisos necesarios para utilizar Athena para consultar los datos registrados en Lake Formation. Para obtener más información, consulte [Seguridad en AWS Lake Formation](https://docs.aws.amazon.com/lake-formation/latest/dg/security.html) en la *Guía para desarrolladores de AWS Lake Formation*.

**Topics**
+ [

## Permisos basados en identidad para Lake Formation y Athena
](#lf-athena-user-permissions-identity-based)
+ [

## Permisos de Amazon S3 para las ubicaciones de los resultados de las consultas de Athena
](#lf-athena-user-permissions-query-results-locations)
+ [

## Suscripciones a grupos de trabajo de Athena para el historial de consultas
](#lf-athena-user-permissions-workgroup-memberships-query-history)
+ [

## Permisos de Lake Formation para datos
](#lf-athena-user-permissions-data)
+ [

## Permisos de IAM para escribir en ubicaciones de Amazon S3
](#lf-athena-user-permissions-s3-write)
+ [

## Permisos para datos cifrados, metadatos y resultados de consultas de Athena
](#lf-athena-user-permissions-encrypted)
+ [

## Permisos basados en recursos para buckets de Amazon S3 en cuentas externas (opcional)
](#lf-athena-user-permissions-s3-cross-account)

## Permisos basados en identidad para Lake Formation y Athena
<a name="lf-athena-user-permissions-identity-based"></a>

Cualquier persona que utilice Athena para consultar datos registrados en Lake Formation debe tener una política de permisos de IAM que permita la acción `lakeformation:GetDataAccess`. La [AWSPolítica administrada de : AmazonAthenaFullAccess](security-iam-awsmanpol.md#amazonathenafullaccess-managed-policy) permite esta acción. Si utiliza políticas insertadas, asegúrese de actualizar las políticas de permisos para permitir esta acción.

En Lake Formation, un *administrador de lago de datos* tiene permisos para crear objetos de metadatos, como bases de datos y tablas, conceder permisos de Lake Formation a otros usuarios y registrar nuevas ubicaciones de Amazon S3 o catálogos de datos. Para registrar nuevas ubicaciones, se necesitan permisos para el rol vinculado al servicio para Lake Formation. Para obtener más información, consulte [Creación de un administrador de lago de datos](https://docs.aws.amazon.com/lake-formation/latest/dg/getting-started-setup.html#create-data-lake-admin) y [Permisos de roles vinculados al servicio para Lake Formation](https://docs.aws.amazon.com/lake-formation/latest/dg/service-linked-roles.html#service-linked-role-permissions) en la *Guía para desarrolladores de AWS Lake Formation*.

Un usuario de Lake Formation puede utilizar Athena para consultar bases de datos, tablas, columnas de tablas y catálogos o almacenes de datos de Amazon S3 subyacentes en función de los permisos de Lake Formation concedidos por los administradores del lago de datos. Los usuarios no pueden crear bases de datos ni tablas, ni registrar nuevas ubicaciones de Amazon S3 con Lake Formation. Para obtener más información, consulte [Creación de un usuario de lago de datos](https://docs.aws.amazon.com/lake-formation/latest/dg/cloudtrail-tut-create-lf-user.html) en la *Guía para desarrolladores de AWS Lake Formation*.

En Athena, las políticas de permisos basadas en identidades, incluidas las de los grupos de trabajo de Athena, siguen controlando el acceso a las acciones de Athena para los usuarios de cuentas de Amazon Web Services. Además, el acceso federado podría proporcionarse a través de la autenticación basada en SAML disponible con controladores de Athena. Para obtener más información, consulte [Uso de grupos de trabajo para controlar el acceso a las consultas y los costos](workgroups-manage-queries-control-costs.md), [Uso de políticas de IAM para el control del acceso al grupo de trabajo](workgroups-iam-policy.md) y [Habilitación del acceso federado a la API de Athena](access-federation-saml.md).

Para obtener más información, consulte [Concesión de permisos de Lake Formation](https://docs.aws.amazon.com/lake-formation/latest/dg/lake-formation-permissions.html) en la *Guía para desarrolladores de AWS Lake Formation*.

## Permisos de Amazon S3 para las ubicaciones de los resultados de las consultas de Athena
<a name="lf-athena-user-permissions-query-results-locations"></a>

Las ubicaciones de los resultados de consulta en Amazon S3 para Athena no se pueden registrar en Lake Formation. Los permisos de Lake Formation no limitan el acceso a estas ubicaciones. A menos que limite el acceso, los usuarios de Athena pueden acceder a los archivos de resultados de consultas y metadatos cuando no tienen permisos de Lake Formation para los datos. Para evitar esto, le recomendamos que utilice grupos de trabajo para especificar la ubicación de los resultados de consulta y alinear la pertenencia a grupos de trabajo con permisos de Lake Formation. A continuación, puede utilizar políticas de permisos de IAM para limitar el acceso a ubicaciones de resultados de consulta. Para obtener más información sobre los resultados de consultas, consulte [Trabajo con resultados de la consulta y consultas recientes](querying.md).

## Suscripciones a grupos de trabajo de Athena para el historial de consultas
<a name="lf-athena-user-permissions-workgroup-memberships-query-history"></a>

El historial de consultas de Athena expone una lista de consultas guardadas y las cadenas de consultas completas. A menos que utilice grupos de trabajo para separar el acceso a los historiales de consultas, los usuarios de Athena que no tengan autorización para consultar datos en Lake Formation pueden ver cadenas de consulta ejecutadas en esos datos, incluidos nombres de columna, criterios de selección, etc. Le recomendamos que utilice grupos de trabajo para separar los historiales de consultas y alinear la pertenencia al grupo de trabajo de Athena con permisos de Lake Formation para limitar el acceso. Para obtener más información, consulte [Uso de grupos de trabajo para controlar el acceso a las consultas y los costos](workgroups-manage-queries-control-costs.md).

## Permisos de Lake Formation para datos
<a name="lf-athena-user-permissions-data"></a>

Además del permiso de referencia para utilizar Lake Formation, los usuarios de Athena deben tener permisos de Lake Formation para obtener acceso a los recursos que consultan. Un administrador de Lake Formation concede y administra estos permisos. Para obtener más información, consulte [Seguridad y control de acceso a metadatos y datos](https://docs.aws.amazon.com/lake-formation/latest/dg/security-data-access.html#security-data-access-permissions) en la *Guía para desarrolladores de AWS Lake Formation*.

## Permisos de IAM para escribir en ubicaciones de Amazon S3
<a name="lf-athena-user-permissions-s3-write"></a>

Los permisos de Lake Formation para Amazon S3 no incluyen la capacidad de escribir en Amazon S3. Las consultas Create Table As Statements (CTAS) requieren acceso de escritura a la ubicación de las tablas de Amazon S3. Para ejecutar consultas CTAS sobre datos registrados en Lake Formation, los usuarios de Athena deben tener permisos de IAM para escribir en la tabla ubicaciones de Amazon S3, además de los permisos de Lake Formation correspondientes para leer las ubicaciones de datos. Para obtener más información, consulte [Creación de una tabla a partir de los resultados de una consulta (CTAS)](ctas.md).

## Permisos para datos cifrados, metadatos y resultados de consultas de Athena
<a name="lf-athena-user-permissions-encrypted"></a>

Los datos de origen subyacentes en Amazon S3 y los metadatos del catálogo registrado en Lake Formation se pueden cifrar. No hay ningún cambio en la forma en que Athena gestiona el cifrado de los resultados de las consultas cuando se utiliza Athena para consultar los datos registrados en Lake Formation. 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).
+ **Cifrado de datos de origen**: se admite el cifrado de datos de origen de ubicaciones de datos de Amazon S3. Los usuarios de Athena que consultan ubicaciones cifradas de Amazon S3 registradas en Lake Formation necesitan permisos para cifrar y descifrar datos. Para obtener más información acerca de los requisitos, consulte [Opciones de cifrado de Simple Storage Service (Amazon S3) compatibles](encryption.md#encryption-options-S3-and-Athena) y [Permisos para datos cifrados en Amazon S3](encryption.md#permissions-for-encrypting-and-decrypting-data). 
+ **Cifrado de metadatos**: se admite el cifrado de metadatos en AWS Glue Data Catalog. Para las entidades principales que utilizan Athena, las políticas basadas en identidad deben permitir las acciones `"kms:GenerateDataKey"`, `"kms:Decrypt"` y `"kms:Encrypt"` para la clave utilizada para cifrar los metadatos. Para obtener más información, consulte [Cifrado de su catálogo de datos](https://docs.aws.amazon.com/glue/latest/dg/encrypt-glue-data-catalog.html) en la *Guía para desarrolladores de AWS Glue* y en el [Configuración del acceso desde Athena a los metadatos cifrados en el AWS Glue Data Catalog](access-encrypted-data-glue-data-catalog.md).

## Permisos basados en recursos para buckets de Amazon S3 en cuentas externas (opcional)
<a name="lf-athena-user-permissions-s3-cross-account"></a>

Para consultar una ubicación de datos de Amazon S3 en una cuenta diferente, debe permitir el acceso a la ubicación una política de IAM basada en recursos (política de bucket). Para obtener más información, consulte [Configuración del acceso entre cuentas en Athena a los buckets de Amazon S3](cross-account-permissions.md).

Para obtener información sobre cómo acceder a los catálogos de otra cuenta, consulte [Opción A: configuración del acceso al catálogo de datos entre cuentas en Athena](lf-athena-limitations-cross-account.md#lf-athena-limitations-cross-account-glue).

# Uso de Lake Formation y controladores JDBC u ODBC para el acceso federado a Athena
<a name="security-athena-lake-formation-jdbc"></a>

Los controladores JDBC y ODBC de Athena admiten la federación basada en SAML 2.0 con Athena mediante proveedores de identidad Okta y Microsoft Active Directory Federation Services (AD FS). Al integrar Amazon Athena con AWS Lake Formation, habilita la autenticación basada en SAML en Athena con credenciales corporativas. Con Lake Formation y AWS Identity and Access Management (IAM), puede mantener un control de acceso detallado a nivel de columna sobre los datos disponibles para el usuario SAML. Con los controladores JDBC y ODBC de Athena, el acceso federado está disponible para acceso mediante herramientas o programación.

Para utilizar Athena a fin de acceder a una fuente de datos controlada por Lake Formation, debe habilitar la federación basada en SAML 2.0 mediante la configuración de su proveedor de identidades (IdP) y AWS Identity and Access Management (IAM). Para ver los pasos detallados, consulte [Tutorial: Configuración del acceso federado para usuarios de Okta a Athena utilizando Lake Formation y JDBC](security-athena-lake-formation-jdbc-okta-tutorial.md).

## Requisitos previos
<a name="security-athena-lake-formation-jdbc-prerequisites"></a>

Para utilizar Amazon Athena and Lake Formation para acceder federado, debe cumplir los siguientes requisitos:
+ Administrar las identidades corporativas con un proveedor de identidad existente basado en SAML, como Okta o Active Directory Federation Services (AD FS).
+ Utilizar el AWS Glue Data Catalog como almacén de metadatos.
+ Definir y administrar los permisos en Lake Formation para acceder a las bases de datos, tablas y columnas en AWS Glue Data Catalog. Para obtener más información, consulte la [Guía para desarrolladores de AWS Lake Formation](https://docs.aws.amazon.com/lake-formation/latest/dg/).
+ Utilice la versión 2.0.14 o posterior del [controlador JDBC de Athena](https://docs.aws.amazon.com/athena/latest/ug/connect-with-jdbc.html) o la versión 1.1.3 o posterior del [controlador ODBC de Athena](connect-with-odbc.md).

## Consideraciones y limitaciones
<a name="security-athena-lake-formation-jdbc-considerations-and-limitations"></a>

Cuando utilice el controlador JDBC u ODBC de Athena junto con Lake Formation para configurar el acceso federado a Athena, tenga en cuenta los siguientes puntos:
+ Actualmente, los controladores JDBC y ODBC de Athena admiten los proveedores de identidad de Okta, Servicios de federación de Active Directory (AD FS) y Azure AD. Si bien el controlador JDBC de Athena tiene una clase SAML genérica que se puede ampliar para utilizar otros proveedores de identidad, la compatibilidad con extensiones personalizadas que permiten que otros proveedores de identidad (IdP) se usen con Athena puede ser limitada.
+ El acceso de federación mediante los controladores JDBC y ODBC no es compatible con la característica de propagación de identidades fiables de IAM Identity Center.
+ Actualmente, no se puede utilizar la consola de Athena para configurar la compatibilidad con el uso de IdP y SAML con Athena. Para configurar esta compatibilidad, utilice el proveedor de identidad de terceros, las consolas de administración de Lake Formation e IAM y el cliente de controlador JDBC u ODBC.
+ Debe comprender la [especificación SAML 2.0](https://www.oasis-open.org/standards#samlv2.0) y cómo funciona con su proveedor de identidad antes de configurar su proveedor de identidad y SAML para su uso con Lake Formation y Athena.
+ Los proveedores SAML y los controladores JDBC y ODBC de Athena son proporcionados por terceros, por lo que la compatibilidad a través de AWS para los problemas relacionados con su uso puede ser limitada.

**Topics**
+ [

## Requisitos previos
](#security-athena-lake-formation-jdbc-prerequisites)
+ [

## Consideraciones y limitaciones
](#security-athena-lake-formation-jdbc-considerations-and-limitations)
+ [

# Tutorial: Configuración del acceso federado para usuarios de Okta a Athena utilizando Lake Formation y JDBC
](security-athena-lake-formation-jdbc-okta-tutorial.md)

# Tutorial: Configuración del acceso federado para usuarios de Okta a Athena utilizando Lake Formation y JDBC
<a name="security-athena-lake-formation-jdbc-okta-tutorial"></a>

En este tutorial, se muestra cómo configurar Okta, AWS Lake Formation, permisos de AWS Identity and Access Management y el controlador JDBC de Athena para habilitar el uso federado basado en SAML de Athena. Lake Formation proporciona un control de acceso detallado sobre los datos disponibles en Athena para el usuario basado en SAML. Para establecer esta configuración, el tutorial utiliza la consola de desarrollador de Okta, las consolas de AWS IAM y Lake Formation, y la herramienta SQL Workbench/J.
<a name="security-athena-lake-formation-jdbc-okta-tutorial-prerequisites"></a>
**Requisitos previos**  
Este tutorial presupone que ha realizado las siguientes acciones:
+ Crear una cuenta de Amazon Web Services. Para crear una cuenta, visite la [página de inicio de Amazon Web Services](https://aws.amazon.com/).
+ [Configurar una ubicación de resultados de consulta](query-results-specify-location.md) para Athena en Amazon S3.
+ [Registrar una ubicación de bucket de datos de Amazon S3](https://docs.aws.amazon.com/lake-formation/latest/dg/register-data-lake.html) con Lake Formation.
+ Definir una [base de datos](https://docs.aws.amazon.com/glue/latest/dg/define-database.html) y [tablas](https://docs.aws.amazon.com/glue/latest/dg/tables-described.html) en [AWS Glue Data Catalog](https://docs.aws.amazon.com/glue/latest/dg/what-is-glue.html) que apunten a los datos en Amazon S3.
  + Si todavía no ha definido una tabla, [ejecute un rastreador AWS Glue](https://docs.aws.amazon.com/glue/latest/dg/add-crawler.html) o [utilice Athena para definir una base de datos y una o más tablas](work-with-data.md) para ver los datos a los que desea obtener acceso.
  + En este tutorial, se utiliza una tabla basada en el [conjunto de datos de viajes de taxi de la ciudad de Nueva York](https://registry.opendata.aws/nyc-tlc-trip-records-pds/) disponible en el [Registro de datos abiertos de AWS](https://registry.opendata.aws/). El tutorial utiliza el nombre de la base de datos `tripdb` y el nombre de la tabla `nyctaxi`.

**Topics**
+ [

## Paso 1: Crear una cuenta de Okta
](#security-athena-lake-formation-jdbc-okta-tutorial-step-1-create-an-okta-account)
+ [

## Paso 2: Agregar usuarios y grupos a Okta
](#security-athena-lake-formation-jdbc-okta-tutorial-step-2-set-up-an-okta-application-for-saml-authentication)
+ [

## Paso 3: Configurar una aplicación de Okta para la autenticación SAML
](#security-athena-lake-formation-jdbc-okta-tutorial-step-3-set-up-an-okta-application-for-saml-authentication)
+ [

## Paso 4: Crear un proveedor de identidad SAML de AWS y un rol de IAM para acceso a Lake Formation
](#security-athena-lake-formation-jdbc-okta-tutorial-step-4-create-an-aws-saml-identity-provider-and-lake-formation-access-IAM-role)
+ [

## Paso 5: Agregar el rol de IAM y el proveedor de identidad SAML a la aplicación de Okta
](#security-athena-lake-formation-jdbc-okta-tutorial-step-5-update-the-okta-application-with-the-aws-role-and-saml-identity-provider)
+ [

## Paso 6: Otorgar permisos de usuario y grupo a través de AWS Lake Formation
](#security-athena-lake-formation-jdbc-okta-tutorial-step-6-grant-permissions-through-aws-lake-formation)
+ [

## Paso 7: Verificar el acceso a través del cliente JDBC de Athena
](#security-athena-lake-formation-jdbc-okta-tutorial-step-7-verify-access-through-athena-jdbc-client)
+ [

## Conclusión
](#security-athena-lake-formation-jdbc-okta-tutorial-conclusion)
+ [

## Recursos relacionados
](#security-athena-lake-formation-jdbc-okta-tutorial-related-resources)

## Paso 1: Crear una cuenta de Okta
<a name="security-athena-lake-formation-jdbc-okta-tutorial-step-1-create-an-okta-account"></a>

En este tutorial, se utiliza Okta como proveedor de identidad basado en SAML. Si no dispone de una cuenta de Okta, puede crear una gratuita. Es necesaria una cuenta de Okta para poder crear una aplicación de Okta para la autenticación SAML.

**Para crear una cuenta de Okta**

1. Para utilizar Okta, vaya a la [página de registro para desarrolladores de Okta](https://developer.okta.com/signup/) y cree una cuenta de prueba gratuita de Okta. El servicio de edición de desarrollador es gratuito hasta los límites especificados por Okta en [developer.okta.com/pricing](https://developer.okta.com/pricing).

1. Cuando reciba el correo electrónico de activación, active la cuenta. 

   Se le asignará un nombre de dominio de Okta. Guarde el nombre de dominio como referencia. Más adelante, utilizará el nombre de dominio (*<okta-idp-domain>*) en la cadena JDBC que se conecta a Athena.

## Paso 2: Agregar usuarios y grupos a Okta
<a name="security-athena-lake-formation-jdbc-okta-tutorial-step-2-set-up-an-okta-application-for-saml-authentication"></a>

En este paso, se utiliza la consola de Okta para realizar las siguientes tareas:
+ Crear dos usuarios de Okta.
+ Cree dos grupos de Okta.
+ Agregue un usuario de Okta a cada grupo de Okta.

**Para agregar usuarios a Okta**

1. Después de activar la cuenta de Okta, inicie sesión como usuario administrativo en el dominio Okta asignado.

1. En el panel de navegación izquierdo, elija **Directory** (Directorio) y, a continuación, elija **People** (Personas).

1. Elija **Add Person** (Agregar persona) para agregar un usuario nuevo que accederá a Athena a través del controlador JDBC.  
![\[Elija Add Person (Agregar persona).\]](http://docs.aws.amazon.com/es_es/athena/latest/ug/images/security-athena-lake-formation-jdbc-okta-tutorial-3.png)

1. En el cuadro de diálogo **Add person** (Agregar persona), ingrese la información requerida.
   + En **First name** (Nombre) y **Last name** (Apellido), ingrese valores. En este tutorial se utiliza *athena-okta-user*.
   + Ingrese un **Username** (Nombre de usuario) y **Primary email** (Correo electrónico principal). En este tutorial se utiliza *athena-okta-user@anycompany.com*.
   + En **Password** (Contraseña), elija **Set by admin** (Definida por administrador) y, a continuación, proporcione una contraseña. En este tutorial se desactiva la opción **User must change password on first login** (El usuario debe cambiar la contraseña en el primer inicio de sesión). Los requisitos de seguridad pueden variar.  
![\[Agregar un usuario a la aplicación de Okta.\]](http://docs.aws.amazon.com/es_es/athena/latest/ug/images/security-athena-lake-formation-jdbc-okta-tutorial-4.png)

1. Elija **Save and Add Another** (Guardar y agregar otro).

1. Ingrese la información de otro usuario. En este ejemplo, se agrega el usuario de analista empresarial *athena-ba-user@anycompany.com*.  
![\[Agregar un usuario a la aplicación de Okta.\]](http://docs.aws.amazon.com/es_es/athena/latest/ug/images/security-athena-lake-formation-jdbc-okta-tutorial-4a.png)

1. Seleccione **Save**.

En el siguiente procedimiento, proporcionará acceso a dos grupos de Okta a través del controlador JDBC de Athena al agregar un grupo de “analista empresarial” y un grupo “Desarrollador”.

**Para agregar grupos de Okta**

1. En el panel de navegación de Okta, elija **Directory** (Directorio) y, a continuación, elija **Groups** (Grupos).

1. En la página **Groups** (Grupos), elija **Add Group** (Agregar grupo).  
![\[Seleccione Añadir grupo.\]](http://docs.aws.amazon.com/es_es/athena/latest/ug/images/security-athena-lake-formation-jdbc-okta-tutorial-4c.png)

1. En el cuadro de diálogo **Add Group** (Agregar grupo), ingrese la información requerida.
   + En **Name** (Nombre), ingrese *lf-business-analyst*.
   + En **Group Description** (Descripción de grupo), ingrese *Business Analysts* (Analistas de negocio).  
![\[Agregar un grupo de Okta.\]](http://docs.aws.amazon.com/es_es/athena/latest/ug/images/security-athena-lake-formation-jdbc-okta-tutorial-4d.png)

1. Seleccione **Añadir grupo**.

1. En la página **Groups** (Grupos), vuelva a elegir **Add Group** (Agregar grupo). Esta vez ingresará información para el grupo Desarrollador.

1. Ingrese la información requerida.
   + En **Name** (Nombre), ingrese *lf-developer*.
   + En **Group Description** (Descripción de grupo), ingrese *Developers* (Desarrolladores).

1. Seleccione **Añadir grupo**.

Ahora que tiene dos usuarios y dos grupos, puede agregar un usuario a cada grupo.

**Para agregar usuarios a los grupos**

1. En la página **Groups** (Grupos), elija el grupo **lf-developer** que acaba de crear. Agregará a este grupo uno de los usuarios de Okta que creó como desarrollador.  
![\[Elija lf-developer.\]](http://docs.aws.amazon.com/es_es/athena/latest/ug/images/security-athena-lake-formation-jdbc-okta-tutorial-4f.png)

1. Elija **Manage People** (Administrar personas).  
![\[Elija Manage People (Administrar personas).\]](http://docs.aws.amazon.com/es_es/athena/latest/ug/images/security-athena-lake-formation-jdbc-okta-tutorial-4g.png)

1. En la lista **Not Members** (No miembros), elija **athena-okta-user**.   
![\[Elija un usuario para agregar a la lista de miembros.\]](http://docs.aws.amazon.com/es_es/athena/latest/ug/images/security-athena-lake-formation-jdbc-okta-tutorial-4h.png)

   La entrada para el usuario pasa de la lista de **No miembros** de la izquierda a la lista de **Miembros** de la derecha.   
![\[Usuario de Okta agregado a un grupo de Okta.\]](http://docs.aws.amazon.com/es_es/athena/latest/ug/images/security-athena-lake-formation-jdbc-okta-tutorial-4i.png)

1. Seleccione **Save**.

1. Elija **Back to Group** (Volver a grupo) o **Directory** (Directorio) y, a continuación, elija **Groups** (Grupos).

1. Elija el grupo **lf-business-analyst**.

1. Elija **Manage People** (Administrar personas).

1. Agregue el usuario **athena-ba-user** a la lista de **Miembros** del grupo **lf-business-analyst** y, a continuación, elija **Save** (Guardar). 

1. Elija **Back to Group** (Volver a grupo) o elija **Directory** (Directorio), **Groups** (Grupos).

   La página **Groups** (Grupos) muestra ahora que cada grupo tiene un usuario de Okta.  
![\[Se agregó un usuario a cada grupo de Okta en la consola de Okta.\]](http://docs.aws.amazon.com/es_es/athena/latest/ug/images/security-athena-lake-formation-jdbc-okta-tutorial-4j.png)

## Paso 3: Configurar una aplicación de Okta para la autenticación SAML
<a name="security-athena-lake-formation-jdbc-okta-tutorial-step-3-set-up-an-okta-application-for-saml-authentication"></a>

En este paso, se utiliza la consola de desarrollador de Okta para realizar las siguientes tareas:
+ Agregar una aplicación SAML para su uso con AWS.
+ Asignar la aplicación al usuario de Okta.
+ Asignar la aplicación a un grupo de Okta.
+ Descargue los metadatos resultantes del proveedor de identidad para su uso posterior con AWS.

**Para agregar una aplicación para autenticación SAML**

1. En el panel de navegación de Okta, elija **Applications** (Aplicaciones), **Applications** (Aplicaciones) para que pueda configurar una aplicación de Okta para la autenticación SAML en Athena.

1. Haga clic en **Browse App Catalog** (Explorar el catálogo de aplicaciones).

1. En el cuadro de búsqueda, escriba **Redshift**.

1. Elija **Amazon Web Services Redshift**. La aplicación de Okta de este tutorial utiliza la integración SAML existente para Amazon Redshift.  
![\[Elija Amazon Web Services Redshift.\]](http://docs.aws.amazon.com/es_es/athena/latest/ug/images/security-athena-lake-formation-jdbc-okta-tutorial-7.png)

1. En la página **Amazon Web Services Redshift**, elija **Add** (Agregar) para crear una aplicación basada en SAML para Amazon Redshift.  
![\[Elija Add (Agregar) para crear una aplicación basada en SAML.\]](http://docs.aws.amazon.com/es_es/athena/latest/ug/images/security-athena-lake-formation-jdbc-okta-tutorial-8.png)

1. En **Application label** (Etiqueta de aplicación), ingrese `Athena-LakeFormation-Okta` y, a continuación, elija **Done** (Listo).  
![\[Ingrese un nombre para la aplicación de Okta.\]](http://docs.aws.amazon.com/es_es/athena/latest/ug/images/security-athena-lake-formation-jdbc-okta-tutorial-9.png)

Ahora que ha creado una aplicación de Okta, puede asignarla a los usuarios y grupos que creó.

**Para asignar la aplicación a usuarios y grupos**

1. En la página **Applications** (Aplicaciones), elija la aplicación **Athena-LakeFormation-Okta**.

1. En la pestaña **Assignments** (Asignaciones), elija **Assign** (Asignar), **Assign to People** (Asignar a personas).  
![\[Elija Assign (Asignar), Assign to People (Asignar a personas).\]](http://docs.aws.amazon.com/es_es/athena/latest/ug/images/security-athena-lake-formation-jdbc-okta-tutorial-10.png)

1. En el cuadro de diálogo **Assign Athena-LakeFormation-Okta to People** (Asignar Athena-LakeFormation-Okta a personas), busque el usuario **athena-okta-user** que creó anteriormente.

1. Elija **Assign** (Asignar) para asignar al usuario a la aplicación.  
![\[Elija Asignar.\]](http://docs.aws.amazon.com/es_es/athena/latest/ug/images/security-athena-lake-formation-jdbc-okta-tutorial-11.png)

1. Elija **Save and Go Back** (Guardar y volver).

1. Seleccione **Listo**.

1. En la pestaña **Assignments** (Asignaciones), para la aplicación **Athena-LakeFormation-Okta**, elija **Assign** (Asignar), **Assign to Groups** (Asignar a grupos). 

1. Para **lf-business-analyst**, elija **Assign** (Asignar) para asignar la aplicación **Athena-LakeFormation-Okta** al grupo **lf-business-analyst** y, a continuación, elija **Done** (Listo).  
![\[Asignación de una aplicación de Okta a un grupo de usuarios de Okta.\]](http://docs.aws.amazon.com/es_es/athena/latest/ug/images/security-athena-lake-formation-jdbc-okta-tutorial-12b.png)

   El grupo aparece en la lista de grupos de la aplicación.  
![\[La aplicación de Okta se asigna al grupo Okta.\]](http://docs.aws.amazon.com/es_es/athena/latest/ug/images/security-athena-lake-formation-jdbc-okta-tutorial-12c.png)

Ahora ya puede descargar los metadatos de la aplicación del proveedor de identidad para utilizarlos con AWS.

**Para descargar los metadatos de la aplicación**

1. Elija la pestaña **Sign On** (Inicio de sesión) de la aplicación de Okta y, a continuación, haga clic con el botón derecho en **Identity Provider metadata** (Metadatos del proveedor de identidad).  
![\[Haga clic con el botón derecho en Identity Provider metadata (Metadatos del proveedor de identidad).\]](http://docs.aws.amazon.com/es_es/athena/latest/ug/images/security-athena-lake-formation-jdbc-okta-tutorial-13.png)

1. Elija **Save Link As** (Guardar enlace como) para guardar los metadatos del proveedor de identidad, que están en formato XML, en un archivo. Dele un nombre que reconozca (por ejemplo, `Athena-LakeFormation-idp-metadata.xml`).  
![\[Guardar los metadatos del proveedor de identidad.\]](http://docs.aws.amazon.com/es_es/athena/latest/ug/images/security-athena-lake-formation-jdbc-okta-tutorial-14.png)

## Paso 4: Crear un proveedor de identidad SAML de AWS y un rol de IAM para acceso a Lake Formation
<a name="security-athena-lake-formation-jdbc-okta-tutorial-step-4-create-an-aws-saml-identity-provider-and-lake-formation-access-IAM-role"></a>

En este paso, utiliza la consola de AWS Identity and Access Management (IAM) para realizar las siguientes tareas:
+ Crear un proveedor de identidad para AWS.
+ Crear un rol de IAM para acceso a Lake Formation.
+ Agregar la política administrada AmazonAthenaFullAccess al rol.
+ Agregar una política para Lake Formation y AWS Glue al rol.
+ Agregar una política para los resultados de la consulta de Athena al rol.

**Para crear un proveedor de identidad SAML de AWS**

1. Inicie sesión en la **consola** de la **cuenta de Amazon Web Services** como **administrador de cuenta de Amazon Web Services** y vaya a la consola de **IAM** ([https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/)).

1. En el panel de navegación, elija **Identity providers** (Proveedores de identidad) y, a continuación, haga clic en **Add provider** (Agregar proveedor).

1. En la pantalla **Configurar proveedor**, ingrese la siguiente información:
   + En **Provider type** (Tipo de proveedor), elija **SAML**.
   + En **Provider name** (Nombre de proveedor), ingrese `AthenaLakeFormationOkta`.
   + En **Metadata document** (Documento de metadatos), utilice la opción **Choose file** (Elegir archivo) para cargar el archivo XML de metadatos del proveedor de identidades (IdP) que descargó.

1. Elija **Add Provider** (Agregar proveedor).

A continuación, cree un rol de IAM para obtener acceso a AWS Lake Formation. Agregue dos políticas insertadas al rol. Una política proporciona permisos para acceder a Lake Formation y a las API de AWS Glue. La otra política proporciona acceso a Athena y a la ubicación de los resultados de consulta de Athena en Amazon S3.

**Para crear un rol de IAM para obtener acceso a AWS Lake Formation**

1. En el panel de navegación de la consola de IAM, elija **Roles** y, a continuación, elija **Create role** (Crear rol).

1. En la página **Crear rol**, siga los siguientes pasos:  
![\[Configuración de un rol de IAM para utilizar SAML 2.0.\]](http://docs.aws.amazon.com/es_es/athena/latest/ug/images/security-athena-lake-formation-jdbc-okta-tutorial-20.png)

   1. En **Select type of trusted entity** (Seleccionar tipo de entidad de confianza), elija **SAML 2.0 Federation** (Federación SAML 2.0).

   1. En **SAML provider** (Proveedor SAML), seleccione **AthenaLakeFormationOkta**.

   1. En **SAML provider** (Proveedor SAML), seleccione la opción **Allow programmatic and Consola de administración de AWS access** (Permitir programación y acceso a ).

   1. Elija **Siguiente: permisos**.

1. En la página **Attach Permissions policies** (Adjuntar políticas de permisos), en **Filter policies** (Filtrar políticas), ingrese **Athena**.

1. Seleccione la política administrada **AmazonAthenaFullAccess** y, a continuación, elija **Siguiente: etiquetas** .  
![\[Adjuntar la política administrada AmazonAthenaFullAccess al rol de IAM.\]](http://docs.aws.amazon.com/es_es/athena/latest/ug/images/security-athena-lake-formation-jdbc-okta-tutorial-21.png)

1. En la página **Add tags (Añadir etiquetas)**, elija **Next: Review (Siguiente: Revisión)**.

1. En la página **Review** (Revisar), en **Role name** (Nombre del rol), ingrese un nombre para el rol (por ejemplo, *Athena-LakeFormation-OktaRole*) y luego elija **Create role** (Crear rol).  
![\[Ingrese un nombre para el rol de Rol de IAM de IAM.\]](http://docs.aws.amazon.com/es_es/athena/latest/ug/images/security-athena-lake-formation-jdbc-okta-tutorial-22.png)

A continuación, agregue políticas insertadas que permitan el acceso a Lake Formation, API de AWS Glue y resultados de consultas de Athena en Amazon S3. 

Siempre que utilice políticas de IAM, asegúrese de seguir las prácticas recomendadas de IAM. Para obtener más información, consulte la sección [Prácticas recomendadas de seguridad de IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/best-practices.html) en la *Guía del usuario de IAM*.

**Para agregar una política insertada al rol de Lake Formation y AWS Glue**

1. En la lista de roles de la consola de IAM, elija el recién creado `Athena-LakeFormation-OktaRole`.

1. En la página **Summary** (Resumen) del rol, en la pestaña **Permissions** (Permisos), elija **Add inline política** (Agregar política insertada).

1. En la página **Crear política**, elija **JSON**.

1. Agregue una política insertada como la siguiente que proporcione acceso a Lake Formation y a las API de AWS Glue.

------
#### [ JSON ]

****  

   ```
   {
       "Version":"2012-10-17",		 	 	 
       "Statement": {
           "Effect": "Allow",
           "Action": [
               "lakeformation:GetDataAccess",
               "glue:GetTable",
               "glue:GetTables",
               "glue:GetDatabase",
               "glue:GetDatabases",
               "glue:CreateDatabase",
               "glue:GetUserDefinedFunction",
               "glue:GetUserDefinedFunctions"
           ],
           "Resource": "*"
       }
   }
   ```

------

1. Elija **Revisar política**.

1. En **Name** (Nombre), ingrese un nombre para la política (por ejemplo, **LakeFormationGlueInlinePolicy**).

1. Elija **Crear política**.

**Para agregar una política insertada al rol para la ubicación de los resultados de consulta de Athena**

1. En la página **Summary** (Resumen) del rol `Athena-LakeFormation-OktaRole`, en la pestaña **Permissions** (Permisos), elija **Add inline policy** (Agregar política insertada).

1. En la página **Crear política**, elija **JSON**.

1. Agregue una política insertada como la siguiente que permita el acceso del rol a la ubicación de los resultados de consulta de Athena. Reemplace los marcadores de posición *<athena-query-results-bucket>* en el ejemplo con el nombre del bucket de Amazon S3.

------
#### [ JSON ]

****  

   ```
   {
       "Version":"2012-10-17",		 	 	 
       "Statement": [
           {
               "Sid": "AthenaQueryResultsPermissionsForS3",
               "Effect": "Allow",
               "Action": [
                   "s3:ListBucket",
                   "s3:PutObject",
                   "s3:GetObject"
               ],
               "Resource": [
                   "arn:aws:s3:::<athena-query-results-bucket>",
                   "arn:aws:s3:::<athena-query-results-bucket>/*"
               ]
           }
       ]
   }
   ```

------

1. Elija **Revisar política**.

1. En **Name** (Nombre), ingrese un nombre para la política (por ejemplo, **AthenaQueryResultsInlinePolicy**).

1. Elija **Crear política**.

A continuación, copie el ARN del rol de acceso a Lake Formation y el ARN del proveedor SAML creado. Estos son necesarios al configurar la aplicación SAML de Okta en la siguiente sección del tutorial.

**Para copiar el ARN de rol y el ARN del proveedor de identidad SAML**

1. En la consola de IAM, en la página **Summary** (Resumen) del rol `Athena-LakeFormation-OktaRole`, elija el icono **Copy to clipboard** (Copiar al portapapeles) que aparece junto a **Role ARN** (ARN de rol). El ARN tiene el siguiente formato:

   ```
   arn:aws:iam::<account-id>:role/Athena-LakeFormation-OktaRole
   ```

1. Guarde el ARN completo de forma segura para su referencia posterior.

1. En el panel de navegación de la consola de IAM, elija **Identity providers** (Proveedores de identidad).

1. Elija el proveedor **AthenaLakeFormationOkta**.

1. En la página **Summary** (Resumen), elija el icono **Copy to clipboard** (Copiar al portapapeles) que aparece junto a **Provider ARN** (ARN del proveedor). El ARN debería tener el siguiente aspecto:

   ```
   arn:aws:iam::<account-id>:saml-provider/AthenaLakeFormationOkta
   ```

1. Guarde el ARN completo de forma segura para su referencia posterior.

## Paso 5: Agregar el rol de IAM y el proveedor de identidad SAML a la aplicación de Okta
<a name="security-athena-lake-formation-jdbc-okta-tutorial-step-5-update-the-okta-application-with-the-aws-role-and-saml-identity-provider"></a>

En este paso, vuelve a la consola de desarrollador de Okta para realizar las siguientes tareas:
+ Agregar atributos URL de usuario y grupo de Lake Formation a la aplicación de Okta.
+ Agregar el ARN para el proveedor de identidad y el ARN para el rol de IAM a la aplicación de Okta.
+ Copiar el ID de la aplicación de Okta. El ID de la aplicación de Okta es necesario en el perfil del JDBC que se conecta a Athena.

**Para agregar atributos URL de usuario y grupo de Lake Formation a la aplicación de Okta**

1. Inicie sesión en la consola de desarrollador de Okta.

1. Elija la pestaña **Applications** (Aplicaciones), y, a continuación, elija la aplicación `Athena-LakeFormation-Okta`.

1. Elija la pestaña **Sign On** (Inicio de sesión) para la aplicación y, a continuación, elija **Edit** (Editar).  
![\[Edite la aplicación de Okta.\]](http://docs.aws.amazon.com/es_es/athena/latest/ug/images/security-athena-lake-formation-jdbc-okta-tutorial-24.png)

1. Elija **Attributes (optional)** (Atributos [opcional]) para expandirla.  
![\[Agregar un atributo URL de Lake Formation de usuario a la aplicación de Okta.\]](http://docs.aws.amazon.com/es_es/athena/latest/ug/images/security-athena-lake-formation-jdbc-okta-tutorial-25.png)

1. En **Instrucciones de atributos (opcional)**, agregue el siguiente atributo:
   + En **Nombre**, escriba **https://lakeformation.amazon.com/SAML/Attributes/Username**.
   + En **Value** (Valor), ingrese **user.login**.

1. En **Instrucciones de atributo de grupo (opcional)**, agregue el siguiente atributo:
   + En **Nombre**, escriba **https://lakeformation.amazon.com/SAML/Attributes/Groups**.
   + En **Name format** (Formato de nombre), ingrese **Basic**.
   + En **Filter** (Filtro), elija **Matches regex** (Coincide con la expresión regular) y, a continuación, ingrese **.\$1** en el cuadro de filtro.  
![\[Agregar un atributo URL de Lake Formation de grupo a la aplicación de Okta.\]](http://docs.aws.amazon.com/es_es/athena/latest/ug/images/security-athena-lake-formation-jdbc-okta-tutorial-25a.png)

1. Desplácese hacia abajo hasta la sección **Advanced Sign-On Settings** (Configuración avanzada de inicio de sesión), donde agregará los ARN del proveedor de identidad y el rol de IAM a la aplicación de Okta.

**Para agregar los ARN del proveedor de identidad y el rol de IAM a la aplicación de Okta**

1. En **Idp ARN and Role ARN** (ARN de Idp y ARN de rol), ingrese el ARN de proveedor de identidad de AWS y el ARN de rol como valores separados por comas en el formato *<saml-arn>*, *<role-arn>*. La cadena combinada debe ser similar a la siguiente:

   ```
   arn:aws:iam::<account-id>:saml-provider/AthenaLakeFormationOkta,arn:aws:iam::<account-id>:role/Athena-LakeFormation-OktaRole
   ```  
![\[Ingresar el ARN del proveedor de identidad y el ARN del rol de IAM en la aplicación de Okta.\]](http://docs.aws.amazon.com/es_es/athena/latest/ug/images/security-athena-lake-formation-jdbc-okta-tutorial-26.png)

1. Seleccione **Save**.

A continuación, copie el ID de la aplicación de Okta. Lo necesitará más adelante para la cadena JDBC que se conecta a Athena.

**Para buscar y copiar el ID de la aplicación de Okta**

1. Elija la pestaña **General** de la aplicación de Okta.  
![\[Elija la pestaña General de la aplicación de Okta.\]](http://docs.aws.amazon.com/es_es/athena/latest/ug/images/security-athena-lake-formation-jdbc-okta-tutorial-27.png)

1. Desplácese hacia abajo hasta la sección **App Embed Link** (Enlace insertado de la aplicación).

1. En **Embed Link** (Insertar enlace), copie y guarde de forma segura la parte del ID de la aplicación de Okta de la URL. El ID de la aplicación de Okta es la parte de la URL después de `amazon_aws_redshift/` pero antes de la siguiente barra diagonal. Por ejemplo, si la dirección URL contiene `amazon_aws_redshift/aaa/bbb`, el ID de la aplicación es `aaa`.   
![\[Copie el ID de la aplicación de Okta.\]](http://docs.aws.amazon.com/es_es/athena/latest/ug/images/security-athena-lake-formation-jdbc-okta-tutorial-28.png)

**nota**  
El enlace de inserción no se puede utilizar para registrarse directamente en la consola de Athena para ver las bases de datos. Los permisos de Lake Formation para usuarios y grupos de SAML solo se reconocen cuando se utiliza el controlador JDBC u ODBC para enviar consultas a Athena. Para ver las bases de datos, puede utilizar la herramienta SQL Workbench/J, que utiliza el controlador JDBC para conectarse a Athena. La herramienta SQL Workbench/J se aborda en [Paso 7: Verificar el acceso a través del cliente JDBC de Athena](#security-athena-lake-formation-jdbc-okta-tutorial-step-7-verify-access-through-athena-jdbc-client).

## Paso 6: Otorgar permisos de usuario y grupo a través de AWS Lake Formation
<a name="security-athena-lake-formation-jdbc-okta-tutorial-step-6-grant-permissions-through-aws-lake-formation"></a>

En este paso, se utiliza la consola de Lake Formation para conceder permisos en una tabla al usuario y grupo SAML. Puede realizar las siguientes tareas:
+ Especificar el ARN del usuario SAML de Okta y los permisos de usuario asociados en la tabla.
+ Especificar el ARN del grupo SAML de Okta y los permisos de usuario asociados en la tabla.
+ Verificar los permisos que concedió.

**Para conceder permisos en Lake Formation para el usuario de Okta**

1. Inicie sesión como administrador del lago de datos en la Consola de administración de AWS. 

1. Abra la consola de Lake Formation en [https://console.aws.amazon.com/lakeformation/](https://console.aws.amazon.com/lakeformation/).

1. En el panel de navegación, elija **Tables** (Tablas) y, a continuación, seleccione la tabla a la que desea conceder permisos. En este tutorial se utiliza la tabla `nyctaxi` de la base de datos `tripdb`.  
![\[Elija la tabla a la que desea conceder permisos.\]](http://docs.aws.amazon.com/es_es/athena/latest/ug/images/security-athena-lake-formation-jdbc-okta-tutorial-29.png)

1. En **Actions** (Acciones), elija **Grant** (Conceder).  
![\[Elija Grant (Conceder).\]](http://docs.aws.amazon.com/es_es/athena/latest/ug/images/security-athena-lake-formation-jdbc-okta-tutorial-30.png)

1. En el cuadro de diálogo **Conceder permisos**, ingrese la siguiente información:

   1. En **Usuarios y grupos de SAML y Amazon Quick**, ingrese el ARN de usuario SAML de Okta con el siguiente formato:

      ```
      arn:aws:iam::<account-id>:saml-provider/AthenaLakeFormationOkta:user/<athena-okta-user>@<anycompany.com>       
      ```

   1. En **Columns** (Columnas), en **Choose filter type** (Elegir tipo de filtro), elija **Include columns** (Incluir columnas) o **Exclude columns** (Excluir columnas).

   1. Utilice el menú desplegable **Choose one or more columns** (Elegir una o varias columnas) debajo del filtro para especificar las columnas que desea incluir o excluir del usuario o para él.

   1. En **Table permissions** (Permisos de tabla), elija **Select**. En este tutorial solo se concede el permiso `SELECT`. Los requisitos pueden variar.  
![\[Otorgar permisos de nivel de tabla y columna a un usuario de Okta.\]](http://docs.aws.amazon.com/es_es/athena/latest/ug/images/security-athena-lake-formation-jdbc-okta-tutorial-31.png)

1. Elija **Grant** (Conceder).

Ahora realice pasos similares para el grupo de Okta.

**Para conceder permisos en Lake Formation para el grupo de Okta**

1. En la página **Tables** (Tablas) de la consola de Lake Formation, asegúrese de que la tabla **nyctaxi** sigue seleccionada.

1. En **Actions** (Acciones), elija **Grant** (Conceder).

1. En el cuadro de diálogo **Grant permissions** (Conceder permisos), ingrese la siguiente información:

   1. En **Usuarios y grupos de SAML y Amazon Quick**, ingrese el ARN de grupo SAML de Okta con el siguiente formato:

      ```
      arn:aws:iam::<account-id>:saml-provider/AthenaLakeFormationOkta:group/lf-business-analyst
      ```

   1. En **Columns** (Columnas), **Choose filter type** (Elegir tipo de filtro), elija **Include Columns** (Incluir columnas).

   1. En **Choose one or more columns** (Elegir una o varias columnas), elija las tres primeras columnas de la tabla.

   1. En **Table permissions** (Permisos de tabla), elija los permisos de acceso específicos que desea conceder. En este tutorial solo se concede el permiso `SELECT`. Los requisitos pueden variar.  
![\[Otorgar permisos de tabla a un grupo de Okta.\]](http://docs.aws.amazon.com/es_es/athena/latest/ug/images/security-athena-lake-formation-jdbc-okta-tutorial-31b.png)

1. Elija **Grant** (Conceder).

1. Para verificar los permisos que concedió, elija **Actions** (Acciones), **View permissions** (Ver permisos).  
![\[Elija View permissions (Ver permisos) para verificar los permisos que concedió.\]](http://docs.aws.amazon.com/es_es/athena/latest/ug/images/security-athena-lake-formation-jdbc-okta-tutorial-32.png)

   En la página **Permisos de datos** de la tabla `nyctaxi` se muestran los permisos para **athena-okta-user** y el grupo **lf-business-analyst**.  
![\[Visualización de los permisos que se concedieron al usuario y grupo de Okta.\]](http://docs.aws.amazon.com/es_es/athena/latest/ug/images/security-athena-lake-formation-jdbc-okta-tutorial-33.png)

## Paso 7: Verificar el acceso a través del cliente JDBC de Athena
<a name="security-athena-lake-formation-jdbc-okta-tutorial-step-7-verify-access-through-athena-jdbc-client"></a>

Ahora puede utilizar un cliente JDBC para realizar una conexión de prueba a Athena como usuario SAML de Okta. 

En esta sección, realiza las siguientes tareas:
+ Preparar el cliente de prueba: descargue el controlador JDBC de Athena, instale SQL Workbench y agregue el controlador a Workbench. En este tutorial, se utiliza SQL Workbench para acceder a Athena a través de la autenticación de Okta y verificar los permisos de Lake Formation.
+ En SQL Workbench:
  + Cree una conexión para el usuario Athena Okta.
  + Ejecute consultas de prueba como usuario Athena Okta.
  + Cree y pruebe una conexión para el usuario de analista empresarial.
+ En la consola de Okta, agregue el usuario de analista empresarial al grupo de desarrolladores.
+ En la consola Lake Formation, configure los permisos de tabla para el grupo de desarrolladores.
+ En SQL Workbench, ejecute consultas de prueba como usuario de analista empresarial y verifique cómo afecta el cambio en los permisos a los resultados.

**Para preparar el cliente de prueba**

1. Descargue y extraiga el controlador JDBC de Athena compatible con Lake Formation (versión 2.0.14 o posterior) de [Conexión a Amazon Athena con JDBC](connect-with-jdbc.md).

1. Descargue e instale la herramienta de consulta SQL [SQL Workbench/J](https://www.sql-workbench.eu/index.html), disponible con una licencia modificada de Apache 2.0.

1. En SQL Workbench, elija **File** (Archivo) y, a continuación, elija **Manage Drivers** (Administrar controladores).  
![\[Seleccione Manage Drivers (Administrar controladores).\]](http://docs.aws.amazon.com/es_es/athena/latest/ug/images/security-athena-lake-formation-jdbc-okta-tutorial-verify-access-1.png)

1. En el cuadro de diálogo **Administrar controladores**, siga los siguientes pasos:

   1. Elija el icono de nuevo controlador.

   1. En **Nombre**, escriba **Athena**.

   1. En **Library** (Biblioteca), busque y elija el archivo `.jar` del controlador Simba JDBC de Athena que acaba de descargar.

   1. Seleccione **Aceptar**.  
![\[Agregar el controlador JDBC de Athena a SQL Workbench.\]](http://docs.aws.amazon.com/es_es/athena/latest/ug/images/security-athena-lake-formation-jdbc-okta-tutorial-verify-access-2.png)

Ahora puede crear y probar una conexión para el usuario de Athena Okta.

**Para crear una conexión para el usuario de Okta**

1. Elija **File** (Archivo), **Connect window** (Conectar ventana).  
![\[Elija Connect window (Conectar ventana).\]](http://docs.aws.amazon.com/es_es/athena/latest/ug/images/security-athena-lake-formation-jdbc-okta-tutorial-verify-access-3.png)

1. En el cuadro de diálogo **Perfil de conexión**, cree una conexión al ingresar la siguiente información:
   + En el cuadro de nombre, ingrese **Athena\$1Okta\$1User\$1Connection**.
   + En **Driver** (Controlador), elija el controlador Simba JDBC de Athena.
   + En **URL**, realice una de las siguientes operaciones:
     + Para utilizar una URL de conexión, ingrese una cadena de conexión de una sola línea. En el siguiente ejemplo se agregan saltos de línea por motivos de legibilidad.

       ```
       jdbc:awsathena://AwsRegion=region-id;
       S3OutputLocation=s3://amzn-s3-demo-bucket/athena_results;
       AwsCredentialsProviderClass=com.simba.athena.iamsupport.plugin.OktaCredentialsProvider;
       user=athena-okta-user@anycompany.com;
       password=password;
       idp_host=okta-idp-domain;
       App_ID=okta-app-id;
       SSL_Insecure=true;
       LakeFormationEnabled=true;
       ```
     + Para utilizar una URL basada en perfiles de AWS, siga estos pasos:

       1. Configure un [perfil de AWS](https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-profiles.html) que tenga un archivo de credenciales de AWS, como en el siguiente ejemplo.

          ```
          [athena_lf_dev]
          plugin_name=com.simba.athena.iamsupport.plugin.OktaCredentialsProvider
          idp_host=okta-idp-domain
          app_id=okta-app-id
          uid=athena-okta-user@anycompany.com
          pwd=password
          ```

       1. En **URL**, ingrese una cadena de conexión de una sola línea, como el siguiente ejemplo. En el ejemplo se agregan saltos de línea por motivos de legibilidad.

          ```
          jdbc:awsathena://AwsRegion=region-id;
          S3OutputLocation=s3://amzn-s3-demo-bucket/athena_results;
          profile=athena_lf_dev;
          SSL_Insecure=true;
          LakeFormationEnabled=true;
          ```

     Tenga en cuenta que estos ejemplos son representaciones básicas de la URL necesaria para conectarse a Athena. Para ver una lista completa de los parámetros admitidos en la URL, consulte la [documentación de JDBC.](connect-with-jdbc.md)

   En la siguiente imagen se muestra un perfil de conexión de SQL Workbench que utiliza una dirección URL de conexión.  
![\[Perfil de conexión en SQL Workbench.\]](http://docs.aws.amazon.com/es_es/athena/latest/ug/images/security-athena-lake-formation-jdbc-okta-tutorial-verify-access-4.png)

Ahora que ha establecido una conexión para el usuario de Okta, puede probarla recuperando algunos datos.

**Para probar la conexión para el usuario de Okta**

1. Elija **Test** (Probar) y, a continuación, verifique que la conexión se realiza correctamente.

1. Desde la venta **Instrucción** de SQL Workbench, ejecute el siguiente comando SQL `DESCRIBE`. Verifique que se muestren todas las columnas.

   ```
   DESCRIBE "tripdb"."nyctaxi"
   ```  
![\[Se muestran todas las columnas.\]](http://docs.aws.amazon.com/es_es/athena/latest/ug/images/security-athena-lake-formation-jdbc-okta-tutorial-verify-access-5.png)

1. Desde la venta **Instrucción** de SQL Workbench, ejecute el siguiente comando SQL `SELECT`. Verifique que se muestren todas las columnas.

   ```
   SELECT * FROM tripdb.nyctaxi LIMIT 5
   ```  
![\[Verifique que se muestren todas las columnas.\]](http://docs.aws.amazon.com/es_es/athena/latest/ug/images/security-athena-lake-formation-jdbc-okta-tutorial-verify-access-6.png)

A continuación, debe verificar que el usuario **athena-ba-user**, como miembro del grupo **lf-business-analyst**, solo tiene acceso a las tres primeras columnas de la tabla que especificó anteriormente en Lake Formation.

**Para verificar el acceso de **athena-ba-user****

1. En SQL Workbench, en el cuadro de diálogo **Connection profile** (Perfil de conexión), cree otro perfil de conexión.
   + En el nombre de perfil de conexión, ingrese ** Athena\$1Okta\$1Group\$1Connection**.
   + En **Driver** (Controlador), elija el controlador Simba JDBC de Athena.
   + En **URL**, realice una de las siguientes operaciones:
     + Para utilizar una URL de conexión, ingrese una cadena de conexión de una sola línea. En el siguiente ejemplo se agregan saltos de línea por motivos de legibilidad.

       ```
       jdbc:awsathena://AwsRegion=region-id;
       S3OutputLocation=s3://amzn-s3-demo-bucket/athena_results;
       AwsCredentialsProviderClass=com.simba.athena.iamsupport.plugin.OktaCredentialsProvider;
       user=athena-ba-user@anycompany.com;
       password=password;
       idp_host=okta-idp-domain;
       App_ID=okta-application-id;
       SSL_Insecure=true;
       LakeFormationEnabled=true;
       ```
     + Para utilizar una URL basada en perfiles de AWS, siga estos pasos:

       1. Configure un perfil de AWS que tenga un archivo de credenciales, como en el siguiente ejemplo.

          ```
          [athena_lf_ba]
          plugin_name=com.simba.athena.iamsupport.plugin.OktaCredentialsProvider
          idp_host=okta-idp-domain
          app_id=okta-application-id
          uid=athena-ba-user@anycompany.com
          pwd=password
          ```

       1. En **URL**, ingrese una cadena de conexión de una sola línea, como la siguiente. En el ejemplo se agregan saltos de línea por motivos de legibilidad.

          ```
          jdbc:awsathena://AwsRegion=region-id;
          S3OutputLocation=s3://amzn-s3-demo-bucket/athena_results;
          profile=athena_lf_ba;
          SSL_Insecure=true;
          LakeFormationEnabled=true;
          ```

1. Elija **Test** (Probar) para confirmar que la conexión se realiza correctamente.

1. Desde la ventana **SQL Statement** (Instrucción SQL), ejecute los mismos comandos SQL `DESCRIBE` y `SELECT` que ejecutó antes y examine los resultados.

   Como **athena-ba-user** es miembro del grupo **lf-business-analyst**, solo se devuelven las tres primeras columnas que especificó en la consola de Lake Formation.  
![\[Solo se devuelven las primeras tres columnas.\]](http://docs.aws.amazon.com/es_es/athena/latest/ug/images/security-athena-lake-formation-jdbc-okta-tutorial-verify-access-7.png)  
![\[Datos de las primeras tres columnas.\]](http://docs.aws.amazon.com/es_es/athena/latest/ug/images/security-athena-lake-formation-jdbc-okta-tutorial-verify-access-8.png)

A continuación, vuelva a la consola de Okta para agregar el usuario `athena-ba-user` al grupo de Okta `lf-developer`.

**Para agregar el usuario athena-ba-user al grupo lf-developer**

1. Inicie sesión en la consola de Okta como usuario administrativo del dominio Okta asignado.

1. Elija **Directory** y, a continuación, elija **Groups** (Grupos).

1. En la página Groups (Grupos), elija el grupo **lf-developer**.  
![\[Elija el grupo lf-developer.\]](http://docs.aws.amazon.com/es_es/athena/latest/ug/images/security-athena-lake-formation-jdbc-okta-tutorial-verify-access-9.png)

1. Elija **Manage People** (Administrar personas).

1. En la lista **Not Members** (No miembros), elija **athena-ba-user** para agregarlo al grupo **lf-developer**.

1. Seleccione **Save**.

Ahora regrese a la consola de Lake Formation para configurar los permisos de tabla para el grupo **lf-developer**.

**Para configurar los permisos de tabla para lf-developer-group**

1. Inicie sesión en la consola de Lake Formation como administrador del lago de datos.

1. En el panel de navegación, elija **Tablas**.

1. Seleccione la tabla **nyctaxi**.

1. Elija **Actions** (Acciones), **Grant** (Conceder).

1. En el cuadro de diálogo **Conceder permisos**, ingrese la siguiente información:
   + En **Usuarios y grupos de SAML y Amazon Quick**, ingrese el ARN de grupo lf-developer SAML de Okta con el siguiente formato:
   + En **Columns** (Columnas), **Choose filter type** (Elegir tipo de filtro), elija **Include Columns** (Incluir columnas).
   + Elija la columna **trip\$1type**.
   + En **Table permissions** (Permisos de tabla), elija **SELECT**.

1. Elija **Grant** (Conceder).

Ahora puede utilizar SQL Workbench para verificar el cambio en los permisos para el grupo **lf-developer**. El cambio debe reflejarse en los datos disponibles para el usuario **athena-ba-user**, que ahora es miembro del grupo **lf-developer**.

**Para verificar el cambio en los permisos de athena-ba-user**

1. Cierre el programa SQL Workbench y, a continuación, vuelva a abrirlo.

1. Conéctese al perfil de **athena-ba-user**.

1. En la ventana **Statement** (Instrucción), ejecute las mismas instrucciones SQL que ejecutó anteriormente:

   Esta vez, se muestra la columna **trip\$1type**.  
![\[La cuarta columna está disponible para consulta.\]](http://docs.aws.amazon.com/es_es/athena/latest/ug/images/security-athena-lake-formation-jdbc-okta-tutorial-verify-access-10.png)

   Como **athena-ba-user** ahora es miembro de los grupos **lf-developer** e **lf-business-analyst**, la combinación de permisos de Lake Formation para esos grupos determina las columnas que se devuelven.  
![\[La cuarta columna son los resultados de los datos.\]](http://docs.aws.amazon.com/es_es/athena/latest/ug/images/security-athena-lake-formation-jdbc-okta-tutorial-verify-access-11.png)

## Conclusión
<a name="security-athena-lake-formation-jdbc-okta-tutorial-conclusion"></a>

En este tutorial configuró la integración de Athena con AWS Lake Formation utilizando Okta como proveedor SAML. Utilizó Lake Formation e IAM para controlar los recursos que están disponibles para el usuario SAML en el catálogo de datos AWS Glue del lago de datos.

## Recursos relacionados
<a name="security-athena-lake-formation-jdbc-okta-tutorial-related-resources"></a>

Para obtener información relacionada, consulte los siguientes recursos.
+ [Conexión a Amazon Athena con JDBC](connect-with-jdbc.md)
+ [Habilitación del acceso federado a la API de Athena](access-federation-saml.md)
+ [AWS Lake Formation Guía para desarrolladores de](https://docs.aws.amazon.com/lake-formation/latest/dg/)
+ [Concesión y revocación de permisos de catálogo de datos](https://docs.aws.amazon.com/lake-formation/latest/dg/granting-catalog-permissions.html) en la *Guía para desarrolladores de AWS Lake Formation*.
+ [Federación y proveedores de identidad](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_providers.html) en la *Guía del usuario de IAM*.
+ [Creación de proveedores de identidad SAML de IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_providers_create_saml.html) en la *Guía del usuario de IAM*.
+ [Enabling federation to AWS using Windows Active Directory, ADFS, and SAML 2.0](https://aws.amazon.com/blogs/security/enabling-federation-to-aws-using-windows-active-directory-adfs-and-saml-2-0/) (Habilitación de la federación de AWS por medio de Windows Active Directory, ADFS y SAML 2.0) en el *blog de seguridad de *.