Cómo conectar Athena a IAM Identity Center - Amazon Athena

Cómo conectar Athena a IAM Identity Center

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

Siga la guía Configuración de un emisor de tokens de confianza 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.

Configuración de roles de IAM

Configure el rol de aplicaicón de IAM

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

  2. En el panel de navegación de la izquierda, elija Roles y, a continuación, seleccione Crear rol.

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

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

      { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Federated": "arn:aws:iam::111122223333:oidc-provider/issuer-url" }, "Action": [ "sts:AssumeRoleWithWebIdentity" ], "Condition": { "StringEquals": { "issuer:aud": "identity-provider-audience" } } } ] }
  4. Agregue la siguiente política en línea para otorgar al usuario acceso a los permisos CreateTokenWithIAM, ListTagsForResource y AssumeRoleWithWebIdentity.

    { "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.

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

Configuración del rol de acceso de IAM

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

  2. En el panel de navegación de la izquierda, elija Roles y, a continuación, seleccione Crear rol.

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

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

      { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::111122223333:role/application-role-arn" }, "Action": [ "sts:AssumeRole", "sts:SetContext" ] }, { "Effect": "Allow", "Principal": { "Federated": "arn:aws:iam::111122223333:oidc-provider/issuer-url" }, "Action": [ "sts:AssumeRole" ] } ] }
  4. Agregue la siguiente política en línea para conceder acceso a los flujos de trabajo del controlador:

    { "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": "*" } ] }
  5. Copie el ARN correspondiente al rol de acceso.

Cómo configurar la aplicación del cliente de AWS IAM Identity Center

Para configurar la aplicación del cliente, siga los pasos en Configuración de aplicaciones OAuth 2.0 administradas por el cliente para la propagación de identidad de confianza, 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, 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>.

  • En Ámbitos de acceso que se van a aplicar, elija lakeformation:query.

Configuración de la asociación de grupos de trabajo

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

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

  3. Elija Administrar etiquetas e ingrese lo siguiente:

    1. ClaveAthenaDriverOidcAppArn

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

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

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

  3. WorkgroupARN: el ARN del grupo de trabajo de Athena

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

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

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. 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. En función del controlador que desee utilizar, proporcione los parámetros que se indican en:

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

  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.

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

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

  4. Elija Nuevo y, a continuación, Bibliotecas.

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

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

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

    2. Nombre de la clase: com.amazon.athena.jdbc.AthenaDriver

    3. Seleccione la opción Sin autenticación.

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

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

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

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

    4. CredentialsProvider: ingrese JWT_TIP.

    5. ApplicationRoleArn: el ARN del rol para habilitar AssumeRoleWithWebIdentity. Para obtener más información sobre los roles de ARN, consulte AssumeRole en la Referencia de la API de AWS Security Token Service.

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

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

    8. 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>;
  9. 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. 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 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.

  10. Abra el Editor de consultas SQL y comience a ejecutar las consultas. Consulte Registros de CloudTrail para verificar la identidad propagada del usuario.