Utilisation d’AWS Glue avec AWS Lake Formation pour un contrôle précis des accès - AWS Glue

Utilisation d’AWS Glue avec AWS Lake Formation pour un contrôle précis des accès

Présentation

Avec AWS Glue versions 5.0 et ultérieures, vous pouvez utiliser AWS Lake Formation pour appliquer des contrôle précis des accès aux tables du catalogue de données soutenues par S3. Cette fonctionnalité vous permet de configurer des contrôles d’accès au niveau des tables, des lignes, des colonnes et des cellules pour les requêtes read contenues dans vos tâches AWS Glue pour Apache Spark. Consultez les sections suivantes pour en savoir plus sur Lake Formation et son utilisation avec AWS Glue.

Le contrôle d’accès au niveau des tables basé sur GlueContext avec des autorisations AWS Lake Formation prises en charge dans Glue 4.0 ou version antérieure n’est pas pris en charge dans Glue 5.0. Utilisez le nouveau contrôle précis des accès (FGAC) natif Spark de Glue 5.0. Prenez note des détails suivants :

  • Si vous avez besoin d’un contrôle d’accès précis (FGAC) pour le contrôle d’accès aux lignes/colonnes/cellules, vous devez migrer depuis GlueContext/Glue DynamicFrame dans Glue 4.0 et avant le dataframe Spark dans Glue 5.0. Pour obtenir des exemples, consultez Migration de GlueContext/Glue DynamicFrame vers Spark DataFrame

  • Si vous avez besoin d’un contrôle de l’accès complet aux tables (FTA), vous pouvez tirer parti du FTA avec DynamicFrames dans AWS Glue 5.0. Vous pouvez également migrer vers l’approche Spark native pour bénéficier de fonctionnalités supplémentaires telles que les jeux de données distribués résilients (RDD), les bibliothèques personnalisées et les fonctions définies par l’utilisateur (UDF) avec des tables AWS Lake Formation. Pour obtenir des exemples, consultez Migrating from AWS Glue 4.0 to AWS Glue 5.0.

  • Si vous n’avez pas besoin de FGAC, aucune migration vers le dataframe Spark n’est nécessaire et les fonctionnalités GlueContext telles que les signets de tâches et le déploiement des prédicats continueront de fonctionner.

  • Les tâches avec FGAC nécessitent un minimum de quatre travailleurs : un pilote utilisateur, un pilote système, un exécuteur système et un exécuteur utilisateur de secours.

L’utilisation d’AWS Glue avec AWS Lake Formation entraîne des frais supplémentaires.

Fonctionnement d’AWS Glue avec AWS Lake Formation

L’utilisation d’AWS Glue avec Lake Formation vous permet d’appliquer une couche d’autorisations à chaque tâche Spark afin d’appliquer le contrôle des autorisations Lake Formation lorsque AWS Glue exécute des tâches. AWS Glue utilise des profils de ressources Spark pour créer deux profils afin d’exécuter efficacement les tâches. Le profil utilisateur exécute le code fourni par l’utilisateur, tandis que le profil système applique les politiques Lake Formation. Pour plus d’informations, consultez What is AWS Lake Formation et Considerations and limitations.

Voici un aperçu de haut niveau de la manière dont AWS Glue accède aux données protégées par les politiques de sécurité de Lake Formation.

Le schéma montre comment fonctionne un contrôle précis des accès avec l’API AWS Glue StartJobRun.
  1. Un utilisateur appelle l’API StartJobRun sur une tâche AWS Glue compatible avec AWS Lake Formation.

  2. AWS Glue envoie la tâche à un pilote utilisateur et l’exécute 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 ni au catalogue Glue. Il crée un plan de tâche.

  3. AWS Glue configure un deuxième pilote appelé pilote système et l’exécute dans le profil système (avec une identité privilégiée). AWS Glue met en place un canal TLS chiffré entre les deux pilotes pour la communication. Le pilote utilisateur utilise le canal pour envoyer les plans de tâche au pilote système. Le pilote système n’exécute pas le code soumis 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 plan de tâche en une séquence d’étapes d’exécution.

  4. AWS Glue exécute ensuite les étapes sur les exécuteurs avec le pilote utilisateur ou le pilote système. À n’importe quelle étape, le code utilisateur est exécuté exclusivement sur les exécuteurs de profil utilisateur.

  5. Les étapes qui lisent les données des tables du catalogue de données protégées par AWS Lake Formation ou celles qui appliquent des filtres de sécurité sont déléguées aux exécuteurs système.

Exigences de minimum de travailleurs

Une tâche compatible avec Lake Formation dans AWS Glue nécessite un minimum de quatre travailleurs : un pilote utilisateur, un pilote système, un exécuteur système et un exécuteur utilisateur de secours. Cela représente une augmentation par rapport au minimum de deux travailleurs requis pour les tâches AWS Glue standard.

