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.
Habilitación de Lake Formation con Amazon EMR
Con Amazon EMR 6.15.0 y versiones posteriores, cuando ejecutas trabajos de Spark en Amazon EMR en EC2 clústeres que acceden a los datos del catálogo de datos de AWS Glue, puedes utilizarlos 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.
-
Cree un archivo denominado
lf-runtime-roles-sec-cfg.jsoncon la siguiente configuración de seguridad.{ "AuthorizationConfiguration": { "IAMConfiguration": { "EnableApplicationScopedIAMRole": true, "ApplicationScopedIAMRoleConfiguration": { "PropagateSourceIdentity": true } }, "LakeFormationConfiguration": { "AuthorizedSessionTagValue": "Amazon EMR" } }, "EncryptionConfiguration": { "EnableAtRestEncryption": false, "EnableInTransitEncryption": true, "InTransitEncryptionConfiguration": { "TLSCertificateConfiguration": {<certificate-configuration>} } } }El siguiente ejemplo muestra cómo usar un archivo ZIP con certificados en Amazon S3 para la configuración de certificados:
-
Un archivo ZIP con certificados en Amazon S3 actúa como proveedor de claves. (Consulte Proporcionar certificados para el cifrado de datos en tránsito con el cifrado de Amazon EMR para ver los requisitos de certificados).
"TLSCertificateConfiguration": { "CertificateProviderType": "PEM", "S3Object": "s3://MyConfigStore/artifacts/MyCerts.zip" }El ejemplo siguiente muestra cómo usar un proveedor de claves personalizado para la configuración de certificados:
-
Se usa un proveedor de claves personalizado. (Consulte Proporcionar certificados para el cifrado de datos en tránsito con el cifrado de Amazon EMR para ver los requisitos de certificados).
"TLSCertificateConfiguration": { "CertificateProviderType": "Custom", "S3Object": "s3://MyConfig/artifacts/MyCerts.jar", "CertificateProviderClass": "com.mycompany.MyCertProvider" } -
-
A continuación, para asegurarse de que la etiqueta de sesión puede autorizar Lake Formation, establezca la propiedad
LakeFormationConfiguration/AuthorizedSessionTagValueenAmazon EMR. -
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.jsonComo 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 3: 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 control de acceso detallado a nivel de columna, fila o celda con Lake Formation, el administrador del data lake debe definir Amazon EMR como valor de la configuración de 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 definir esta etiqueta de sesión en la sección Configuración de integración de aplicaciones de la consola de Lake Formation. Sustitúyalos por su propio ID. 123456789012 Cuenta de AWS
Paso 4: Configurar las subvenciones de AWS Glue and Lake Formation para las funciones de tiempo de ejecución de Amazon EMR
Para continuar con la configuración del control de acceso basado en Lake Formation con las funciones de tiempo de ejecución de Amazon EMR, debe configurar las concesiones de AWS Glue and Lake Formation para las funciones 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 del catálogo de datos de AWS Glue, las ubicaciones de Amazon S3 y los datos subyacentes en esas ubicaciones. Los permisos de la IAM controlan el acceso a Lake Formation and AWS Glue APIs y a los recursos. 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.
-
Cree el archivo
emr-runtime-roles-lake-formation-policy.jsoncon el siguiente contenido. -
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 -
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 utilizar una identidad de origen para controlar las acciones y supervisar las AWS CloudTrail operaciones.
Para cada rol de IAM que vaya a utilizar como rol en tiempo de ejecución, defina la siguiente política de confianza y sustituya EMR_EC2_DefaultRole por el rol de perfil de instancia. Para modificar la política de confianza de un rol de IAM, consulte Modificación de una política de confianza de rol.
{ "Sid":"AllowAssumeRole", "Effect":"Allow", "Principal":{ "AWS":"arn:aws:iam::<AWS_ACCOUNT_ID>:role/EMR_EC2_DefaultRole" }, "Action":[ "sts:AssumeRole", "sts:TagSession" ] }
Para ver un end-to-end ejemplo detallado, consulte Introducción a las funciones de tiempo de ejecución para los pasos de Amazon EMR.
Para obtener información sobre cómo integrarse con Iceberg y AWS Glue Data Catalog para una jerarquía de varios catálogos, consulte Configurar Spark para acceder a una jerarquía de varios catálogos en AWS Glue Data Catalog.