Verwenden von Amazon S3 Access Grants mit AWS Glue - AWS Glue

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.

Das Diagramm liefert einen allgemeinen Überblick darüber, wie AWS Glue Zugriff auf Daten erhält, für die S3 Access Grants den Zuriff verwaltet.
  1. Ein Benutzer reicht einen AWS Glue-Spark-Auftrag ein, der in Amazon S3 gespeicherte Daten verwendet.

  2. 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.

  3. 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.

  4. AWS Glue verwendet das STS-Token, um Daten aus S3 abzurufen.

  5. 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.

  1. 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" ] } } }
  2. Ü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