Une tâche compatible avec Lake Formation dans AWS Glue utilise deux pilotes Spark, l’un pour le profil système et l’autre pour le profil utilisateur. De même, les exécuteurs sont également divisés en deux profils :

  • Exécuteurs système : gèrent les tâches auxquelles les filtres de données de Lake Formation sont appliqués.

  • Exécuteurs utilisateur : sont demandés par le pilote système selon les besoins.

Comme les tâches Spark sont paresseuses par nature, AWS Glue réserve 10 % du nombre total de travailleurs (minimum 1), après déduction des deux pilotes, aux exécuteurs utilisateur.

L’autoscaling est activé pour toutes les tâches compatibles avec Lake Formation, ce qui signifie que les exécuteurs utilisateur ne démarrent qu’en cas de besoin.

Pour un exemple de configuration, consultez Considerations and limitations.

Autorisations IAM du rôle 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. Les autorisations IAM contrôlent l'accès aux API et aux ressources de Lake Formation et AWS Glue. 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 ne disposez pas de l’autorisation IAM sur l’opération d’API glue:Get*.

Voici un exemple de politique expliquant comment fournir les autorisations IAM pour accéder à un script dans Amazon S3, le chargement de journaux sur S3, les autorisations d’API AWS Glue et les autorisations d’accès à Lake Formation.

JSON
{ "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 la table de votre choix. Pour plus de détails sur Lake Formation, consultez What is AWS Lake Formation? dans le Guide du développeur AWS Lake Formation.

Après avoir configuré les autorisations de Lake Formation, vous pouvez soumettre des tâches Spark sur AWS Glue.

Soumission d’une exécution de tâche

Une fois que vous aurez fini de configurer les autorisations de Lake Formation, vous pourrez soumettre des tâches Spark sur AWS Glue. Pour exécuter des tâches Iceberg, vous devez fournir les configurations Spark suivantes. Pour configurer via les paramètres de tâche Glue, entrez le paramètre suivant :

  • Clé :

    --conf
  • Valeur :

    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

Utilisation d’une session interactive

Une fois que vous avez fini de configurer les autorisations d’AWS Lake Formation, vous pouvez utiliser des sessions interactives sur AWS Glue. Vous devez fournir les configurations Spark suivantes via la commande magique %%configure avant d’exécuter le code.

%%configure { "--enable-lakeformation-fine-grained-access": "true", "--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.catalog-impl=org.apache.iceberg.aws.glue.GlueCatalog --conf spark.sql.catalog.spark_catalog.io-impl=org.apache.iceberg.aws.s3.S3FileIO --conf spark.sql.extensions=org.apache.iceberg.spark.extensions.IcebergSparkSessionExtensions --conf spark.sql.catalog.spark_catalog.client.region=<REGION> --conf spark.sql.catalog.spark_catalog.glue.account-id=<ACCOUNT_ID> --conf spark.sql.catalog.spark_catalog.glue.endpoint=https://glue.<REGION>.amazonaws.com" }

FGAC pour bloc-notes AWS Glue 5.0 ou sessions interactives

Pour activer le contrôle précis des accès (FGAC) dans AWS Glue, vous devez spécifier les configurations Spark requises pour Lake Formation dans le cadre de la commande magique %%configure avant de créer la première cellule.

Une spécification ultérieure à l’aide des appels SparkSession.builder().conf("").get() ou ne SparkSession.builder().conf("").create() suffira pas. Il s’agit d’une modification par rapport au comportement d’AWS Glue 4.0.

Prise en charge du format de tableau ouvert

AWS Glue version 5.0 ou ultérieure inclut la prise en charge d’un contrôle précis des accès basé sur Lake Formation. AWS Glue est compatible avec les tables de type Hive et Iceberg. Le tableau suivant décrit toutes les options prises en charge.

Opérations Hive Iceberg
Commandes DML Avec des autorisations de rôle IAM uniquement Avec des autorisations de rôle IAM uniquement
Requêtes progressives Ne s’applique pas Entièrement pris en charge
Requêtes Time Travel Non applicable à ce format de table Entièrement pris en charge
Tables de métadonnées Non applicable à ce format de table Pris en charge, mais certaines tables sont masquées Pour plus d’informations, consultez Considerations and limitations.
DML INSERT Avec des autorisations IAM uniquement Avec des autorisations IAM uniquement
DML UPDATE Non applicable à ce format de table Avec des autorisations IAM uniquement
DML DELETE Non applicable à ce format de table Avec des autorisations IAM 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 et de migrate Pour plus d’informations, consultez Considerations and limitations.