Configuración de roles de tiempo de ejecución de IAM para el acceso al clúster de Amazon EMR en Studio - Amazon SageMaker AI

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

Configuración de roles de tiempo de ejecución de IAM para el acceso al clúster de Amazon EMR en Studio

Cuando se conecta a un clúster de Amazon EMR desde sus cuadernos de Studio o Studio Classic, puede examinar visualmente una lista de roles de IAM, conocidos como roles de tiempo de ejecución, y seleccionar uno sobre la marcha. Posteriormente, todos sus trabajos de Apache Spark, Apache Hive o Presto creados desde su cuaderno accederán únicamente a los datos y recursos permitidos por las políticas asociadas al rol de tiempo de ejecución. Además, cuando se accede a los datos desde lagos de datos gestionados con ellos AWS Lake Formation, puede imponer el acceso a nivel de tabla y columna mediante políticas asociadas a la función de tiempo de ejecución.

Con esta capacidad, usted y sus compañeros de equipo pueden conectarse al mismo clúster, cada uno con un rol de tiempo de ejecución limitado con permisos que se ajusten a su nivel individual de acceso a los datos. Sus sesiones también están aisladas unas de otras en el clúster compartido.

Para probar esta función con Studio Classic, consulte Aplicar controles de acceso a datos detallados con AWS Lake Formation Amazon EMR desde Amazon Studio Classic. SageMaker Esta publicación del blog le ayuda a configurar un entorno de demostración en el que puede intentar utilizar roles de tiempo de ejecución preconfigurados para conectarse a los clústeres de Amazon EMR.

Requisitos previos

Antes de comenzar, asegúrese de que cumplir los siguientes requisitos previos:

Escenarios de conexión entre cuentas

La autenticación de roles en tiempo de ejecución admite diversos escenarios de conexión entre cuentas cuando los datos residen fuera de la cuenta de Studio. En la siguiente imagen, se muestran tres formas diferentes de asignar el clúster, los datos e incluso el rol de ejecución en tiempo de ejecución de Amazon EMR entre sus cuentas de Studio y de datos:

Escenarios entre cuentas que admite la autenticación de roles de IAM en tiempo de ejecución.

En la opción 1, el clúster de Amazon EMR y el rol de ejecución en tiempo de ejecución de Amazon EMR se encuentran en una cuenta de datos diferente de la cuenta de Studio. Debe definir una política de permisos de rol de acceso a Amazon EMR diferente (también denominada Assumable role) que concede permiso a el rol de ejecución de Studio o Studio Classic para que asuma el rol de acceso a Amazon EMR. A continuación, el rol de acceso a Amazon EMR llama a la API de Amazon EMR GetClusterSessionCredentials en nombre de su rol de ejecución de Studio o Studio Classic, lo que le da acceso al clúster.

En la opción 2, el clúster de Amazon EMR y el rol de ejecución en tiempo de ejecución de Amazon EMR se encuentran en su cuenta de Studio. Su rol de ejecución de Studio tiene permiso para usar la API de Amazon EMR GetClusterSessionCredentials para acceder a su clúster. Para acceder al bucket de Amazon S3, conceda al rol de ejecución en tiempo de ejecución de Amazon EMR permisos de acceso de varias cuentas al bucket de Amazon S3; usted concede estos permisos dentro de su política de buckets de Amazon S3.

En la opción 3, sus clústeres de Amazon EMR están en su cuenta de Studio y el rol de ejecución en tiempo de ejecución de Amazon EMR está en la cuenta de datos. Su rol de ejecución de Studio o Studio Classic tiene permiso para usar la API de Amazon EMR GetClusterSessionCredentials para acceder a su clúster. Añada el rol de ejecución en tiempo de ejecución de Amazon EMR al JSON de configuración del rol de ejecución. Luego, puede seleccionar el rol en la interfaz de usuario al elegir su clúster. Para obtener más información sobre cómo configurar el archivo JSON de configuración del rol de ejecución, consulte Carga previa de sus roles de ejecución en Studio o Studio Classic.

Configuración de Studio para usar roles de IAM en tiempo de ejecución

