Uso de Amazon S3 Access Grants con Amazon EMR - 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.

Uso de Amazon S3 Access Grants con Amazon EMR

Información general de S3 Access Grants para Amazon EMR

Con las versiones 6.15.0 y posteriores de Amazon EMR, Amazon S3 Access Grants proporciona una solución de control de acceso escalable que puede utilizar para aumentar el acceso a los datos de Amazon S3 desde Amazon EMR. Si cuenta con una configuración de permisos compleja o amplia de datos de S3, puede utilizar las concesiones de acceso a fin de escalar los permisos de datos de S3 para usuarios, grupos, roles y aplicaciones de un clúster.

Utilice S3 Access Grants para incrementar el acceso a los datos de Amazon S3, más allá de los permisos que conceden el rol de tiempo de ejecución o los roles de IAM asociados a las identidades con acceso al clúster de EMR. Para obtener más información, consulte Administración del acceso con S3 Access Grants en la Guía del usuario de Amazon S3.

Para conocer los pasos para utilizar S3 Access Grants con otras implementaciones de Amazon EMR, consulte la siguiente documentación:

Cómo funciona Amazon EMR con S3 Access Grants

Las versiones 6.15.0 y posteriores de Amazon EMR proporcionan una integración nativa con S3 Access Grants. Puede habilitar S3 Access Grants en Amazon EMR y ejecutar trabajos de Spark. Cuando un trabajo de Spark solicita datos de S3, Amazon S3 proporciona credenciales temporales que se limitan al bucket, al prefijo o al objeto.

A continuación, se ofrece información general de alto nivel sobre cómo Amazon EMR obtiene acceso a los datos protegidos por S3 Access Grants.

Cómo funciona Amazon EMR con S3 Access Grants
  1. Un usuario envía un trabajo de Spark de Amazon EMR que utiliza datos almacenados en Amazon S3.

  2. Amazon EMR solicita a S3 Access Grants que permita el acceso al bucket, al prefijo o al objeto en nombre de ese usuario.

  3. Amazon S3 devuelve credenciales temporales en forma de token AWS Security Token Service (STS) para el usuario. El token tiene el alcance para acceder al bucket, al prefijo o al objeto de S3.

  4. Amazon EMR utiliza el token de STS para recuperar datos de S3.

  5. Amazon EMR recibe los datos de S3 y devuelve los resultados al usuario.

Consideraciones sobre el uso de S3 Access Grants con Amazon EMR

Tenga en cuenta los siguientes comportamientos y limitaciones cuando utilice S3 Access Grants con Amazon EMR.

Compatibilidad de características

  • S3 Access Grants es compatible con las versiones 6.15.0 y posteriores de Amazon EMR.

  • Spark es el único motor de consultas compatible cuando se utiliza S3 Access Grants con Amazon EMR.

  • Delta Lake y Hudi son los únicos formatos de tabla abierta compatibles cuando se utiliza S3 Access Grants con Amazon EMR.

  • Las siguientes capacidades de Amazon EMR no son compatibles para su uso con S3 Access Grants:

    • Tablas de Apache Iceberg

    • Autenticación nativa de LDAP

    • Autenticación nativa de Apache Ranger

    • AWS CLI solicitudes a Amazon S3 que utilizan funciones de IAM

    • Acceso a S3 mediante el protocolo de código abierto de S3A

  • La opción fallbackToIAM no es compatible con los clústeres de EMR que utilizan la propagación de identidades de confianza con IAM Identity Center.

  • S3 Access Grants con AWS Lake Formation solo es compatible con los clústeres de Amazon EMR que se ejecutan en Amazon EC2.

Consideraciones sobre el comportamiento

  • La integración nativa de Apache Ranger con Amazon EMR incluye una funcionalidad congruente con S3 Access Grants como parte del complemento Apache Ranger S3 de EMRFS. Si utiliza Apache Ranger para un control de acceso detallado (FGAC), recomendamos utilizar ese complemento en lugar de S3 Access Grants.

  • Amazon EMR proporciona una caché de credenciales en EMRFS para garantizar que un usuario no necesite realizar solicitudes repetidas de las mismas credenciales en un trabajo de Spark. Por lo tanto, Amazon EMR siempre solicita el privilegio de nivel predeterminado cuando solicita credenciales. Para obtener más información, consulte Solicitud de acceso a datos de S3 en la Guía del usuario de Amazon S3.

  • En el caso de que un usuario realice una acción que no sea compatible con S3 Access Grants, Amazon EMR está configurado para utilizar el rol de IAM que se especificó para la ejecución del trabajo. Para obtener más información, consulte Alternativa de roles de IAM.

Lanzamiento de un clúster de Amazon EMR con S3 Access Grants

