Configuración de los permisos para habilitar la publicación y la inicialización de aplicaciones de Amazon EMR desde SageMaker Studio
En esta sección, detallamos los roles y los permisos necesarios para enumerar las aplicaciones de EMR sin servidor de SageMaker Studio y conectarse a ellas, teniendo en cuenta los escenarios en los que Studio y las aplicaciones de EMR sin servidor se implementan en la misma cuenta de AWS o en cuentas diferentes.
Los roles a los que debe añadir los permisos necesarios dependen de si Studio y sus aplicaciones de EMR sin servidor residen en la misma cuenta de AWS (cuenta única) o en cuentas independientes (entre cuentas). Existen dos tipos de roles:
-
Roles de ejecución:
-
Roles de ejecución en tiempo de ejecución (roles de control de acceso basados en roles) utilizados por EMR sin servidor: son los roles de IAM que utilizan los entornos de ejecución de trabajos de EMR sin servidor para acceder a otros recursos y servicios de AWS necesarios durante el tiempo de ejecución, como Amazon S3 para el acceso a los datos, CloudWatch para el registro, el acceso al Catálogo de datos de AWS Glue u otros servicios en función de sus requisitos de carga de trabajo. Recomendamos crear estos roles en la cuenta en la que se ejecutan las aplicaciones de EMR sin servidor.
Para obtener más información sobre los roles de tiempo de ejecución, consulte Roles de tiempo de ejecución de trabajos en la Guía del usuario de EMR sin servidor.
nota
Puede definir varios roles de RBAC para su aplicación de EMR sin servidor. Estos roles pueden basarse en las responsabilidades y los niveles de acceso que necesitan los diferentes usuarios o grupos de su organización. Para obtener más información sobre los permisos de RBAC, consulte Prácticas recomendadas de seguridad para Amazon EMR sin servidor.
-
Rol de ejecución de SageMaker AI: es el rol de ejecución que permite a SageMaker AI realizar determinadas tareas, como leer datos de buckets de Amazon S3, escribir registros en CloudWatch y acceder a otros servicios de AWS que su flujo de trabajo pueda necesitar. El rol de ejecución de SageMaker AI también tiene el permiso especial denominado
iam:PassRole, que permite a SageMaker AI transferir roles de ejecución temporales en tiempo de ejecución a las aplicaciones de EMR sin servidor. Estos roles conceden a las aplicaciones de EMR sin servidor los permisos que necesitan para interactuar con otros recursos de AWS mientras se ejecutan.
-
-
Roles asumibles (también denominados roles de acceso al servicio):
-
Estos son los roles de IAM que el rol de ejecución de SageMaker AI puede asumir para realizar operaciones relacionadas con la administración de aplicaciones de EMR sin servidor. Estos roles definen los permisos y las políticas de acceso necesarios al enumerar aplicaciones de EMR sin servidor, administrarlas o conectarse a ellas. Por lo general, se utilizan en escenarios entre cuentas, en los que las aplicaciones de EMR sin servidor se encuentran en una cuenta de AWS diferente a la del dominio de SageMaker AI. Contar con un rol de IAM dedicado para sus aplicaciones de EMR sin servidor lo ayuda a seguir el principio de privilegios mínimos y garantiza que Amazon EMR solo tenga los permisos necesarios para ejecutar sus trabajos y, al mismo tiempo, proteger otros recursos de su cuenta de AWS.
-
Si comprende y configura estos roles correctamente, puede asegurarse de que SageMaker Studio tenga los permisos necesarios para interactuar con las aplicaciones de EMR sin servidor, independientemente de si están implementadas en la misma cuenta o en cuentas diferentes.
Cuenta única
Los siguientes diagramas ilustran los roles y los permisos necesarios para enumerar aplicaciones de EMR sin servidor desde Studio y conectarse a ellas desde Studio cuando las aplicaciones están implementadas en la misma cuenta de AWS.
Si sus aplicaciones de Amazon EMR y Studio están implementadas en la misma cuenta de AWS, siga estos pasos:
-
Paso 1: recuperación del ARN del bucket de Amazon S3 que utiliza para los orígenes de datos y el almacenamiento de datos de salida en la consola de Amazon S3
. Para aprender a buscar un bucket por su nombre, consulte Acceso y publicación de un bucket de Amazon S3. Para obtener más información sobre la creación de un bucket de Amazon S3, consulte Crear un bucket.
-
Paso 2: creación de al menos un rol de ejecución en tiempo de ejecución para su aplicación de EMR sin servidor en su cuenta (el
EMRServerlessRuntimeExecutionRoleAen el caso de uso Cuenta única anterior). Elija Política de confianza personalizada como entidad de confianza. Añada los permisos que necesite su trabajo. Como mínimo, necesita acceso total a un bucket de Amazon S3 y acceso de creación y lectura al catálogo de datos de AWS Glue.Para obtener instrucciones detalladas sobre cómo crear un nuevo rol de ejecución en tiempo de ejecución para sus aplicaciones de EMR sin servidor, siga estos pasos:
-
Vaya a la consola de IAM
. -
En el panel de navegación de la izquierda, seleccione Política y, a continuación, Crear política.
-
Añada los permisos necesarios para su rol de tiempo de ejecución, asigne un nombre a la política y, a continuación, elija Crear política.
Puede consultar Roles en tiempo de ejecución de trabajo para Amazon EMR sin servidor para ver ejemplos de políticas de tiempo de ejecución para un rol de ejecución de EMR sin servidor.
-
En el panel de navegación izquierdo, seleccione Roles y, a continuación, Crear rol.
-
En la página Crear rol, elija la opción Política de confianza personalizada como entidad de confianza.
-
Pegue el siguiente documento JSON en la sección Política de confianza personalizada y, a continuación, seleccione Siguiente.
-
En la página Agregar permisos, seleccione la política que creó anteriormente y elija Siguiente.
-
En la página Revisar, introduzca un nombre para el rol como
EMRServerlessAppRuntimeRoleAy una descripción opcional. -
Revise los detalles del rol y seleccione Crear rol.
Con estos roles, usted y sus compañeros de equipo pueden conectarse a la misma aplicación, y cada uno de ellos utilizará un rol en tiempo de ejecución con permisos que se ajusten a su nivel individual de acceso a los datos.
nota
Las sesiones de Spark funcionan de forma diferente. Las sesiones de Spark se aíslan en función del rol de ejecución utilizado de Studio, por lo que los usuarios con diferentes roles de ejecución tendrán sesiones de Spark independientes y aisladas. Además, si ha habilitado la identidad de origen en su dominio, las sesiones de Spark están aún más aisladas en las distintas identidades de origen.
-
-
Paso 3: recuperación del ARN del rol de ejecución de SageMaker AI utilizado en su espacio privado.
Para obtener más información sobre los espacios y los roles de ejecución de SageMaker AI, consulte Descripción de los permisos y roles de ejecución de espacio de dominio.
Para obtener más información sobre cómo obtener el ARN del rol de ejecución de SageMaker AI, consulte Obtención del rol de ejecución.
nota
Como alternativa, los usuarios nuevos de SageMaker AI pueden simplificar el proceso de configuración creando automáticamente un nuevo rol de ejecución de SageMaker AI con los permisos adecuados. En este caso, omita los pasos 3 y 4. En su lugar, los usuarios pueden:
-
Seleccionar la opción Configuración para organizaciones al crear un nuevo dominio en el menú Dominio de la barra de navegación izquierda de la consola de SageMaker AI
. -
Crear un nuevo rol de ejecución desde el menú Administrador de roles de la consola y, a continuación, asociar el rol a un dominio o perfil de usuario existente.
Al crear el rol, elija la opción Ejecutar aplicaciones de Studio EMR sin servidor en ¿Qué actividades de ML realizarán los usuarios? A continuación, indique el nombre del bucket de Amazon S3 y el rol de ejecución del trabajo en tiempo de ejecución que desea que utilice su aplicación de EMR sin servidor (paso 2).
El Administrador de roles de SageMaker añade automáticamente los permisos necesarios para ejecutar las aplicaciones de EMR sin servidor y conectarse a ellas para el nuevo rol de ejecución. Con el Administrador de roles de SageMaker, solo puede asignar un rol de tiempo de ejecución a su aplicación de EMR sin servidor y la aplicación debe ejecutarse en la misma cuenta en la que está implementado Studio, utilizando un rol de tiempo de ejecución creado en esa misma cuenta.
-
-
Paso 4: asociación de los siguientes permisos al rol de ejecución de SageMaker AI para acceder a la aplicación de EMR sin servidor.
-
Abra la consola de IAM en https://console.aws.amazon.com/sagemaker/
. -
Elija Roles y, a continuación, busque su rol de ejecución por su nombre en el campo Buscar. El nombre del rol se encuentra en la última parte del ARN, después de la última barra diagonal (/).
-
Siga el enlace a su rol.
-
Elija Agregar permisos y, a continuación, Crear política insertada.
-
En la pestaña JSON, añada los permisos de Amazon EMR sin servidor que permiten el acceso y las operaciones de EMR sin servidor. Para obtener más información sobre el documento de política, consulte EMR Serverless policies en Políticas de referencia. Sustituya
region,accountIDy losEMRServerlessAppRuntimeRolepasados por sus valores reales antes de copiar la lista de instrucciones a la política insertada de su rol.nota
Puede incluir en el permiso tantas cadenas de ARN de roles de tiempo de ejecución como necesite, separándolas con comas.
-
Elija Siguiente y, a continuación, proporcione un Nombre de política.
-
Seleccione Crear política.
-
Repita el paso Crear política insertada para añadir otra política insertada que conceda al rol permisos para actualizar los dominios, los perfiles de usuario y los espacios. Para obtener más información sobre el documento de la política
SageMakerUpdateResourcesPolicy, consulte Domain, user profile, and space update actions policy en Políticas de referencia. SustituyaregionyaccountIDpor sus valores reales antes de copiar la lista de instrucciones a la política insertada de su rol.
-
-
Paso 5:
asociación de la lista de roles en tiempo de ejecución a su perfil de usuario o dominio para que pueda navegar visualmente por la lista de roles y seleccionar el que desee utilizar al conectarse a una aplicación de EMR sin servidor desde JupyterLab. Puede utilizar la consola de SageMaker AI o el siguiente script. Posteriormente, todos los trabajos de Apache Spark o Apache Hive 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 seleccionado.
importante
Si no realiza este paso, no podrá conectar un cuaderno de JupyterLab a una aplicación de EMR sin servidor.
Entre cuentas
Los siguientes diagramas ilustran los roles y los permisos necesarios para enumerar aplicaciones de EMR sin servidor desde Studio y conectarse a ellas cuando Studio y las aplicaciones están implementados en cuentas diferentes cuentas de AWS.
Para obtener más información sobre cómo crear un rol en una cuenta de AWS, consulte https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_create_for-user.html Creación de un rol de IAM (consola).
Antes de comenzar:
-
Recupere el ARN del rol de ejecución de SageMaker AI que se ha utilizado en su espacio privado. Para obtener más información sobre los espacios y los roles de ejecución de SageMaker AI, consulte Descripción de los permisos y roles de ejecución de espacio de dominio. Para obtener más información sobre cómo obtener el ARN del rol de ejecución de SageMaker AI, consulte Obtención del rol de ejecución.
-
Recupere el ARN del bucket de Amazon S3 que utilizará para los orígenes de datos y el almacenamiento de datos de salida en la consola de Amazon S3
. Para obtener más información sobre la creación de un bucket de Amazon S3, consulte Crear un bucket. Para aprender a buscar un bucket por su nombre, consulte Acceso y publicación de un bucket de Amazon S3.
Si las aplicaciones de EMR sin servidor y Studio están implementadas en cuentas de AWS diferentes, debe configurar los permisos en ambas cuentas.
Cuenta de EMR sin servidor
Siga estos pasos para crear los roles y políticas necesarios en la cuenta en la que se ejecuta la aplicación de EMR sin servidor, también conocida como cuenta de confianza:
-
Paso 1: cree al menos un rol de ejecución de trabajos en tiempo de ejecución para su aplicación de EMR sin servidor en su cuenta (el
EMRServerlessRuntimeExecutionRoleBen el diagrama Entre cuentas anterior). Elija Política de confianza personalizada como entidad de confianza. Añada los permisos que necesite su trabajo. Como mínimo, necesita acceso total a un bucket de Amazon S3 y acceso de creación y lectura al catálogo de datos de AWS Glue.Para obtener instrucciones detalladas sobre cómo crear un nuevo rol de ejecución en tiempo de ejecución para sus aplicaciones de EMR sin servidor, siga estos pasos:
-
Vaya a la consola de IAM
. -
En el panel de navegación de la izquierda, seleccione Política y, a continuación, Crear política.
-
Añada los permisos necesarios para su rol de tiempo de ejecución, asigne un nombre a la política y, a continuación, elija Crear política.
Para ver ejemplos de políticas de tiempo de ejecución de un rol de tiempo de ejecución de EMR sin servidor, consulte Roles en tiempo de ejecución de trabajo para Amazon EMR sin servidor.
-
En el panel de navegación izquierdo, seleccione Roles y, a continuación, Crear rol.
-
En la página Crear rol, elija la opción Política de confianza personalizada como entidad de confianza.
-
Pegue el siguiente documento JSON en la sección Política de confianza personalizada y, a continuación, seleccione Siguiente.
-
En la página Agregar permisos, seleccione la política que creó anteriormente y elija Siguiente.
-
En la página Revisar, introduzca un nombre para el rol como
EMRServerlessAppRuntimeRoleBy una descripción opcional. -
Revise los detalles del rol y seleccione Crear rol.
Con estos roles, usted y sus compañeros de equipo pueden conectarse a la misma aplicación, y cada uno de ellos utilizará un rol en tiempo de ejecución con permisos que se ajusten a su nivel individual de acceso a los datos.
nota
Las sesiones de Spark funcionan de forma diferente. Las sesiones de Spark se aíslan en función del rol de ejecución utilizado en Studio, por lo que los usuarios con diferentes roles de ejecución tendrán sesiones de Spark independientes y aisladas. Además, si ha habilitado la identidad de origen en su dominio, las sesiones de Spark están aún más aisladas en las distintas identidades de origen.
-
-
Paso 2: creación de un rol de IAM personalizado denominado
AssumableRolecon la siguiente configuración:-
Permisos: conceda los permisos necesarios (políticas de Amazon EMR sin servidor) al
AssumableRolepara permitir el acceso a los recursos de EMR sin servidor. Este rol se conoce también como rol de acceso. -
Relación de confianza: configure la política de confianza
AssumableRolepara poder asumir el rol de ejecución (elSageMakerExecutionRoleen el diagrama Entre cuentas) desde la cuenta de Studio a la que se requiere acceso.
Al asumir el rol, Studio puede obtener acceso temporal a los permisos que necesita en la cuenta de EMR sin servidor.
Para obtener instrucciones detalladas sobre cómo crear un
AssumableRolenuevo en su cuenta de AWS de EMR sin servidor, siga estos pasos:-
Vaya a la consola de IAM
. -
En el panel de navegación de la izquierda, seleccione Política y, a continuación, Crear política.
-
En la pestaña JSON, añada los permisos de Amazon EMR sin servidor que permiten el acceso y las operaciones de EMR sin servidor. Para obtener más información sobre el documento de política, consulte EMR Serverless policies en Políticas de referencia. Sustituya
region,accountIDy losEMRServerlessAppRuntimeRolepasados por sus valores reales antes de copiar la lista de instrucciones a la política insertada de su rol.nota
Este
EMRServerlessAppRuntimeRolees el rol de ejecución en tiempo de ejecución del trabajo creado en el paso 1 (elEMRServerlessAppRuntimeRoleBen el diagrama Entre cuentas anterior). Puede incluir en el permiso tantas cadenas de ARN de roles de tiempo de ejecución como necesite, separándolas con comas. -
Elija Siguiente y, a continuación, proporcione un Nombre de política.
-
Seleccione Crear política.
-
En el panel de navegación izquierdo, seleccione Roles y, a continuación, Crear rol.
-
En la página Crear rol, elija la opción Política de confianza personalizada como entidad de confianza.
-
Pegue el siguiente documento JSON en la sección Política de confianza personalizada y, a continuación, seleccione Siguiente.
Sustituya
studio-accountpor el ID de cuenta de Studio yAmazonSageMaker-ExecutionRolepor el rol de ejecución que se utiliza en su espacio de JupyterLab. -
En la página Agregar permisos, añada el permiso
EMRServerlessAppRuntimeRoleBque ha creado en el paso 2 y, a continuación, seleccione Siguiente. -
En la página Revisar, introduzca un nombre para el rol como
AssumableRoley una descripción opcional. -
Revise los detalles del rol y seleccione Crear rol.
Para obtener más información sobre cómo crear un rol en una cuenta de AWS, consulte Creación de un rol de IAM (consola).
-
Cuenta de Studio
En la cuenta en la que está implementado Studio, también denominada cuenta de confianza, actualice el rol de ejecución de SageMaker AI para acceder a sus aplicaciones de EMR sin servidor con los permisos necesarios para acceder a los recursos de la cuenta de confianza.
-
Paso 1: recupere el ARN del rol de ejecución de SageMaker AI utilizado por su espacio.
Para obtener más información sobre los espacios y los roles de ejecución de SageMaker AI, consulte Descripción de los permisos y roles de ejecución de espacio de dominio.
Para obtener más información sobre cómo obtener el ARN del rol de ejecución de SageMaker AI, consulte Obtención del rol de ejecución.
-
Paso 2: asociación de los siguientes permisos al rol de ejecución de SageMaker AI para acceder a la aplicación de EMR sin servidor.
-
Abra la consola de IAM en https://console.aws.amazon.com/iam/
. -
Elija Roles y, a continuación, busque su rol de ejecución por su nombre en el campo Buscar. El nombre del rol se encuentra en la última parte del ARN, después de la última barra diagonal (/).
-
Siga el enlace a su rol.
-
Elija Agregar permisos y, a continuación, Crear política insertada.
-
En la pestaña JSON, añada la política insertada que concede al rol permisos para actualizar los dominios, los perfiles de usuario y los espacios. Para obtener más información sobre el documento de la política
SageMakerUpdateResourcesPolicy, consulte Domain, user profile, and space update actions policy en Políticas de referencia. SustituyaregionyaccountIDpor sus valores reales antes de copiar la lista de instrucciones a la política insertada de su rol. -
Elija Siguiente y, a continuación, proporcione un Nombre de política.
-
Seleccione Crear política.
-
Repita el paso Crear una política insertada para añadir otra política que conceda al rol de ejecución los permisos para asumir el
AssumableRoley luego realice las acciones permitidas por la política de acceso del rol.Sustituya
emr-accountpor el ID de cuenta Amazon EMR sin servidor yAssumableRolepor el nombre del rol asumible creado en la cuenta de Amazon EMR sin servidor.
-
-
Paso 3:
asocie la lista de roles en tiempo de ejecución a su dominio o perfil de usuario para que pueda navegar visualmente por la lista de roles y seleccionar el que desee utilizar al conectarse a una aplicación de EMR sin servidor desde JupyterLab. Puede utilizar la consola de SageMaker AI o el siguiente script. Posteriormente, todos los trabajos de Apache Spark o Apache Hive 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 seleccionado.
importante
Si no realiza este paso, no podrá conectar un cuaderno de JupyterLab a una aplicación de EMR sin servidor.
Políticas de referencia
-
Políticas de EMR sin servidor: esta política permite administrar aplicaciones de EMR sin servidor, lo que incluye enumerar, crear (con las etiquetas de SageMaker AI requeridas), iniciar, detener, obtener detalles, eliminar, acceder a puntos de conexión de Livy y obtener paneles de ejecución de trabajos. También permite transferir al servicio el rol de tiempo de ejecución de la aplicación de EMR sin servidor requerida.
-
EMRServerlessListApplications: permite la acción ListApplications en todos los recursos de EMR sin servidor de la región y cuenta de AWS especificadas. -
EMRServerlessPassRole: permite transferir los roles de tiempo de ejecución especificados a la cuenta de AWS proporcionada, pero solo cuando el rol se transfiere aemr-serverless.amazonaws.com service. -
EMRServerlessCreateApplicationAction: permite las acciones CreateApplication y TagResource en los recursos de EMR sin servidor de la región y la cuenta de AWS especificadas. Sin embargo, requiere que los recursos que se están creando o etiquetando tengan claves de etiqueta específicas (sagemaker:domain-arn,sagemaker:user-profile-arnysagemaker:space-arn) con valores no nulos. -
EMRServerlessDenyTaggingAction: las acciones TagResource y UntagResource en los recursos sin servidor de EMR en la región y la cuenta de AWS especificadas si los recursos no tienen establecida ninguna de las claves de etiqueta (sagemaker:domain-arn,sagemaker:user-profile-arnysagemaker:space-arn). -
EMRServerlessActions: permite diversas acciones (StartApplication,StopApplication,GetApplication,DeleteApplication,AccessLivyEndpointsyGetDashboardForJobRun) en los recursos de EMR sin servidor, pero solo si los recursos tienen establecidas las claves de etiqueta especificadas (sagemaker:domain-arn,sagemaker:user-profile-arnysagemaker:space-arn) con valores no nulos.
La política de IAM definida en el documento JSON proporcionado concede esos permisos, pero limita ese acceso a la presencia de etiquetas de SageMaker AI específicas en las aplicaciones de EMR sin servidor para garantizar que solo se puedan administrar los recursos de Amazon EMR sin servidor asociados a un dominio, perfil de usuario y espacio de SageMaker AI determinados.
-
-
Política de acciones de actualización de dominios, perfiles de usuario y espacios: la siguiente política concede permisos para actualizar los dominios, perfiles de usuario y espacios de SageMaker AI dentro de la región y la cuenta de AWS especificadas.