Configuración de roles de IAM para solicitudes de EMRFS a Amazon S3 - Amazon EMR

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 IAM para solicitudes de EMRFS a Amazon S3

nota

La capacidad de asignación de roles de EMRFS que se describe en esta página se mejoró con la introducción de Amazon S3 Access Grants en Amazon EMR 6.15.0. Para obtener una solución de control de acceso escalable para los datos en Amazon S3, recomendamos utilizar S3 Access Grants con Amazon EMR.

Cuando una aplicación que se ejecuta en un clúster hace referencia a los datos con el formato s3://mydata, Amazon EMR utiliza EMRFS para realizar la solicitud. Para interactuar con Amazon S3, EMRFS asume las políticas de permisos que se adjuntan a su perfil de instancia de Amazon EC2. El mismo perfil de instancia de Amazon EC2 se utiliza independientemente del usuario o grupo mediante la aplicación o la ubicación de los datos en Amazon S3.

Si tiene clústeres con varios usuarios que necesitan diferentes niveles de acceso a los datos en Amazon S3 a través de EMRFS, puede establecer una configuración de seguridad con los roles de IAM para EMRFS. EMRFS puede asumir un rol de servicio diferente para las instancias de EC2 del clúster en función del usuario o grupo que realiza la solicitud o en función de la ubicación de los datos en Amazon S3. Cada rol de IAM para EMRFS puede tener diferentes permisos para obtener acceso a los datos en Amazon S3. Para obtener más información acerca del rol de servicio para las instancias de EC2 del clúster, consulte Rol de servicio para instancias de EC2 del clúster (perfil de instancia de EC2).

Las versiones 5.10.0 y posteriores de Amazon EMR admiten el uso de roles de IAM personalizados para EMRFS. Si utiliza una versión anterior o tiene requisitos de autorización que los roles de IAM para EMRFS no son capaces de proporcionar, puede crear un proveedor de credenciales personalizado en su lugar. Para obtener más información, consulte Autorización de acceso a los datos de EMRFS en Amazon S3.

Cuando se usa una configuración de seguridad para especificar roles de IAM para EMRFS, debe definir asignaciones de roles. Cada asignación de roles especifica un rol de IAM que corresponde a los identificadores. Dichos identificadores determinan la base para el acceso a Amazon S3 a través de EMRFS. Los identificadores pueden ser usuarios, grupos o prefijos de Amazon S3 que indican una ubicación de datos. Cuando EMRFS realiza una solicitud a Amazon S3, y la solicitud coincide con la base para el acceso, EMRFS tiene las instancias de EC2 del clúster que asumen el rol de IAM correspondiente para la solicitud. Los permisos de IAM asociados a ese rol se aplican en lugar de los permisos de IAM adjuntos al rol de servicio para las instancias de EC2 del clúster.