Para establecer la autenticación de roles en tiempo de ejecución para sus clústeres de Amazon EMR, configure las políticas de IAM, la red y las mejoras de usabilidad necesarias. Su configuración depende de si gestiona acuerdos entre cuentas si sus clústeres de Amazon EMR, el rol de ejecución en tiempo de ejecución de Amazon EMR o ambos residen fuera de su cuenta de Studio. En la siguiente sección, verá las políticas que debe instalar, cómo configurar la red para permitir el tráfico entre cuentas y el archivo de configuración local que debe configurar para automatizar la conexión a Amazon EMR.

Configuración de la autenticación de roles en tiempo de ejecución cuando el clúster de Amazon EMR y Studio están en la misma cuenta

Si su clúster de Amazon EMR reside en su cuenta de Studio, realice los siguientes pasos para añadir los permisos necesarios a la política de ejecución de Studio:

  1. Añada la política de IAM necesaria para conectarse a los clústeres de Amazon EMR. Para obtener más información, consulte Configuración de la lista de clústeres de Amazon EMR.

  2. Conceda permiso para llamar a la API de Amazon EMR GetClusterSessionCredentials cuando pase uno o más roles de ejecución en tiempo de ejecución de Amazon EMR permitidos especificados en la política.

  3. (Opcional) Conceda permiso para transferir roles de IAM que sigan cualquier convención de nomenclatura definida por el usuario.

  4. (Opcional) Conceda permiso para acceder a los clústeres de Amazon EMR etiquetados con cadenas específicas definidas por el usuario.

  5. Cargue previamente sus roles de IAM para poder seleccionar el rol que desee utilizar cuando se conecte a su clúster de Amazon EMR. Para obtener más información acerca de cómo precargar los roles de IAM, consulte Carga previa de sus roles de ejecución en Studio o Studio Classic.

El siguiente ejemplo de política permite a los roles de ejecución en tiempo de ejecución de Amazon EMR que pertenecen a los grupos de modelado y entrenamiento llamar a GetClusterSessionCredentials. Además, el titular de la política puede acceder a los clústeres de Amazon EMR etiquetados con las cadenas modeling o training.

{ "Version": "2012-10-17", "Statement": [ { "Sid": "VisualEditor0", "Effect": "Allow", "Action": "elasticmapreduce:GetClusterSessionCredentials", "Resource": "*", "Condition": { "StringLike": { "elasticmapreduce:ExecutionRoleArn": [ "arn:aws:iam::123456780910:role/emr-execution-role-ml-modeling*", "arn:aws:iam::123456780910:role/emr-execution-role-ml-training*" ], "elasticmapreduce:ResourceTag/group": [ "*modeling*", "*training*" ] } } } ] }

Configuración de la autenticación de roles en tiempo de ejecución cuando el clúster y Studio están en cuentas diferentes

