Utilisation des autorisations d’accès Amazon S3 avec AWS Glue
Disponible avec Glue version 5.0, les autorisations d’accès Amazon S3 fournissent une solution de contrôle d’accès capable d’être mise à l’échelle que vous pouvez utiliser pour augmenter l’accès à vos données Amazon S3 depuis AWS Glue. Si vos exigences en matière de données S3 nécessitent une configuration d’autorisations complexe ou importante, vous pouvez utiliser les autorisations d’accès S3 pour mettre à l’échelle les autorisations de données S3 pour les utilisateurs et les rôles.
Utilisez les autorisations d’accès S3 pour augmenter l’accès aux données Amazon S3 au-delà des autorisations accordées par le rôle d’exécution ou les rôles IAM associés aux identités ayant accès à votre tâche AWS Glue. Pour plus d’informations, voir la rubrique Gestion des accès avec S3 Access Grants du Guide de l’utilisateur Amazon S3.
Fonctionnement d’AWS Glue avec les autorisations d’accès S3
La version 5.0 et les versions ultérieures d’AWS Glue fournissent une intégration native avec les autorisations d’accès S3. Vous pouvez activer les autorisations d’accès S3 sur AWS Glue et exécuter des tâches Spark. Lorsqu’une tâche Spark demande à accéder aux données S3, Amazon S3 fournit des informations d’identification temporaires limitées au compartiment, au préfixe ou à l’objet concerné.
Voici un aperçu général de la manière dont AWS Glue accède aux données auxquelles les autorisations d’accès S3 gèrent l’accès.
Un utilisateur soumet une tâche AWS Glue Spark qui utilise des données stockées dans Amazon S3.
AWS Glue adresse une demande aux autorisations d’accès S3 de fournir des informations d’identification temporaires à l’utilisateur donnant accès au compartiment, au préfixe ou à l’objet.
AWS Glue renvoie des informations d’identification temporaires sous la forme d’un jeton AWS Security Token Service (STS) pour l’utilisateur. Le jeton permet uniquement d’accéder au compartiment, au préfixe ou à l’objet S3 concerné.
AWS Glue utilise le jeton STS pour récupérer les données de S3.
AWS Glue reçoit les données de S3 et renvoie les résultats à l’utilisateur.
Considérations relatives aux autorisations d’accès S3 avec AWS Glue
Tenez compte des comportements et des restrictions suivants lorsque vous utilisez les autorisations d’accès S3 avec AWS Glue.
Prise en charge des fonctionnalités
Les autorisations d’accès S3 sont prises en charge à partir d’AWS Glue version 5.0.
Spark est le seul type de tâche pris en charge lorsque vous utilisez les autorisations d’accès S3 avec AWS Glue.
Delta Lake et Hudi sont les seuls formats de table ouverts pris en charge lorsque vous utilisez les autorisations d’accès S3 avec AWS Glue.
Les fonctionnalités suivantes ne sont pas prises en charge pour une utilisation avec les autorisations d’accès S3 :
Tables Apache Iceberg
Demandes de la CLI AWS adressées à Amazon S3 qui utilisent des rôles IAM
Accès à S3 via le protocole open source S3A
Considérations comportementales
AWS Glue fournit un cache d’informations d’identification afin de garantir qu’un utilisateur n’a pas besoin de demander à plusieurs reprises les mêmes informations d’identification dans le cadre d’une tâche Spark. Par conséquent, AWS Glue demande toujours le niveau de privilège par défaut lorsqu’il demande des informations d’identification. Pour plus d’informations, voir la rubrique Demande d’accès aux données S3 du Guide de l’utilisateur Amazon S3.
Configuration des autorisations d’accès S3 avec AWS Glue
Prérequis
L’appelant ou l’administrateur a créé une instance d’autorisations d’accès S3.
Configuration des politiques AWS Glue et des tâches
Pour configurer les autorisations d’accès S3 avec AWS Glue, vous devez configurer des politiques d’approbation et IAM, mais aussi transmettre la configuration via les paramètres de tâche.
Configurez les politiques d’approbation minimales et IAM suivantes sur le rôle utilisé pour les autorisations (le rôle AWS Glue qui exécute les sessions ou les tâches).
Stratégie d'approbation :
{ "Sid": "Stmt1234567891011", "Action": [ "sts:AssumeRole", "sts:SetSourceIdentity", "sts:SetContext" ], "Effect": "Allow", "Principal": { "Service": "access-grants.s3.amazonaws.com" }, "Condition": { "StringEquals": { "aws:SourceAccount": "123456789012", "aws:SourceArn": "arn:aws:s3:<region>:123456789012:access-grants/default" } } }Politique IAM :
{ "Sid": "S3Grants", "Effect": "Allow", "Action": [ "s3:GetDataAccess", "s3:GetAccessGrantsInstanceForPrefix" ], "Resource": "arn:aws:s3:<region>:123456789012:access-grants/default" }, { "Sid": "BucketLevelReadPermissions", "Effect": "Allow", "Action": [ "s3:ListBucket" ], "Resource": [ "arn:aws:s3:::*" ], "Condition": { "StringEquals": { "aws:ResourceAccount": "123456789012" }, "ArnEquals": { "s3:AccessGrantsInstanceArn": [ "arn:aws:s3:<region>:123456789012:access-grants/default" ] } } }, { "Sid": "ObjectLevelReadPermissions", "Effect": "Allow", "Action": [ "s3:GetObject", "s3:GetObjectVersion", "s3:GetObjectAcl", "s3:GetObjectVersionAcl", "s3:ListMultipartUploadParts" ], "Resource": [ "arn:aws:s3:::*" ], "Condition": { "StringEquals": { "aws:ResourceAccount": "123456789012" }, "ArnEquals": { "s3:AccessGrantsInstanceArn": [ "arn:aws:s3:<region>:123456789012:access-grants/default" ] } } }Dans votre tâche AWS Glue, transmettez la configuration Spark suivante via les paramètres de la tâche AWS Glue ou
SparkConf.--conf spark.hadoop.fs.s3.s3AccessGrants.enabled=true \ --conf spark.hadoop.fs.s3.s3AccessGrants.fallbackToIAM=false