Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.
Utilisation de EMR Serverless AWS Lake Formation pour un contrôle d'accès précis
Présentation
Avec les EMR versions 7.2.0 et supérieures d'Amazon, vous pouvez en tirer parti AWS Lake Formation pour appliquer des contrôles d'accès précis aux tables du catalogue de données soutenues par S3. Cette fonctionnalité vous permet de configurer les contrôles d'accès au niveau des tables, des lignes, des colonnes et des cellules pour read requêtes dans vos tâches Amazon EMR Serverless Spark. Pour configurer un contrôle d'accès précis pour les tâches par lots et les sessions interactives d'Apache Spark, utilisez EMR Studio. Consultez les sections suivantes pour en savoir plus sur Lake Formation et comment l'utiliser avec EMR Serverless.
L'utilisation d'Amazon EMR Serverless AWS Lake Formation entraîne des frais supplémentaires. Pour plus d'informations, consultez les EMRtarifs Amazon
Comment fonctionne EMR Serverless avec AWS Lake Formation
L'utilisation de EMR Serverless avec Lake Formation vous permet d'appliquer une couche d'autorisations à chaque tâche Spark afin d'appliquer le contrôle des autorisations de Lake Formation lorsque EMR Serverless exécute des tâches. EMRServerless utilise les profils de ressources Spark
Lorsque vous utilisez une capacité préinitialisée avec Lake Formation, nous vous recommandons de disposer d'au moins deux pilotes Spark. Chaque tâche activée par Lake Formation utilise deux pilotes Spark, l'un pour le profil utilisateur et l'autre pour le profil système. Pour de meilleures performances, vous devez utiliser deux fois plus de pilotes pour les tâches compatibles avec Lake Formation que si vous n'utilisez pas Lake Formation.
Lorsque vous exécutez des tâches Spark sur EMR Serverless, vous devez également tenir compte de l'impact de l'allocation dynamique sur la gestion des ressources et les performances du cluster. La configuration spark.dynamicAllocation.maxExecutors
du nombre maximum d'exécuteurs par profil de ressource s'applique à la fois aux exécuteurs utilisateur et système. Si vous configurez ce nombre pour qu'il soit égal au nombre maximum autorisé d'exécuteurs, l'exécution de votre tâche risque de se bloquer car un type d'exécuteur utilise toutes les ressources disponibles, ce qui empêche l'autre exécuteur d'exécuter des tâches.
Pour ne pas manquer de ressources, EMR Serverless définit le nombre maximum d'exécuteurs par défaut par profil de ressource à 90 % de la spark.dynamicAllocation.maxExecutors
valeur. Vous pouvez remplacer cette configuration lorsque vous spécifiez spark.dynamicAllocation.maxExecutorsRatio
une valeur comprise entre 0 et 1. En outre, vous pouvez également configurer les propriétés suivantes pour optimiser l'allocation des ressources et les performances globales :
-
spark.dynamicAllocation.cachedExecutorIdleTimeout
-
spark.dynamicAllocation.shuffleTracking.timeout
-
spark.cleaner.periodicGC.interval
Voici un aperçu général de la manière dont EMR Serverless accède aux données protégées par les politiques de sécurité de Lake Formation.
-
Un utilisateur soumet une tâche Spark à une application EMR Serverless AWS Lake Formation activée.
-
EMRServerless envoie la tâche à un pilote utilisateur et exécute la tâche dans le profil utilisateur. Le pilote utilisateur exécute une version allégée de Spark qui n'est pas en mesure de lancer des tâches, de demander des exécuteurs, d'accéder à S3 ou au catalogue Glue. Il élabore un plan d'emploi.
-
EMRServerless configure un deuxième pilote appelé pilote système et l'exécute dans le profil système (avec une identité privilégiée). EMRServerless établit un TLS canal crypté entre les deux pilotes pour la communication. Le pilote utilisateur utilise le canal pour envoyer les plans de travail au pilote du système. Le pilote du système n'exécute pas le code envoyé par l'utilisateur. Il exécute Spark dans son intégralité et communique avec S3 et le catalogue de données pour l'accès aux données. Il demande des exécuteurs et compile le Job Plan en une séquence d'étapes d'exécution.
-
EMRServerless exécute ensuite les étapes sur les exécuteurs avec le pilote utilisateur ou le pilote système. À n'importe quel stade, le code utilisateur est exécuté exclusivement sur les exécuteurs de profil utilisateur.
-
Les étapes qui lisent les données des tables du catalogue de données protégées par des filtres de sécurité AWS Lake Formation ou qui appliquent des filtres de sécurité sont déléguées aux exécuteurs du système.
Favoriser la formation de Lake en Amazon EMR
Pour activer Lake Formation, vous devez définir le paramètre de configuration spark.emr-serverless.lakeformation.enabled
d'exécution sur « true
spark-defaults
sous-classification » lors de la création d'une application EMR Serverless.
aws emr-serverless create-application \ --release-label emr-7.3.0 \ --runtime-configuration '{ "classification": "spark-defaults", "properties": { "spark.emr-serverless.lakeformation.enabled": "true" } }' \ --type "SPARK"
Vous pouvez également activer Lake Formation lorsque vous créez une nouvelle application dans EMR Studio. Choisissez Utiliser Lake Formation pour un contrôle d'accès précis, disponible dans la section Configurations supplémentaires.
Le chiffrement entre utilisateurs est activé par défaut lorsque vous utilisez Lake Formation avec EMR Serverless, de sorte que vous n'avez pas à réactiver explicitement le chiffrement entre utilisateurs.
Permettre la formation de Lake Formation pour les emplois de Spark
Pour activer Lake Formation pour des tâches Spark individuelles, définissez ce paramètre spark.emr-serverless.lakeformation.enabled
sur true lors de l'utilisationspark-submit
.
--conf spark.emr-serverless.lakeformation.enabled=true
IAMAutorisations relatives aux rôles d'exécution des tâches
Les autorisations de Lake Formation contrôlent l'accès aux ressources du catalogue de données AWS Glue, aux sites Amazon S3 et aux données sous-jacentes de ces sites. IAMles autorisations contrôlent l'accès à la Lake Formation and AWS Glue APIs et aux ressources. Bien que vous ayez l'autorisation Lake Formation d'accéder à une table du catalogue de données (SELECT), votre opération échoue si vous n'en avez pas l'IAMglue:Get*
APIautorisation.
Voici un exemple de politique expliquant comment fournir des IAM autorisations pour accéder à un script dans S3, télécharger des journaux dans S3, autoriser AWS Glue API et accéder à Lake Formation.
{ "Version": "2012-10-17", "Statement": [ { "Sid": "ScriptAccess", "Effect": "Allow", "Action": [ "s3:GetObject", "s3:ListBucket" ], "Resource": [ "arn:aws:s3:::*.amzn-s3-demo-bucket/scripts", "arn:aws:s3:::*.amzn-s3-demo-bucket/*" ] }, { "Sid": "LoggingAccess", "Effect": "Allow", "Action": [ "s3:PutObject" ], "Resource": [ "arn:aws:s3:::amzn-s3-demo-bucket/logs/*" ] }, { "Sid": "GlueCatalogAccess", "Effect": "Allow", "Action": [ "glue:Get*", "glue:Create*", "glue:Update*" ], "Resource": ["*"] }, { "Sid": "LakeFormationAccess", "Effect": "Allow", "Action": [ "lakeformation:GetDataAccess" ], "Resource": ["*"] } ] }
Configuration des autorisations de Lake Formation pour le rôle d'exécution des tâches
Tout d'abord, enregistrez l'emplacement de votre table Hive avec Lake Formation. Créez ensuite des autorisations pour votre rôle d'exécution des tâches dans le tableau de votre choix. Pour plus de détails sur Lake Formation, voir Qu'est-ce que c'est AWS Lake Formation ? dans le Guide AWS Lake Formation du développeur.
Après avoir configuré les autorisations de Lake Formation, vous pouvez soumettre des tâches Spark sur Amazon EMR Serverless. Pour plus d'informations sur les tâches Spark, consultez les exemples de Spark.
Soumission d'une exécution de tâche
Une fois que vous aurez fini de configurer les subventions Lake Formation, vous pourrez soumettre des tâches Spark sur EMR Serverless. Pour exécuter des tâches Iceberg, vous devez fournir les spark-submit
propriétés suivantes.
--conf spark.sql.catalog.spark_catalog=org.apache.iceberg.spark.SparkSessionCatalog --conf spark.sql.catalog.spark_catalog.warehouse=<
S3_DATA_LOCATION
> --conf spark.sql.catalog.spark_catalog.glue.account-id=<ACCOUNT_ID
> --conf spark.sql.catalog.spark_catalog.client.region=<REGION
> --conf spark.sql.catalog.spark_catalog.glue.endpoint=https://glue.<REGION
>.amazonaws.com
Support du format de tableau ouvert
La EMR version 7.2.0 d'Amazon inclut la prise en charge d'un contrôle d'accès précis basé sur Lake Formation. EMRServerless prend en charge les types de tables Hive et Iceberg. Le tableau suivant décrit toutes les opérations prises en charge.
Opérations | Hive | Iceberg |
---|---|---|
DDLcommandes | Avec des autorisations de IAM rôle uniquement | Avec des autorisations de IAM rôle uniquement |
Requêtes progressives | Ne s’applique pas | Entièrement pris en charge |
Requêtes Time Travel | Non applicable à ce format de tableau | Entièrement pris en charge |
Tables de métadonnées | Non applicable à ce format de tableau | Supporté, mais certaines tables sont masquées. Consultez les considérations et les limites pour plus d'informations. |
DML INSERT |
Avec IAM autorisations uniquement | Avec IAM autorisations uniquement |
DML UPDATE | Non applicable à ce format de tableau | Avec IAM autorisations uniquement |
DML DELETE |
Non applicable à ce format de tableau | Avec IAM autorisations uniquement |
Opérations de lecture | Entièrement pris en charge | Entièrement pris en charge |
Procédures stockées | Ne s’applique pas | Pris en charge à l'exception de register_table etmigrate . Consultez les considérations et les limites pour plus d'informations. |