Si su clúster de Amazon EMR no está en su cuenta de Studio, permita que su función de ejecución de SageMaker IA asuma la función de acceso multicuenta a Amazon EMR para que pueda conectarse al clúster. Siga estos pasos para realizar su configuración de varias cuentas:

  1. Cree su política de permisos para la función de ejecución de SageMaker IA para que la función de ejecución pueda asumir la función de acceso a Amazon EMR. A continuación, se muestra un ejemplo de política:

    { "Version": "2012-10-17", "Statement": [ { "Sid": "AllowAssumeCrossAccountEMRAccessRole", "Effect": "Allow", "Action": "sts:AssumeRole", "Resource": "arn:aws:iam::emr_account_id:role/emr-access-role-name" } ] }
  2. Cree la política de confianza para especificar en qué cuentas de Studio IDs se confía para asumir la función de acceso a Amazon EMR. A continuación, se muestra un ejemplo de política:

    { "Version": "2012-10-17", "Statement": [ { "Sid": "AllowCrossAccountSageMakerExecutionRoleToAssumeThisRole", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::studio_account_id:role/studio_execution_role" }, "Action": "sts:AssumeRole" } }
  3. Cree la política de permisos del rol de acceso de Amazon EMR, que conceda al rol de ejecución en tiempo de ejecución de Amazon EMR los permisos necesarios para llevar a cabo las tareas previstas en el clúster. Configure la rol de acceso a Amazon EMR para llamar a la API GetClusterSessionCredentials con los roles de ejecución en tiempo de ejecución de Amazon EMR especificados en la política de permisos del rol de acceso. A continuación, se muestra un ejemplo de política:

    { "Version": "2012-10-17", "Statement": [ { "Sid": "AllowCallingEmrGetClusterSessionCredentialsAPI", "Effect": "Allow", "Action": "elasticmapreduce:GetClusterSessionCredentials", "Resource": "", "Condition": { "StringLike": { "elasticmapreduce:ExecutionRoleArn": [ "arn:aws:iam::emr_account_id:role/emr-execution-role-name" ] } } } ] }
  4. Configure la red de varias cuentas para que el tráfico pueda fluir entre sus cuentas. Para obtener instrucciones, consulte Configuración de acceso a la red para su clúster de Amazon EMRSet up the . Los pasos de esta sección le ayudarán a completar las siguientes tareas:

    1. Empareje mediante VPC su cuenta de Studio y su cuenta de Amazon EMR para establecer una conexión.

    2. Añada manualmente rutas a las tablas de enrutamiento de las subredes privadas en ambas cuentas. Esto permite crear y conectar clústeres de Amazon EMR desde la cuenta de Studio a la subred privada de la cuenta remota.

    3. Configure el grupo de seguridad asociado a su dominio de Studio para permitir el tráfico saliente y el grupo de seguridad del nodo principal de Amazon EMR para permitir el tráfico de TCP entrante desde el grupo de seguridad de la instancia de Studio.

  5. Cargue previamente sus roles de tiempo de ejecución de IAM para poder seleccionar el rol que desee utilizar cuando se conecte a su clúster de Amazon EMR. Para obtener más información acerca de cómo precargar los roles de IAM, consulte Carga previa de sus roles de ejecución en Studio o Studio Classic.

Configuración del acceso a Lake Formation

Al acceder a los datos de los lagos de datos gestionados por AWS Lake Formation, puede aplicar el acceso a nivel de tabla y columna mediante políticas asociadas a su función de tiempo de ejecución. Para configurar el permiso de acceso a Lake Formation, consulte Integración de Amazon EMR con AWS Lake Formation.

Carga previa de sus roles de ejecución en Studio o Studio Classic

Puede cargar previamente sus roles de tiempo de ejecución de IAM para poder seleccionar el rol que desee utilizar cuando se conecte a su clúster de Amazon EMR. Los usuarios de JupyterLab In Studio pueden usar la consola de SageMaker IA o el script proporcionado.

Preload runtime roles in JupyterLab using the SageMaker AI console

Para asociar tus funciones de tiempo de ejecución a tu perfil de usuario o dominio mediante la consola de SageMaker IA:

  1. Dirígete a la consola de SageMaker IA en https://console.aws.amazon.com/sagemaker/.

  2. En el panel de navegación izquierdo, elige el dominio y, a continuación, selecciona el dominio mediante la función de ejecución de SageMaker IA cuyos permisos has actualizado.

    • Para añadir tu tiempo de ejecución (y tus funciones de acceso en caso de uso multicuenta) a tu dominio: en la pestaña Configuraciones de aplicaciones de la página de detalles del dominio, navega hasta la JupyterLabsección.

    • Para añadir tu tiempo de ejecución (y las funciones de acceso en caso de uso multicuenta) a tu perfil de usuario: en la página de detalles del dominio, selecciona la pestaña Perfiles de usuario y selecciona el perfil de usuario mediante la función de ejecución de SageMaker IA cuyos permisos has actualizado. En la pestaña Configuraciones de aplicaciones, dirígete a la JupyterLabsección.

  3. Elija Editar y añada su función ARNs de acceso (función asumible) y las funciones de ejecución en tiempo de ejecución de EMR Serverless.

  4. Seleccione Submit (Enviar).

La próxima vez que se conecte a un servidor de Amazon EMR, los roles de tiempo de ejecución deberían aparecer en un menú desplegable para poder seleccionarlos.

Preload runtime roles in JupyterLab using a Python script

En una JupyterLab aplicación iniciada desde un espacio con el rol de ejecución de SageMaker IA cuyos permisos hayas actualizado, ejecuta el siguiente comando en una terminal. Sustituya domainID, user-profile-name, emr-accountID y EMRServiceRole por sus valores adecuados. Este fragmento de código actualiza la configuración de un perfil de usuario (client.update_user_profile) dentro de un dominio de SageMaker IA en un caso de uso entre cuentas. Concretamente, establece los roles de servicio de Amazon EMR. También permite que la JupyterLab aplicación asuma una función de IAM concreta (AssumableRoleoAccessRole) para ejecutar Amazon EMR dentro de la cuenta de Amazon EMR.

Como alternativa, utilice client.update_domain para actualizar la configuración del dominio si su espacio utiliza un rol de ejecución establecido en el dominio.

import botocore.session import json sess = botocore.session.get_session() client = sess.create_client('sagemaker') client.update_user_profile( DomainId="domainID", UserProfileName="user-profile-name", UserSettings={ 'JupyterLabAppSettings': { 'EmrSettings': { 'AssumableRoleArns': ["arn:aws:iam::emr-accountID:role/AssumableRole"], 'ExecutionRoleArns': ["arn:aws:iam::emr-accountID:role/EMRServiceRole", "arn:aws:iam::emr-accountID:role/AnotherServiceRole"] } } }) resp = client.describe_user_profile(DomainId="domainID", UserProfileName=user-profile-name") resp['CreationTime'] = str(resp['CreationTime']) resp['LastModifiedTime'] = str(resp['LastModifiedTime']) print(json.dumps(resp, indent=2))
Preload runtime roles in Studio Classic

Proporcione el ARN de AccessRole (AssumableRole) a su función de ejecución de SageMaker IA. El servidor de Jupyter carga el ARN al inicializarse. El rol de ejecución de Studio asume ese rol de varias cuentas para detectar y conectarse a los clústeres de Amazon EMR en la cuenta de confianza.

Puede especificar esta información mediante scripts de configuración del ciclo de vida (LCC). Puede asociar la LCC a su dominio o a un perfil de usuario específico. El script de LCC que utilice debe ser una JupyterServer configuración. Para obtener más información sobre cómo crear un script de LCC, consulte Use Lifecycle Configurations with Studio Classic.

A continuación se muestra un ejemplo de script. Para modificar el script, sustituya AssumableRole y emr-account por sus valores correspondientes. El número de cuentas cruzadas está limitado a cinco.

El siguiente fragmento es un script bash de LCC de ejemplo que puede utilizar si la aplicación de Studio Classic y el clúster están en la misma cuenta:

#!/bin/bash set -eux FILE_DIRECTORY="/home/sagemaker-user/.sagemaker-analytics-configuration-DO_NOT_DELETE" FILE_NAME="emr-configurations-DO_NOT_DELETE.json" FILE="$FILE_DIRECTORY/$FILE_NAME" mkdir -p $FILE_DIRECTORY cat << 'EOF' > "$FILE" { "emr-execution-role-arns": { "123456789012": [ "arn:aws:iam::123456789012:role/emr-execution-role-1", "arn:aws:iam::123456789012:role/emr-execution-role-2" ] } } EOF

Si la aplicación de Studio Classic y los clústeres están en cuentas diferentes, especifique los roles de acceso de Amazon EMR que puede usar el clúster. En el siguiente ejemplo de política, 123456789012 es el ID de cuenta del clúster de Amazon EMR y 212121212121 y 434343434343 son los de las funciones de acceso a Amazon EMR permitidas. ARNs

#!/bin/bash set -eux FILE_DIRECTORY="/home/sagemaker-user/.sagemaker-analytics-configuration-DO_NOT_DELETE" FILE_NAME="emr-configurations-DO_NOT_DELETE.json" FILE="$FILE_DIRECTORY/$FILE_NAME" mkdir -p $FILE_DIRECTORY cat << 'EOF' > "$FILE" { "emr-execution-role-arns": { "123456789012": [ "arn:aws:iam::212121212121:role/emr-execution-role-1", "arn:aws:iam::434343434343:role/emr-execution-role-2" ] } } EOF # add your cross-account EMR access role FILE_DIRECTORY="/home/sagemaker-user/.cross-account-configuration-DO_NOT_DELETE" FILE_NAME="emr-discovery-iam-role-arns-DO_NOT_DELETE.json" FILE="$FILE_DIRECTORY/$FILE_NAME" mkdir -p $FILE_DIRECTORY cat << 'EOF' > "$FILE" { "123456789012": "arn:aws:iam::123456789012:role/cross-account-emr-access-role" } EOF