Configurar las funciones IAM de tiempo de ejecución para el acceso a los EMR clústeres de Amazon en Studio - Amazon SageMaker

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.

Configurar las funciones IAM de tiempo de ejecución para el acceso a los EMR clústeres de Amazon en Studio

Cuando te conectas a un EMR clúster de Amazon desde tus blocs de notas de Studio o Studio Classic, puedes explorar visualmente una lista de IAM funciones, conocidas como funciones de tiempo de ejecución, y seleccionar una sobre la marcha. Posteriormente, todos los trabajos de Apache Spark, Apache Hive o Presto creados desde su portátil acceden únicamente a los datos y recursos permitidos por las políticas asociadas a la función 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 función, tus compañeros de equipo y tú podéis conectaros al mismo clúster, cada uno de ellos con un rol en tiempo de ejecución con permisos que se ajusten a vuestro 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 desde EMR Amazon SageMaker Studio Classic. Esta entrada de blog le ayuda a configurar un entorno de demostración en el que puede intentar utilizar funciones de tiempo de ejecución preconfiguradas para conectarse a los EMR clústeres de Amazon.

Requisitos previos

Antes de empezar, asegúrese de 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 se encuentran fuera de la cuenta de Studio. En la siguiente imagen se muestran tres formas diferentes de asignar el EMR clúster, los datos e incluso la función de ejecución en EMR tiempo de ejecución de Amazon entre las cuentas de Studio y de datos:

La autenticación de IAM roles en tiempo de ejecución admite escenarios multicuentas.

En la opción 1, el EMR clúster de Amazon y la función EMR de ejecución de Amazon Runtime se encuentran en una cuenta de datos independiente de la cuenta de Studio. Usted define una política de permisos de función de EMR acceso a Amazon independiente (también denominadaAssumable role) que concede permiso a la función de ejecución de Studio o Studio Classic para que asuma la función de EMR acceso a Amazon. A continuación, el rol de EMR acceso a Amazon llama a Amazon EMR API GetClusterSessionCredentials en nombre de tu rol de ejecución de Studio o Studio Classic, lo que te da acceso al clúster.

En la opción 2, tu EMR clúster de Amazon y tu función de ejecución en EMR tiempo de ejecución de Amazon están en tu cuenta de Studio. Tu rol de ejecución de Studio tiene permiso para usar Amazon EMR API GetClusterSessionCredentials para acceder a tu clúster. Para acceder al bucket de Amazon S3, otorgue al rol de EMR ejecución de Amazon permisos de acceso multicuenta al bucket de Amazon S3; usted otorga estos permisos dentro de su política de bucket de Amazon S3.

En la opción 3, tus EMR clústeres de Amazon están en tu cuenta de Studio y la función de ejecución en EMR tiempo de ejecución de Amazon está en la cuenta de datos. Su rol de ejecución de Studio o Studio Classic tiene permiso para usar Amazon EMR API GetClusterSessionCredentials para acceder a su clúster. Añada la función EMR de ejecución de Amazon Runtime a la configuración de la función de ejecuciónJSON. A continuación, 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 JSON archivo de configuración de la función de ejecución, consulteCarga previamente tus funciones de ejecución en Studio o Studio Classic.

Configura Studio para usar IAM roles de tiempo de ejecución

Para establecer la autenticación de roles en tiempo de ejecución para sus EMR clústeres de Amazon, configure las IAM políticas necesarias y las mejoras de red y usabilidad. La configuración depende de si gestionas acuerdos entre cuentas si tus EMR clústeres de Amazon, la función de EMR ejecución de Amazon Runtime o ambos residen fuera de tu cuenta de Studio. La siguiente sección te explica las políticas que debes instalar, cómo configurar la red para permitir el tráfico entre cuentas cruzadas y el archivo de configuración local que debes configurar para automatizar tu EMR conexión a Amazon.

Configura la autenticación de roles en tiempo de ejecución cuando tu EMR clúster de Amazon y Studio estén en la misma cuenta

Si tu EMR clúster de Amazon reside en tu cuenta de Studio, sigue estos pasos para añadir los permisos necesarios a tu política de ejecución de Studio:

  1. Añade la IAM política necesaria para conectarte a los EMR clústeres de Amazon. Para obtener más información, consulte Configurar listados de EMR clústeres de Amazon.

  2. Concede permiso para llamar a Amazon EMR API GetClusterSessionCredentials cuando pases una o más funciones de ejecución en EMR tiempo de ejecución de Amazon permitidas especificadas en la política.

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

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

  5. Carga previamente tus IAM roles para que puedas seleccionar el rol que usarás cuando te conectes a tu EMR clúster de Amazon. Para obtener más información sobre cómo precargar sus IAM funciones, consulte. Carga previamente tus funciones de ejecución en Studio o Studio Classic

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

{ "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*" ] } } } ] }

Configura la autenticación de roles en tiempo de ejecución cuando tu clúster y Studio estén en cuentas diferentes

