Configurar IAM funciones para EMRFS las solicitudes 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.

Configurar IAM funciones para EMRFS las solicitudes a Amazon S3

nota

La capacidad de asignación de EMRFS roles descrita 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 sus datos en Amazon S3, le recomendamos que utilice S3 Access Grants con Amazon EMR.

Cuando una aplicación que se ejecuta en un clúster hace referencia a los datos mediante el s3://mydata formato que 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 EC2 instancia de Amazon. Se utiliza el mismo perfil de EC2 instancia de Amazon independientemente del usuario o grupo que ejecute la aplicación o de la ubicación de los datos en Amazon S3.

Si tiene un clúster con varios usuarios que necesitan diferentes niveles de acceso a los datos en Amazon S3EMRFS, puede configurar una configuración de seguridad con IAM funciones paraEMRFS. EMRFSpuede asumir una función de servicio diferente para EC2 las instancias de clúster en función del usuario o grupo que realiza la solicitud o de la ubicación de los datos en Amazon S3. Cada IAM rol EMRFS puede tener permisos diferentes para el acceso a los datos en Amazon S3. Para obtener más información sobre la función de servicio para EC2 las instancias de clúster, consulteFunción de servicio para EC2 instancias de clúster (perfil de EC2 instancia).

El uso de IAM funciones personalizadas para EMRFS está permitido en EMR las versiones 5.10.0 y posteriores de Amazon. Si utilizas una versión anterior o tienes requisitos que van más allá de los IAM roles que debes EMRFS proporcionar, puedes crear un proveedor de credenciales personalizado en su lugar. Para obtener más información, consulte Autorizar el acceso a EMRFS los datos en Amazon S3.

Cuando utiliza una configuración de seguridad para especificar IAM las funcionesEMRFS, configura las asignaciones de funciones. Cada asignación de roles especifica un IAM rol que corresponde a los identificadores. Estos identificadores determinan la base del acceso a Amazon S3 a través EMRFS de. 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, si la solicitud coincide con la base de acceso, EMRFS las EC2 instancias de clúster asumen la IAM función correspondiente a la solicitud. Para las IAM EC2 instancias de clúster, se aplican los IAM permisos asociados a esa función en lugar de los permisos adjuntos a la función de servicio.

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 los grupos se transfieren EMRFS en el contexto de la aplicación que los utiliza (por ejemplo, la suplantación YARN de un usuario). El prefijo de Amazon S3 puede ser un especificador de bucket de cualquier profundidad (por ejemplo, s3://mybucket o s3://mybucket/myproject/mydata). Puede especificar varios identificadores dentro de un único mapeo de roles, pero todos deben ser del mismo tipo.

importante

IAMfunciones para EMRFS proporcionar aislamiento a nivel de 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 de clúster realiza una solicitud a Amazon S3EMRFS, EMRFS evalúa las asignaciones de funciones en el orden descendente en que aparecen en la configuración de seguridad. Si una solicitud realizada EMRFS no coincide con ningún identificador, EMRFS se recurre al rol de servicio para las instancias de clúster. EC2 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 Función de servicio para EC2 instancias de clúster (perfil de EC2 instancia).

Configurar roles de

Antes de configurar una configuración de seguridad con IAM funcionesEMRFS, planifique y cree las funciones y las políticas de permisos para asociarlas a las funciones. Para obtener más información, consulta ¿Cómo funcionan los roles de EC2 las instancias? en la Guía IAM del usuario. Al crear políticas de permisos, te recomendamos que comiences con la política gestionada adjunta a la EMR función predeterminada de Amazon para yEC2, a continuación, la edites según tus requisitos. 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 Función de servicio para EC2 instancias de clúster (perfil de EC2 instancia).

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

Cada función que EMRFS utilice debe tener una política de confianza que permita que la EMR función Amazon del clúster EC2 la asuma. Del mismo modo, la EMR función de Amazon del clúster EC2 debe tener una política de confianza que permita a EMRFS los roles asumirla.

El siguiente ejemplo de política de confianza se adjunta a los roles deEMRFS. La declaración permite que el EMR rol predeterminado de EC2 Amazon asuma el rol. Por ejemplo, si tiene dos EMRFS funciones ficticias EMRFSRole_First yEMRFSRole_Second, esta declaración de política se añade a las políticas de confianza de cada una de ellas.

{ "Version":"2012-10-17", "Statement":[ { "Effect":"Allow", "Principal":{ "AWS":"arn:aws:iam::AWSAcctID:role/EMR_EC2_DefaultRole" }, "Action":"sts:AssumeRole" } ] }

Además, el siguiente ejemplo de declaración de política de confianza se añade a la EMR_EC2_DefaultRole para permitir que las dos EMRFS funciones ficticias la asuman.

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

Abra la IAM consola 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 de Amazon S3 cifrada mediante un AWS KMS key, asegúrese de que el rol esté especificado como usuario clave. Esto le da permiso al rol para usar la KMS clave. Para obtener más información, consulte Políticas clave en AWS KMS en la AWS Key Management Service Guía para desarrolladores.

Configure una configuración de seguridad con IAM funciones para EMRFS

importante

Si no se aplica ninguno de los IAM roles EMRFS que especifiquesEMRFS, recurre al EMR rol de Amazon paraEC2. 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 Personaliza IAM los roles y Especifique IAM funciones personalizadas al crear un clúster.

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

    1. En la EMR consola de Amazon, selecciona 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 IAM roles para EMRFS las solicitudes a Amazon S3.

    4. Seleccione el IAMrol que desee aplicar y, en Base del acceso, seleccione un tipo de identificador (usuarios, grupos o prefijos S3) de la lista e introduzca 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 Creación de una configuración de seguridad.

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

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

    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 JSON estructura del archivoMyEmrfsSecConfig.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 Creación de una configuración de seguridad.

    El siguiente es un JSON fragmento de ejemplo para especificar IAM funciones personalizadas 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_MyBuckets", "IdentifierType": "Prefix", "Identifiers": [ "s3://MyBucket/","s3://MyOtherBucket/" ] },{ "Role": "arn:aws:iam::123456789101:role/allow_EMRFS_access_for_AdminGroup", "IdentifierType": "Group", "Identifiers": [ "AdminGroup" ] }] } } }
    Parámetro 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 verdadera para una EMRFS llamada de datos en Amazon S3, no se evalúa ninguna otra asignación de roles y se EMRFS usa el IAM rol especificado para la solicitud. Las asignaciones de roles tienen los siguientes parámetros obligatorios:

       "Role":

    Especifica el ARN identificador de un IAM rol en el formato. arn:aws:iam::account-id:role/role-name Esta es la IAM función que EMR asume Amazon si la EMRFS solicitud a Amazon S3 coincide con alguna de las Identifiers especificadas.

       "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 EMRFS solicitud se origina en el usuario o los usuarios especificados, se asume la IAM función.

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

    • "Group" especifica que los identificadores son uno o más grupos de Hadoop. La IAM función 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 usa la configuración de seguridad creada anteriormente EMRFS_Roles_Security_Configuration y también usa un EMR rol de Amazon personalizado para EC2EC2_Role_EMR_Restrict_S3,, que se especifica mediante el InstanceProfile argumento del --ec2-attributes parámetro.

    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.2.0 --ec2-attributes InstanceProfile=EC2_Role_EMR_Restrict_S3,KeyName=MyKey \ --instance-type m5.xlarge --instance-count 3 \ --security-configuration EMRFS_Roles_Security_Configuration