

# Cómo conectar Athena a IAM Identity Center
<a name="using-trusted-identity-propagation-setup"></a>

La siguiente sección describe el proceso de conexión de Athena con IAM Identity Center.

## Configuración de un emisor de tokens de confianza
<a name="using-trusted-identity-propagation-step1"></a>

Siga la guía [Configuración de un emisor de tokens de confianza](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_providers_create_oidc.html) para configurar un emisor de tokens de confianza. Esto creará un AWS IAM Identity Center.

**nota**  
En **Tipo de proveedor**, elija **OpenID Connect**. En **URL del proveedor**, ingrese la URL del emisor del proveedor de identidad. En **Audiencia**, especifique el ID de cliente emitido por el proveedor de identidad para la aplicación.  
 

Copie el nombre de recurso (ARN) de la aplicación correspondiente al proveedor de identidades de AWS IAM. Para obtener más información, consulte [Proveedores de identidad y federación](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_providers.html).

## Configuración de roles de IAM
<a name="using-trusted-identity-propagation-step2"></a>

### Configure el rol de aplicaicón de IAM
<a name="using-trusted-identity-propagation-step2-application-role"></a>

1. 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 **Roles** y, a continuación, seleccione **Crear rol**.

1. En **Tipo de entidad de confianza**, elija **Política de confianza personalizada** así:

   1. En **Entidad principal federada**, agregue el ARN correspondiente al proveedor de identidades de AWS IAM que copió durante la configuración del emisor de token de confianza.

   1. En la condición de la política, agregue el público del proveedor de identidad federado externo.

