Verwenden von Amazon S3 Access Grants mit AWS Glue
Mit Glue-Version 5.0 bietet Amazon S3 Access Grants eine skalierbare Zugriffskontrolllösung, mit der Sie den Zugriff auf Ihre Amazon-S3-Daten über AWS Glue erweitern können. Wenn Sie für Ihre S3-Daten eine komplexe oder umfangreiche Berechtigungskonfiguration haben, können Sie mit S3 Access Grants die S3-Datenberechtigungen für Benutzer und Rollen skalieren.
Verwenden Sie S3 Access Grants, um den Zugriff auf Amazon-S3-Daten über die Berechtigungen hinaus zu erweitern, die durch die Laufzeitrolle oder die IAM-Rollen gewährt werden, die den Identitäten mit Zugriff auf Ihren AWS Glue-Auftrag zugewiesen sind. Weitere Informationen finden Sie unter Verwalten des Zugriffs mit S3 Access Grants im Benutzerhandbuch zu Amazon S3.
So funktioniert AWS Glue mit S3 Access Grants
AWS Glue-Versionen ab 5.0 höher bieten eine native Integration mit S3 Access Grants. Sie können S3 Access Grants in AWS Glue aktivieren und Spark-Aufträge ausführen. Wenn ein Spark-Auftrag eine Anfrage für S3-Daten stellt, stellt Amazon S3 temporäre Anmeldeinformationen bereit, die auf den jeweiligen Bucket, das Präfix oder das Objekt beschränkt sind.
Nachfolgend finden Sie einen allgemeinen Überblick darüber, wie AWS Glue Zugriff auf Daten erhält, für die S3 Access Grants den Zuriff verwaltet.
Ein Benutzer reicht einen AWS Glue-Spark-Auftrag ein, der in Amazon S3 gespeicherte Daten verwendet.
AWS Glue stellt eine Anforderung für S3 Access Grants, um temporäre Anmeldeinformationen für den Benutzer bereitzustellen, die Zugriff auf den Bucket, das Präfix oder das Objekt gewähren.
AWS Glue gibt temporäre Anmeldeinformationen in Form eines AWS Security Token Service (STS)-Tokens für den Benutzer zurück. Das Token ist für den Zugriff auf den S3-Bucket, das S3-Präfix oder das S3-Objekt vorgesehen.
AWS Glue verwendet das STS-Token, um Daten aus S3 abzurufen.
AWS Glue empfängt die Daten von S3 und gibt die Ergebnisse an den Benutzer zurück.
Überlegungen zu S3 Access Grants mit AWS Glue
Beachten Sie die folgenden Verhaltensweisen und Einschränkungen, wenn Sie S3 Access Grants mit AWS Glue verwenden.
Feature-Support
S3 Access Grants wird mit AWS Glue-Versionen ab 5.0 unterstützt.
Spark ist der einzige unterstützte Auftragstyp, wenn Sie S3 Access Grants mit AWS Glue verwenden.
Delta Lake und Hudi sind die einzigen unterstützten Open-Table-Formate, wenn Sie S3 Access Grants mit AWS Glue verwenden.
Die folgenden Funktionen werden bei der Verwendung mit S3 Access Grants nicht unterstützt:
Apache-Iceberg-Tabellen
AWS-CLI-Anforderungen an Amazon S3, die IAM-Rollen verwenden
S3-Zugriff über das Open-Source-Protokoll S3A
Überlegungen in Bezug auf das Verhalten
AWS Glue stellt einen Cache für Anmeldeinformationen bereit, um sicherzustellen, dass ein Benutzer innerhalb eines Spark-Auftrags nicht wiederholt dieselben Anmeldeinformationen anfordern muss. Daher fordert AWS Glue bei der Anforderung von Anmeldeinformationen immer die Standardberechtigung an. Weitere Informationen finden Sie unter Zugriff auf S3-Daten anfordern im Benutzerhandbuch zu Amazon S3.
Einrichten von S3 Access Grants mit AWS Glue
Voraussetzungen
Der Aufrufer oder Administrator hat eine S3-Access-Grants-Instance erstellt.
Einrichten von AWS Glue-Richtlinien und Auftragskonfigurationen
Um S3 Access Grants mit AWS Glue einzurichten, müssen Sie Vertrauens- und IAM-Richtlinien konfigurieren und die Konfiguration über die Auftragsparameter übergeben.
Konfigurieren Sie die folgenden minimalen Vertrauens- und IAM-Richtlinien für die Rolle, die für Gewährungen verwendet wird (die AWS Glue-Rolle, die Sitzungen oder Aufträge ausführt).
Vertrauensrichtlinie:
{ "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" } } }IAM-Richtlinie:
{ "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" ] } } }Übergeben Sie in Ihrem AWS Glue-Auftrag die folgende Spark-Konfiguration entweder über die AWS Glue-Auftragsparameter oder
SparkConf.--conf spark.hadoop.fs.s3.s3AccessGrants.enabled=true \ --conf spark.hadoop.fs.s3.s3AccessGrants.fallbackToIAM=false