Si tu EMR clúster de Amazon no está en tu cuenta de Studio, deja que tu rol de SageMaker ejecución asuma el rol de EMR acceso multicuenta de Amazon para que puedas conectarte al clúster. Complete los siguientes pasos para configurar su configuración multicuenta:

  1. Cree SageMaker la política de permisos de la función de ejecución para que la función de ejecución pueda asumir la función de EMR acceso a Amazon. La siguiente política es un ejemplo:

    { "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. Crea la política de confianza para especificar en qué cuentas de Studio IDs se confía para asumir la función de EMR acceso a Amazon. La siguiente política es un ejemplo:

    { "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 de la función de EMR acceso de Amazon, que conceda a la función EMR de ejecución en tiempo de ejecución de Amazon los permisos necesarios para llevar a cabo las tareas previstas en el clúster. Configure la función de EMR acceso de Amazon para llamarla API GetClusterSessionCredentials con las funciones de ejecución en EMR tiempo de ejecución de Amazon especificadas en la política de permisos de la función de acceso. La siguiente política es un ejemplo:

    { "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. Configura la red multicuenta para que el tráfico pueda ir y venir entre tus cuentas. Para obtener instrucciones guiadas, consulte Configura el acceso a la red para tu EMR clúster de AmazonConfigurar el. Los pasos de esta sección le ayudan a realizar las siguientes tareas:

    1. VPC-compara tu cuenta de Studio y tu EMR cuenta de Amazon para establecer una conexión.

    2. Añade rutas manualmente a las tablas de rutas de las subredes privadas de ambas cuentas. Esto permite la creación y conexión de EMR clústeres de Amazon desde la cuenta de Studio a la subred privada de la cuenta remota.

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

  5. Carga previamente tus roles IAM de tiempo de ejecución para poder seleccionar el rol que usarás cuando te conectes a tu EMR clúster de Amazon. Para obtener más información sobre cómo precargar sus IAM funciones, consulte. Carga previamente tus funciones de ejecución en Studio o Studio Classic

Configurar el 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 Integrar Amazon EMR with AWS Lake Formation.

Carga previamente tus funciones de ejecución en Studio o Studio Classic

Puedes precargar tus roles IAM de tiempo de ejecución para poder seleccionar el rol que usarás cuando te conectes a tu EMR clúster de Amazon. Los usuarios de JupyterLab In Studio pueden usar la SageMaker consola o el script proporcionado.

Preload runtime roles in JupyterLab using the SageMaker console

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

  1. Navegue hasta la SageMaker consola 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 el rol de SageMaker ejecución 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 el rol de SageMaker ejecución cuyos permisos has actualizado. En la pestaña Configuraciones de aplicaciones, navegue hasta la JupyterLabsección.

  3. Elija Editar y añada su función ARNs de acceso (función asumible) y la función de ejecución en tiempo de ejecución EMR sin servidor.

  4. Elija Enviar.

La próxima vez que te conectes a un EMR servidor de Amazon, los roles de tiempo de ejecución deberían aparecer en un menú desplegable para su selección.

Preload runtime roles in JupyterLab using a Python script

En una JupyterLab aplicación iniciada desde un espacio con el rol de SageMaker ejecución cuyos permisos has actualizado, ejecuta el siguiente comando en una terminal. Sustituya domainIDuser-profile-name,emr-accountID, y EMRServiceRole por sus valores adecuados. Este fragmento de código actualiza la configuración del perfil de usuario (client.update_userprofile) dentro de un SageMaker dominio en un caso de uso entre cuentas. En concreto, establece las funciones de servicio de AmazonEMR. También permite que la JupyterLab aplicación asuma una IAM función determinada (AssumableRoleoAccessRole) para ejecutar Amazon EMR dentro de la EMR cuenta de Amazon.

Como alternativa, client.update_domain úsala para actualizar la configuración del dominio si tu espacio utiliza una función de ejecución establecida a nivel de dominio.

import botocore.session import json sess = botocore.session.get_session() client = sess.create_client('sagemaker') client.update_userprofile( DomainId="domainID", UserProfileName="user-profile-name", DefaultUserSettings={ '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 valor de AccessRole (AssumableRole) a su rol SageMaker de ejecución. Lo carga ARN el servidor de Jupyter en el momento del lanzamiento. La función de ejecución utilizada por Studio asume esa función multicuenta para detectar los EMR clústeres de Amazon de la cuenta de confianza y conectarse a ellos.

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

El siguiente es un LCC script de ejemplo. Para modificar el script, sustituya AssumableRole y emr-account por sus valores respectivos. El número de cuentas cruzadas está limitado a cinco.

El siguiente fragmento es un ejemplo de script LCC bash que puede aplicar si la aplicación y el clúster de Studio Classic 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 Studio Classic y los clústeres están en cuentas diferentes, especifique los roles de EMR acceso de Amazon que pueden usar el clúster. En el siguiente ejemplo de política, 123456789012 es el ID de la cuenta del EMR clúster de Amazon y 212121212121 y 434343434343 son los de las funciones de acceso a Amazon permitidas. ARNs EMR

#!/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