Habilitación de Lake Formation con Amazon EMR - Amazon EMR

Habilitación de Lake Formation con Amazon EMR

Con Amazon EMR 6.15.0 y versiones posteriores, cuando ejecuta trabajos de Spark en clústeres de Amazon EMR en EC2 que acceden a los datos del catálogo de datos de AWS Glue, puede utilizar AWS Lake Formation para aplicar permisos a nivel de tabla, fila, columna y celda en tablas basadas en Hudi, Iceberg o Delta Lake.

En esta sección, explicamos cómo crear una configuración de seguridad y cómo configurar Lake Formation para que funcione con Amazon EMR. También explicamos cómo lanzar un clúster con la configuración de seguridad que creó para Lake Formation.

Paso 1: configuración de un rol en tiempo de ejecución para el clúster de EMR

Para usar un rol en tiempo de ejecución para el clúster de EMR, debe crear una configuración de seguridad. Con una configuración de seguridad, puede aplicar opciones consistentes de seguridad, autorización y autenticación en todos sus clústeres.

  1. Cree un archivo denominado lf-runtime-roles-sec-cfg.json con la siguiente configuración de seguridad.

    { "AuthorizationConfiguration": { "IAMConfiguration": { "EnableApplicationScopedIAMRole": true, "ApplicationScopedIAMRoleConfiguration": { "PropagateSourceIdentity": true } }, "LakeFormationConfiguration": { "AuthorizedSessionTagValue": "Amazon EMR" } }, "EncryptionConfiguration": { "EnableInTransitEncryption": true, "InTransitEncryptionConfiguration": { "TLSCertificateConfiguration": {<certificate-configuration>} } } }
  2. A continuación, para asegurarse de que la etiqueta de sesión puede autorizar Lake Formation, establezca la propiedad LakeFormationConfiguration/AuthorizedSessionTagValue en Amazon EMR.

  3. Use el siguiente comando para crear la configuración de seguridad de Amazon EMR.

    aws emr create-security-configuration \ --name 'iamconfig-with-iam-lf' \ --security-configuration file://lf-runtime-roles-sec-cfg.json

    Como alternativa, puede utilizar la consola de Amazon EMR para crear una configuración de seguridad con ajustes personalizados.

Paso 2: lanzar un clúster de Amazon EMR

Ahora tiene todo listo para lanzar un clúster de EMR con la configuración de seguridad que creó en el paso anterior. Para obtener más información sobre las configuraciones de seguridad, consulte Uso de configuraciones de seguridad para configurar la seguridad del clúster de Amazon EMR y Roles en tiempo de ejecución para los pasos de Amazon EMR.

Paso 3a: configurar permisos a nivel de tabla basados en Lake Formation con los roles de tiempo de ejecución de Amazon EMR

Si no necesita un control de acceso detallado a nivel de columna, fila o celda, puede configurar permisos a nivel de tabla con el catálogo de datos de Glue. Para habilitar el acceso a nivel de tabla, vaya a la consola de AWS Lake Formation y seleccione la opción Configuración de integración de aplicaciones en la sección Administración de la barra lateral. Luego, habilite la siguiente opción y elija Guardar:

Permitir que motores externos accedan a datos en las ubicaciones de Amazon S3 con acceso total a las tablas

Filtrado de datos externos de Lake Formation

Paso 3b: configurar permisos a nivel de columna, fila o celda basados en Lake Formation con los roles de tiempo de ejecución de Amazon EMR

Para aplicar permisos a nivel de tabla y columna con Lake Formation, el administrador del lago de datos de Lake Formation debe establecer Amazon EMR como valor para la configuración de la etiqueta de sesión, AuthorizedSessionTagValue. Lake Formation usa esta etiqueta de sesión para autorizar a los intermediarios y proporcionar acceso al lago de datos. Puede configurar esta etiqueta de sesión en la sección Filtrado de datos externos de la consola de Lake Formation. Sustituya 123456789012 por el ID de su Cuenta de AWS.

Filtrado de datos externos de Lake Formation

Paso 4: configurar las concesiones de AWS Glue y Lake Formation para los roles de tiempo de ejecución de Amazon EMR

Para continuar con la configuración del control de acceso basado en Lake Formation con los roles en tiempo de ejecución de Amazon EMR, debe configurar las concesiones de AWS Glue y Lake Formation para los roles en tiempo de ejecución de Amazon EMR. Para permitir que sus roles en tiempo de ejecución de IAM interactúen con Lake Formation, debe concederles acceso con lakeformation:GetDataAccess yglue:Get*.

Los permisos de Lake Formation controlan el acceso a los recursos de Catálogo de datos de AWS Glue, a las ubicaciones de Amazon S3 y a los datos subyacentes en esas ubicaciones. Los permisos de IAM controlan el acceso a las API y los recursos de Lake Formation y AWS Glue. Aunque es posible que tenga el permiso de Lake Formation para acceder a una tabla del catálogo de datos (SELECT), la operación fallará si no tiene el permiso de IAM en la API glue:Get*. Para obtener más información sobre el control de acceso de Lake Formation, consulte Información general sobre el control de acceso de Lake Formation.

  1. Cree el archivo emr-runtime-roles-lake-formation-policy.json con el siguiente contenido.

    { "Version": "2012-10-17", "Statement": { "Sid": "LakeFormationManagedAccess", "Effect": "Allow", "Action": [ "lakeformation:GetDataAccess", "glue:Get*", "glue:Create*", "glue:Update*" ], "Resource": "*" } }
  2. Cree la política de IAM relacionada.

    aws iam create-policy \ --policy-name emr-runtime-roles-lake-formation-policy \ --policy-document file://emr-runtime-roles-lake-formation-policy.json
  3. Para asignar esta política a sus roles en tiempo de ejecución de IAM, siga los pasos que se indican en Administración de permisos de AWS Lake Formation.

Ahora puede usar roles en tiempo de ejecución y Lake Formation para aplicar permisos de tabla y columna. También puede usar una identidad de origen para controlar las acciones y supervisar las operaciones con AWS CloudTrail. Si desea obtener un ejemplo integral, consulte Introducing runtime roles for Amazon EMR steps.