Los usuarios y grupos de un mapeo de roles son usuarios y grupos de Hadoop que se definen en el clúster. Los usuarios y grupos se transfieren a EMRFS en el contexto de la aplicación que lo utiliza (por ejemplo, una suplantación de usuario de YARN). El prefijo de Amazon S3 puede ser un especificador de bucket de cualquier profundidad (por ejemplo, s3://amzn-s3-demo-bucket o s3://amzn-s3-demo-bucket/myproject/mydata). Puede especificar varios identificadores dentro de un único mapeo de roles, pero todos deben ser del mismo tipo.

importante

Los roles de IAM para EMRFS proporcionan aislamiento de la aplicación entre los usuarios de la aplicación. No proporcionan aislamiento de nivel del host entre los usuarios del host. Cualquier usuario con acceso a el clúster puede omitir el aislamiento para asumir cualquiera de los roles.

Cuando una aplicación del clúster realiza una solicitud a Amazon S3 a través de EMRFS, EMRFS evalúa las asignaciones de roles en el orden descendente en el que aparecen en la configuración de seguridad. Si una solicitud realizada a través de EMRFS no coincide con ningún identificador, EMRFS vuelve a usar el rol de servicio de las instancias de EC2 del clúster. Por este motivo, le recomendamos que las políticas asociadas a este rol limiten los permisos a Amazon S3. Para obtener más información, consulte Rol de servicio para instancias de EC2 del clúster (perfil de instancia de EC2).

Configurar roles de

Antes de definir una configuración de seguridad con roles de IAM para EMRFS, planifique y cree los roles y las políticas de permisos que va a adjuntar a los roles. Para obtener más información, consulte ¿Cómo funcionan los roles de instancias de Amazon EC2? en la Guía del usuario de IAM. Al crear políticas de permisos, le recomendamos que empiece con la política administrada asociada al rol de Amazon EMR predeterminado para EC2 y que luego edite esta política de acuerdo con sus necesidades. El nombre del rol predeterminado es EMR_EC2_DefaultRole y la política administrada predeterminada para editar es AmazonElasticMapReduceforEC2Role. Para obtener más información, consulte Rol de servicio para instancias de EC2 del clúster (perfil de instancia de EC2).

Actualización de políticas de confianza para asumir los permisos del rol

Cada rol que utiliza EMRFS debe tener una política de confianza que permita que el rol de Amazon EMR del clúster de EC2 lo asuma. Igualmente, el rol de Amazon EMR del clúster para EC2 debe tener una política de confianza que permita que los roles de EMRFS lo asuman.

En el ejemplo siguiente, la política de confianza se asocia a los roles para EMRFS. La instrucción permite que el rol de Amazon EMR predeterminado de EC2 asuma el rol. Por ejemplo, si tiene dos roles de EMRFS ficticios, EMRFSRole_First y EMRFSRole_Second, esta instrucción de la política se añade a las políticas de confianza para cada uno de ellos.

JSON
{ "Version":"2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "sts:AssumeRole" ], "Resource": "arn:aws:iam::123456789012:role/EMR_EC2_DefaultRole", "Sid": "AllowSTSAssumerole" } ] }

Además, en el ejemplo siguiente, se añade la instrucción de la política de confianza a EMR_EC2_DefaultRole para permitir que los dos roles de EMRFS ficticios la asuman.

JSON
{ "Version":"2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "sts:AssumeRole" ], "Resource": [ "arn:aws:iam::123456789012:role/EMRFSRole_First", "arn:aws:iam::123456789012:role/EMRFSRole_Second" ], "Sid": "AllowSTSAssumerole" } ] }
Para actualizar la política de confianza de un rol de IAM

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

  1. Elija Roles, escriba el nombre del rol en Search (Buscar) y, a continuación, seleccione su Role name (Nombre de rol).

  2. Seleccione Trust relationships (Relaciones de confianza), Edit trust relationship (Editar relaciones de confianza).

  3. Agregue una instrucción de confianza de acuerdo con Documento de política siguiendo las directrices anteriores y, a continuación, seleccione Actualizar la política de confianza.

Especificación de un rol como un usuario de claves

Si un rol permite el acceso a una ubicación en Amazon S3 que está cifrada mediante una AWS KMS key, asegúrese de que el rol se especifica como un usuario de claves. Esto proporciona al rol permiso para utilizar la clave de KMS. Para obtener más información, consulte Políticas de claves en AWS KMS en la Guía para desarrolladores de AWS Key Management Service .

Definición de una configuración de seguridad con roles de IAM para EMRFS

importante

Si no se aplica ninguno de los roles de IAM para EMRFS especificados, EMRFS vuelve a usar el rol de Amazon EMR para EC2. Considere la posibilidad de personalizar este rol para restringir los permisos en Amazon S3 según sea necesario para su aplicación y de especificar después este rol personalizado en lugar de EMR_EC2_DefaultRole cuando cree un clúster. Para obtener más información, consulte Personalización de roles de IAM con Amazon EMR y Cómo especificar roles de IAM personalizados al crear un clúster.

Para especificar roles de IAM para solicitudes de EMRFS a Amazon S3 con la consola
  1. Cree una configuración de seguridad que especifique los mapeos de roles:

    1. En la consola de Amazon EMR, seleccione Configuraciones de seguridad, Crear.

    2. Escriba un nombre para la configuración de seguridad en el campo Name (Nombre). Este nombre se utiliza para especificar la configuración de seguridad cuando crea un clúster.

    3. Elija Usar roles de IAM para solicitudes de EMRFS a Amazon S3.

    4. Seleccione el rol de IAM que desea aplicar, elija en la lista Base para el acceso un identificador de tipo (Usuarios, Grupos o Prefijos de S3) y especifique los identificadores correspondientes. Si utiliza varios identificadores, sepárelos con una coma y sin espacios. Para obtener más información acerca de cada tipo de identificador, consulte JSON configuration reference a continuación.

    5. Elija Add role (Añadir rol) para configurar mapeos de roles adicionales, tal y como se describe en el paso anterior.

    6. Defina otras opciones de configuración de seguridad según corresponda y elija Create (Crear). Para obtener más información, consulte Cree una configuración de seguridad con la consola Amazon EMR o con AWS CLI.

  2. Especifique la configuración de seguridad que creó anteriormente cuando cree un clúster. Para obtener más información, consulte Especificar una configuración de seguridad para un clúster de Amazon EMR.

Para especificar las funciones de IAM para las solicitudes de EMRFS a Amazon S3 mediante el AWS CLI
  1. Utilice el comando aws emr create-security-configuration, especificando un nombre para la configuración de seguridad y los detalles de configuración de seguridad en formato JSON.

    El comando de ejemplo que se muestra a continuación crea una configuración de seguridad con el nombre EMRFS_Roles_Security_Configuration. Se basa en una estructura JSON del archivo MyEmrfsSecConfig.json, que se guarda en el mismo directorio en el que se ejecuta el comando.

    aws emr create-security-configuration --name EMRFS_Roles_Security_Configuration --security-configuration file://MyEmrFsSecConfig.json.

    Utilice las siguientes directrices para la estructura del archivo MyEmrFsSecConfig.json. Puede especificar esta estructura junto con estructuras de otras opciones de configuración de seguridad. Para obtener más información, consulte Cree una configuración de seguridad con la consola Amazon EMR o con AWS CLI.

    A continuación, se muestra un ejemplo de fragmento de JSON para especificar roles de IAM personalizados para EMRFS dentro de una configuración de seguridad. Muestra las asignaciones de roles para los tres tipos de identificadores diferentes, seguidas de una referencia de parámetros.

    { "AuthorizationConfiguration": { "EmrFsConfiguration": { "RoleMappings": [{ "Role": "arn:aws:iam::123456789101:role/allow_EMRFS_access_for_user1", "IdentifierType": "User", "Identifiers": [ "user1" ] },{ "Role": "arn:aws:iam::123456789101:role/allow_EMRFS_access_to_demo_s3_buckets", "IdentifierType": "Prefix", "Identifiers": [ "s3://amzn-s3-demo-bucket1/","s3://amzn-s3-demo-bucket2/" ] },{ "Role": "arn:aws:iam::123456789101:role/allow_EMRFS_access_for_AdminGroup", "IdentifierType": "Group", "Identifiers": [ "AdminGroup" ] }] } } }
    Parámetro Description (Descripción)

    "AuthorizationConfiguration":

    Obligatorio.

    "EmrFsConfiguration":

    Obligatorio. Contiene asignaciones de roles.

      "RoleMappings":

    Obligatorio. Contiene una o más definiciones de asignación de roles. Las asignaciones de roles se evalúan de forma descendente por orden de aparición. Si una asignación de roles se evalúa como true en una invocación de datos de EMRFS en Amazon S3, no se evalúan más asignaciones de roles y EMRFS utiliza el rol de IAM especificado para la solicitud. Las asignaciones de roles tienen los siguientes parámetros obligatorios:

       "Role":

    Especifica el identificador de ARN de un rol de IAM en el formato arn:aws:iam::account-id:role/role-name. Este es el rol de IAM que asume Amazon EMR si la solicitud de EMRFS a Amazon S3 coincide con alguno de los Identifiers especificados.

       "IdentifierType":

    Puede ser uno de los siguientes:

    • "User" especifica que los identificadores son uno o más usuarios de Hadoop, que pueden ser usuarios de cuentas de Linux o entidades principales de Kerberos. Cuando la solicitud de EMRFS se origina en el usuario o los usuarios especificados, se asume el rol de IAM.

    • "Prefix" especifica que el identificador es una ubicación de Amazon S3. El rol de IAM se asume para las llamadas a la ubicación o ubicaciones con los prefijos especificados. Por ejemplo, el prefijo s3://amzn-s3-demo-bucket/ coincide con s3://amzn-s3-demo-bucket/mydir y s3://amzn-s3-demo-bucket/yetanotherdir.

    • "Group" especifica que los identificadores son uno o más grupos de Hadoop. El rol de IAM se asume si la solicitud proviene de un usuario del grupo o grupos especificados.

       "Identifiers":

    Especifica uno o más identificadores del tipo de identificador adecuado. Separe varios identificadores con comas sin espacios.

  2. Utilice el comando aws emr create-cluster para crear un clúster y especificar la configuración de seguridad que creó en el paso anterior.

    En el siguiente ejemplo, se crea un clúster con las aplicaciones de Hadoop básicas predeterminadas instaladas. El clúster utiliza la configuración de seguridad creada anteriormente como EMRFS_Roles_Security_Configuration y también utiliza un rol de Amazon EMR personalizado para EC2, EC2_Role_EMR_Restrict_S3, que se especifica mediante el argumento InstanceProfile del parámetro --ec2-attributes.

    nota

    Se incluyen caracteres de continuación de línea de Linux (\) para facilitar la lectura. Se pueden eliminar o utilizar en los comandos de Linux. En Windows, elimínelos o sustitúyalos por un signo de intercalación (^).

    aws emr create-cluster --name MyEmrFsS3RolesCluster \ --release-label emr-7.12.0 --ec2-attributes InstanceProfile=EC2_Role_EMR_Restrict_S3,KeyName=MyKey \ --instance-type m5.xlarge --instance-count 3 \ --security-configuration EMRFS_Roles_Security_Configuration