En esta sección, se describe cómo lanzar un clúster de EMR que se ejecute en Amazon EC2 y utilice S3 Access Grants para administrar el acceso a los datos en Amazon S3. Para conocer los pasos para utilizar S3 Access Grants con otras implementaciones de Amazon EMR, consulte la siguiente documentación:

Realice los siguientes pasos a fin de lanzar un clúster de EMR que se ejecute en Amazon EC2 y utilice S3 Access Grants para administrar el acceso a los datos en Amazon S3.

  1. Configure un rol de ejecución de trabajos para el clúster de EMR. Incluya los permisos de IAM necesarios para ejecutar los trabajos de Spark, s3:GetDataAccess y s3:GetAccessGrantsInstanceForPrefix:

    { "Effect": "Allow", "Action": [ "s3:GetDataAccess", "s3:GetAccessGrantsInstanceForPrefix" ], "Resource": [ //LIST ALL INSTANCE ARNS THAT THE ROLE IS ALLOWED TO QUERY "arn:aws_partition:s3:Region:account-id1:access-grants/default", "arn:aws_partition:s3:Region:account-id2:access-grants/default" ] }
    nota

    Con Amazon EMR, S3 Access Grants aumenta los permisos que se configuran en los roles de IAM. Si los roles de IAM que especifica para la ejecución de trabajos contienen permisos para acceder directamente a S3, es posible que los usuarios puedan acceder a más datos además de los que usted define en S3 Access Grants.

  2. A continuación, utilice AWS CLI para crear un clúster con Amazon EMR 6.15 o superior y la emrfs-site clasificación para habilitar S3 Access Grants, similar al ejemplo siguiente:

    aws emr create-cluster --release-label emr-6.15.0 \ --instance-count 3 \ --instance-type m5.xlarge \ --configurations '[{"Classification":"emrfs-site", "Properties":{"fs.s3.s3AccessGrants.enabled":"true", "fs.s3.s3AccessGrants.fallbackToIAM":"false"}}]'

S3 Access Grants con AWS Lake Formation

Si utiliza Amazon EMR con la integración de AWS Lake Formation, puede utilizar Amazon S3 Access Grants para el acceso directo o tabular a los datos de Amazon S3.

nota

S3 Access Grants with solo AWS Lake Formation es compatible con los clústeres de Amazon EMR que se ejecutan en Amazon EC2.

Acceso directo

El acceso directo implica todas las llamadas para acceder a los datos de S3 que no invoquen la API del servicio AWS Glue que Lake Formation utiliza como metaalmacén con Amazon EMR, por ejemplo, para llamar a: spark.read

spark.read.csv("s3://...")

Cuando utiliza S3 Access Grants con AWS Lake Formation Amazon EMR, todos los patrones de acceso directo pasan por S3 Access Grants para obtener credenciales de S3 temporales.

Acceso tabular

El acceso tabular se produce cuando Lake Formation invoca la API del almacén de metadatos para acceder a su ubicación de S3, por ejemplo, para consultar datos de tablas:

spark.sql("select * from test_tbl")

Cuando utiliza S3 Access Grants con AWS Lake Formation Amazon EMR, todos los patrones de acceso tabulares pasan por Lake Formation.

Alternativa de roles de IAM

Si un usuario intenta realizar una acción que no es compatible con S3 Access Grants, Amazon EMR está configurado para utilizar de forma predeterminada el rol de IAM que se especificó para la ejecución de trabajos cuando la configuración fallbackToIAM es true. Esto permite a los usuarios recurrir al rol de ejecución de trabajos para proporcionar credenciales de acceso a S3 en situaciones que S3 Access Grants no cubre.

Si fallbackToIAM está habilitado, los usuarios pueden acceder a los datos que permite Access Grant. Si no hay un token de S3 Access Grants para los datos de destino, Amazon EMR comprueba el permiso en su rol de ejecución de trabajos.

nota

Recomendamos probar los permisos de acceso con la configuración fallbackToIAM habilitada, incluso si planea deshabilitar la opción para las cargas de trabajo de producción. Con los trabajos de Spark, hay otras formas en las que los usuarios pueden acceder a todos los conjuntos de permisos con sus credenciales de IAM. Cuando se habilitan en los clústeres de EMR, las concesiones de S3 permiten que los trabajos de Spark accedan a las ubicaciones de S3. Debe asegurarse de proteger estas ubicaciones de S3 del acceso externo a EMRFS. Por ejemplo, debe proteger las ubicaciones de S3 del acceso de los clientes de S3 que se utilizan en las computadoras portátiles o de las aplicaciones que no son compatibles con S3 Access Grants, como Hive o Presto.