1. Agregue la siguiente política en línea para otorgar al usuario acceso a los permisos [CreateTokenWithIAM](https://docs.aws.amazon.com/singlesignon/latest/OIDCAPIReference/API_CreateTokenWithIAM.html), [ListTagsForResource](https://docs.aws.amazon.com/athena/latest/APIReference/API_ListTagsForResource.html) y [AssumeRoleWithWebIdentity](https://docs.aws.amazon.com/STS/latest/APIReference/API_AssumeRoleWithWebIdentity.html).

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

****  

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

------
**nota**  
Los permisos de `CreateTokenWithIam` se otorgan en la aplicación de IAM Identity Center administrada por el cliente.

1. Copie el ARN del rol de la aplicación.

### Configuración del rol de acceso de IAM
<a name="using-trusted-identity-propagation-step2-access-role"></a>

1. 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 **Roles** y, a continuación, seleccione **Crear rol**.

1. En **Tipo de entidad de confianza**, elija **Política de confianza personalizada** así:

   1. En **Entidad principal federada**, agregue el ARN de AWS IAM Identity Center copiado durante la configuración del emisor de token de confianza.

   1. En **Entidad principal de AWS**, agregue el ARN del rol de aplicación de AWSIAM copiado durante la configuración del rol de aplicación de IAM.

1. Agregue la siguiente **política en línea** para conceder acceso a los flujos de trabajo del controlador:

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

****  

   ```
   {
       "Version":"2012-10-17",		 	 	 
       "Statement": [
           {
               "Effect": "Allow",
               "Action": [
                   "athena:StartQueryExecution",
                   "athena:GetQueryExecution",
                   "athena:GetQueryResults",
                   "athena:ListWorkGroups",
                   "athena:ListDataCatalogs",
                   "athena:ListDatabases",
                   "athena:ListTableMetadata"
               ],
               "Resource": "*"
           },
           {
               "Effect": "Allow",
               "Action": [
                   "s3:ListBucket",
                   "s3:GetObject",
                   "s3:PutObject"
               ],
               "Resource": "*"
           },
           {
               "Effect": "Allow",
               "Action": [
                   "glue:GetDatabase",
                   "glue:GetDatabases",
                   "glue:CreateTable",
                   "glue:GetTable",
                   "glue:GetTables",
                   "glue:UpdateTable",
                   "glue:DeleteTable",
                   "glue:BatchDeleteTable",
                   "glue:GetTableVersion",
                   "glue:GetTableVersions",
                   "glue:DeleteTableVersion",
                   "glue:BatchDeleteTableVersion",
                   "glue:CreatePartition",
                   "glue:BatchCreatePartition",
                   "glue:GetPartition",
                   "glue:GetPartitions",
                   "glue:BatchGetPartition",
                   "glue:UpdatePartition",
                   "glue:DeletePartition",
                   "glue:BatchDeletePartition"
               ],
               "Resource": "*"
           },
           {
               "Effect": "Allow",
               "Action": [
                   "lakeformation:GetDataAccess"
               ],
               "Resource": "*"
           }
       ]
   }
   ```

------

1. Copie el ARN correspondiente al rol de acceso.

## Configuración de la aplicación administrada por el cliente AWS IAM Identity Center
<a name="using-trusted-identity-propagation-step3"></a>

Para configurar la aplicación administrada por el cliente, siga los pasos que se indican en [Configuración de aplicaciones OAuth 2.0 administradas por el cliente para la propagación de identidades de confianza](https://docs.aws.amazon.com/singlesignon/latest/userguide/customermanagedapps-trusted-identity-propagation-set-up-your-own-app-OAuth2.html), con las siguientes consideraciones para Athena.
+ En **Etiquetas**, agregue el siguiente par clave-valor:
  + **Clave**: **AthenaDriverOidcAppArn**
  + **Valor**: **AccessRoleARN** copiado durante la configuración del rol de accceso de IAM.
+ Al [especificar las credenciales de la aplicación](https://docs.aws.amazon.com/singlesignon/latest/userguide/customermanagedapps-trusted-identity-propagation-set-up-your-own-app-OAuth2.html#customermanagedapps-trusted-identity-propagation-set-up-your-own-app-OAuth2-specify-application-credentials), agregue el ARN del rol de aplicación de AWS IAM que copió durante la configuración del rol de aplicación de IAM.
+ En **Aplicaciones que pueden recibir solicitudes**, elija **AWS-Lake-Formation-AWS-Glue-Data-Catalog-<account-id>**.
+ Para que se **apliquen los ámbitos de acceso**, seleccione **lakeformation:query** para grupos de trabajo habilitados para IAM o **lakeformation:query**, **athena:workgroup:read\_write** y **s3:access\_grants:read\_write** para grupos de trabajo habilitados para Identity Center.

## Configuración de la asociación de grupos de trabajo
<a name="using-trusted-identity-propagation-step4"></a>

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

1. Elija un grupo de trabajo de la lista y abra la pestaña **Etiquetas**. 

1. Elija **Administrar etiquetas** e ingrese lo siguiente:

   1. **Clave** – `AthenaDriverOidcAppArn`

   1. **Valor**: ARN de la aplicación de AWS IAM Identity Center.

1. Seleccione **Save**.

Una vez completada la configuración inicial por parte de los administradores, pueden distribuir a los usuarios los detalles de conexión esenciales. Los usuarios necesitan estos cinco parámetros obligatorios para ejecutar cargas de trabajo de SQL:

1. **ApplicationRoleARN**: el ARN del rol de la apliccación

1. **JwtWebIdentityToken**: el token JWT para la verificación de identidad

1. **WorkgroupARN**: el ARN del grupo de trabajo de Athena

1. **JwtRoleSessionName**: el nombre de la sesión correspondiente al rol de JWT

1. **CredentialsProvider**: la configuración del proveedor de credenciales

**nota**  
Hemos simplificado la configuración de la cadena de conexión gracias al uso estratégico de etiquetas. El etiquetado correcto del grupo de trabajo de Athena y de la aplicación de AWS IAM Identity Center administrada por el cliente elimina la necesidad de que los usuarios proporcionen `AccessRoleArn` y `CustomerIdcApplicationArn`. El complemento gestiona esto automáticamente mediante el rol de la aplicación para localizar las etiquetas necesarias y recuperar los valores de ARN correspondientes al flujo de trabajo.   
Los administradores aún pueden requerir que los usuarios proporcionen `AccessRoleArn` o `CustomerIdcApplicationArn` en la cadena de conexión. Para ello, deben ajustar los permisos del rol de la aplicación según sea necesario.

## Ejecución de consultas con controladores de Athena habilitados para la propagación de identidad de confianza
<a name="using-trusted-identity-propagation-step5"></a>

Descargue la versión más reciente que desea utilizar. Para obtener más información sobre la instalación de JDBC, consute [Introducción al controlador JDBC 3.x](jdbc-v3-driver-getting-started.md). Puede optar por instalar controladores ODBC según la plataforma compatible. Para obtener más información, consulte [Introducción al controlador ODBC 2.x](odbc-v2-driver-getting-started.md). En función del controlador que desee utilizar, proporcione los parámetros que se indican en:
+ [Parámetros de conexión del complemento de autenticación JDBC](jdbc-v3-driver-jwt-tip-credentials.md)
+ [Parámetros de conexión del complemento de autenticación ODBC](odbc-v2-driver-jwt-tip.md)

**nota**  
La propagación de identidad de confianza con controladores solo está disponible a partir de la versión 3.6.0 en JDBC y de la versión 2.0.5.0 en ODBC.

## Cómo usar controladores de Athena y propagación de identidad de confianza con DBeaver
<a name="using-trusted-identity-propagation-step6"></a>

1. Descargue el archivo JAR más reciente con dependencias desde Athena. Para obtener más información, consulte [Controlador JDBC 3.x de Athena](jdbc-v3-driver.md).

1. Abra la aplicaicón de DBeaver en la computadora.

1. Navegue hasta el menú **Base de datos** en la parte superior de la pantalla y, a continuación, seleccione **Administrador del controlador**.

1. Elija **Nuevo** y, a continuación, **Bibliotecas**.

1. Agregue el controlador más reciente y elija **Buscar clase**. Esto le dará una ruta de archivo similar a `com.amazon.athena.jdbc.AthenaDriver`.

1. Abra la pestaña **Configuración** y proporcione los siguientes campos

   1. **Nombre del controlador**: Athena JDBC con propagación de identidad de confianza

   1. **Nombre de la clase** – `com.amazon.athena.jdbc.AthenaDriver`

   1. Seleccione la opción **Sin autenticación**.

1. Elija **Conectarse a una base de datos** y busque la propagación de identidad de confianza de Athena JDBC. Esto lo llevará a la URL de JDBC. Para obtener más información, consulte [Configuración del controlador](jdbc-v3-driver-getting-started.md#jdbc-v3-driver-configuring-the-driver).

1. Proporcione los siguientes detalles.

   1. **Grupo de trabajo**: el grupo de trabajo en el que desea ejecutar las consultas. Para obtener información acerca de los grupos de trabajo, consulte [Grupo de trabajo](https://docs.aws.amazon.com/athena/latest/APIReference/API_WorkGroup.html).

   1. **Región**: la Región de AWS en la que se ejecutarán las consultas. Para obtener una lista de las regiones, consulte [Puntos de conexión y cuotas de Amazon Athena](https://docs.aws.amazon.com/general/latest/gr/athena.html).

   1. **OutputLocation**: la ubicación en Amazon S3 en la que desea almacenar los resultados de las consultas. Para obtener información sobre la ubicación de las salidas, consulte [ResultConfiguration](https://docs.aws.amazon.com/athena/latest/APIReference/API_ResultConfiguration.html).

   1. **CredentialsProvider**: ingrese `JWT_TIP`.

   1. **ApplicationRoleArn**: el ARN del rol para habilitar `AssumeRoleWithWebIdentity`. Para obtener más información sobre los roles de ARN, consulte [AssumeRole](https://docs.aws.amazon.com/STS/latest/APIReference/API_AssumeRole.html) en la Referencia de la API de AWS Security Token Service.

   1. **WorkgroupArn**: el ARN del grupo de trabajo en el que se ejecutarán las consultas. Debe ser el mismo grupo de trabajo que se indica en el campo **Grupo de trabajo**. Para obtener información acerca de los grupos de trabajo, consulte [Grupo de trabajo](https://docs.aws.amazon.com/athena/latest/APIReference/API_WorkGroup.html).

   1. **JwtRoleSessionName**: el nombre de la sesión cuando se utilizan las credenciales de JWT para la autenticación. Puede elegir cualquier nombre.

   1. **JwtWebIdentityToken**: el token JWT obtenido de un proveedor de identidad federado externo. Este token se utiliza para autenticarse con Athena.

      ```
      jdbc:athena://Workgroup={{<value>}};Region={{<region>}};OutputLocation={{<location>}};CredentialsProvider=JWT_TIP;ApplicationRoleArn={{<arn>}};WorkgroupArn={{<arn>}};JwtRoleSessionName=JDBC_TIP_SESSION;JwtWebIdentityToken={{<token>}};
      ```

1. Seleccione **Aceptar** y cierre la ventana. Después de este paso, DBeaver comenzará a cargar los metadatos y verá cómo se rellenan los catálogos, las bases de datos y las tablas.
**nota**  
Si la declaración JTI está presente en el token y se elige **Probar conexión** antes de seleccionar **Aceptar**, se evita que el mismo JTI se reutilice en intercambios de tokens. Para obtener más información, consulte [Requisitos previos y consideraciones para emisores de tokens de confianza](https://docs.aws.amazon.com/singlesignon/latest/userguide/using-apps-with-trusted-token-issuer.html#trusted-token-issuer-prerequisites). Para solucionar este problema, JDBC implementa una caché en memoria, cuyo ciclo de vida depende de la instancia del controlador principal. En el caso de ODBC, existe opcionalmente una [caché de archivos](odbc-v2-driver-jwt-tip.md#odbc-v2-driver-jwt-tip-file-cache) que permite almacenar en caché las credenciales temporales y reutilizarlas para reducir la cantidad de identificadores de identidad web que se utilizan durante el ciclo de vida de la sesión.

1. Abra el **Editor de consultas SQL** y comience a ejecutar las consultas. Consulte [Registros de CloudTrail](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/cloudtrail-user-guide.html) para verificar la identidad propagada del usuario.