Gewährung von kontenübergreifendem Zugriff - AWS Glue

Gewährung von kontenübergreifendem Zugriff

Indem Sie kontenübergreifend Zugriff auf Data-Catalog-Ressourcen gewähren, können Ihre ETL-Aufträge zum Extrahieren, Transformieren und Laden Daten aus verschiedenen Konten abfragen und verknüpfen.

Methoden zur Gewährung von kontenübergreifendem Zugriff in AWS Glue

Sie können Zugriff auf Ihre Daten für externe AWS-Konten mithilfe von AWS Glue-Methoden oder mit AWS Lake Formation kontenübergreifende Berechtigungen gewähren. Die AWS Glue-Methoden verwenden AWS Identity and Access Management (IAM-Richtlinien), um eine differenzierte Zugriffskontrolle zu erreichen. Lake Formation verwendet ein einfacheres GRANT/REVOKE-Berechtigungsmodell ähnlich den GRANT/REVOKE-Befehlen in einem relationalen Datenbanksystem.

In diesem Abschnitt wird die Verwendung der AWS Glue-Methoden beschrieben. Weitere Informationen zur kontoübergreifenden Verwendung von Lake Formation finden Sie unter Erteilen von Lake-Formation-Berechtigungen im AWS Lake Formation-Entwicklerhandbuch.

Es gibt zwei AWS Glue-Methoden zum Erteilen von kontenübergreifendem Zugriff auf eine Ressource:

  • Verwenden einer Data-Catalog-Ressourcenrichtlinie

  • Verwenden einer IAM-Rolle

Eine Ressourcenrichtlinie verwenden, um kontenübergreifenden Zugriff zu gewähren

Im Folgenden werden die allgemeinen Schritte zum Erteilen des kontenübergreifenden Zugriffs mithilfe einer Data-Catalog-Ressourcenrichtlinie beschrieben:

  1. Ein Administrator (oder eine andere autorisierte Identität) in Konto A fügt eine Ressourcenrichtlinie an den Data Catalog in Konto A an. Diese Richtlinie gewährt Konto B spezifische kontenübergreifende Berechtigungen, um Operationen mit einer Ressource im Katalog von Konto A durchzuführen.

  2. Ein Administrator in Konto B fügt eine IAM-Richtlinie für eine IAM-Identität in Konto B an, die die von Konto A erhaltenen Berechtigungen delegiert.

    Die Identität in Konto B hat nun Zugriff auf die angegebene Ressource in Konto A.

    Die Identität benötigt die Berechtigung sowohl vom Ressourcenbesitzer (Konto A) als auch von ihrem übergeordneten Konto (Konto B), um auf die Ressource zugreifen zu können.

Gewährung von kontenübergreifendem Zugriff mithilfe einer IAM-Rolle

Im Folgenden werden die allgemeinen Schritte zum Erteilen des kontenübergreifenden Zugriffs mithilfe einer IAM-Rolle beschrieben:

  1. Ein Administrator (oder eine andere autorisierte Identität) in dem Konto, das die Ressource besitzt (Konto A), erstellt eine IAM-Rolle.

  2. Der Administrator in Konto A fügt eine Richtlinie an die Rolle an, die kontenübergreifende Berechtigungen für den Zugriff auf die betreffende Ressource gewährt.

  3. Der Administrator in Konto A fügt eine Vertrauensrichtlinie an die Rolle an, die eine IAM-Identität in einem anderen Konto (Konto B) als Prinzipal angibt, der die Rolle übernehmen kann.

    Wenn Sie einem AWS-Service die Berechtigungen zum Annehmen der Rolle erteilen möchten, kann es sich bei dem Prinzipal in der Vertrauensrichtlinie auch um ein AWS-Service-Prinzipal handeln.

  4. Ein Administrator in Konto B delegiert nun Berechtigungen an eine oder mehrere IAM-Identitäten in Konto B, damit sie diese Rolle übernehmen können. Auf diese Weise erhalten diese Identitäten in Konto B Zugriff auf die Ressource in Konto A.

Weitere Informationen zum Delegieren von Berechtigungen mithilfe von IAM finden Sie unter Zugriffsverwaltung im IAM-Benutzerhandbuch. Weitere Informationen zu Benutzern, Gruppen, Rollen und Berechtigungen finden Sie unter Identitäten (Benutzer, Gruppen und Rollen) im IAM-Benutzerhandbuch.

Einen Vergleich dieser beiden Ansätze finden Sie unter Wie sich IAM-Rollen und ressourcenbasierten Richtlinien unterscheiden im IAM-Benutzerhandbuch. AWS Glue unterstützt beide Optionen, mit der Einschränkung, dass eine Ressourcenrichtlinie nur Zugriff auf Data-Catalog-Ressourcen gewähren kann.

Um zum Beispiel der Dev-Rolle in Konto B Zugriff auf die Datenbank db1 in Konto A zu geben, fügen Sie die folgende Ressourcenrichtlinie an den Katalog in Konto A an.

JSON
{ "Version":"2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "glue:GetDatabase" ], "Principal": { "AWS": [ "arn:aws:iam::111122223333:role/Dev" ] }, "Resource": [ "arn:aws:glue:us-east-1:111122223333:catalog", "arn:aws:glue:us-east-1:111122223333:database/db1" ] } ] }

Darüber hinaus müsste Konto B folgende IAM-Richtlinie zur Dev-Rolle anfügen, bevor sie tatsächlich Zugriff auf db1 in Konto A erhält.

JSON
{ "Version":"2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "glue:GetDatabase" ], "Resource": [ "arn:aws:glue:us-east-1:111122223333:catalog", "arn:aws:glue:us-east-1:111122223333:database/db1" ] } ] }

Hinzufügen oder Aktualisieren der Data-Catalog-Ressourcenrichtlinie

Sie können die AWS Glue-Data-Catalog-Ressourcenrichtlinie mithilfe der Konsole, der API oder der AWS Command Line Interface (AWS CLI) aktualisieren.

Wichtig

Wenn Sie bereits kontoübergreifende Berechtigungen von Ihrem Konto mit AWS Lake Formation erstellt haben, erfordert das Hinzufügen oder Aktualisieren der Data-Catalog-Ressourcenrichtlinie einen zusätzlichen Schritt. Weitere Informationen finden Sie unter Verwalten von kontenübergreifenden Berechtigungen mithilfe von AWS Glue und Lake Formation im AWS Lake Formation-Entwicklerhandbuch.

Um festzustellen, ob kontenübergreifende Berechtigungen für Lake Formation vorhanden sind, verwenden Sie den glue:GetResourcePolicies-API-Vorgang oder die AWS CLI. Wenn glue:GetResourcePolicies andere Richtlinien als eine bereits vorhandene Data-Catalog-Richtlinie zurückgibt, sind Lake-Formation-Berechtigungen vorhanden. Weitere Informationen finden Sie unter Anzeigen aller kontenübergreifenden Berechtigungen mithilfe des GetResourcePolicies-API-Vorgangs im AWS Lake Formation-Entwicklerhandbuch.

Data-Catalog-Ressourcenrichtlinie hinzufügen oder aktualisieren (Konsole)
  1. Öffnen Sie die AWS Glue-Konsole unter https://console.aws.amazon.com/glue/.

    Melden Sie sich als anAWS Identity and Access Management (IAM)-Administratorbenutzer oder als Benutzer mit glue:PutResourcePolicy-Berechtigung an.

  2. Wählen Sie im Navigationsbereich Settings (Einstellungen).

  3. Fügen Sie auf der Seite Data catalog settings (Data-Catalog-Einstellungen) unter Permissions (Berechtigungen) eine Ressourcenrichtlinie in den Textbereich ein. Wählen Sie dann Speichern.

    Wenn die Konsole eine Warnmeldung anzeigt, dass die Berechtigungen in der Richtlinie zusätzlich zu den mit Lake Formation erteilten Berechtigungen sind, wählen Sie Fortfahren.

Data-Catalog-Ressourcenrichtlinie hinzufügen oder aktualisieren (AWS CLI)
  • Senden Sie einen aws glue put-resource-policy-Befehl. Wenn bereits Berechtigungen für Lake Formation vorhanden sind, stellen Sie sicher, dass Sie die Option --enable-hybrid mit dem Wert 'TRUE' auswählen.

    Beispiele für die Verwendung dieses Befehls finden Sie unter Ressourcenbasierte Richtlinie für AWS Glue.

Ausführen eines kontenübergreifenden API-Aufrufs

Alle AWS Glue Data Catalog-Operationen haben ein Feld CatalogId. Wenn die erforderlichen Berechtigungen zugewiesen wurden, um den kontenübergreifenden Zugriff zu ermöglichen, kann ein Aufrufer Data-Catalog-API-Aufrufe über mehrere Konten hinweg ausführen. Hierfügt übergibt er die ID des AWS-Zielkontos in CatalogId, um auf die Ressource in diesem Zielkonto zuzugreifen.

Wenn kein CatalogId-Wert angegeben wird, verwendet AWS Glue standardmäßig die eigene Konto-ID des Aufrufers, und der Aufruf ist nicht kontoübergreifend.

Ausführen eines kontenübergreifenden ETL-Aufrufs

Einige AWS Glue PySpark- und Scala-APIs haben ein Feld für die Katalog-ID. Wenn alle erforderlichen Berechtigungen für den kontenübergreifenden Zugriff erteilt wurden, kann ein ETL-Auftrag PySpark- und Scala-Aufrufe von API-Operationen kontenübergreifend durchführen, indem er die Ziel-AWS-Konto-ID im Feld Katalog-ID für den Zugriff auf Data-Catalog-Ressourcen in einem Zielkonto übergibt.

Wenn kein Katalog-ID-Wert angegeben ist, verwendet AWS Glue standardmäßig die eigene Konto-ID des Aufrufers, und der Aufruf ist nicht kontoübergreifend.

PySpark-APIs, die catalog_id unterstützen, finden Sie unter GlueContext-Klasse. Scala-APIs, die catalogId unterstützen, finden Sie unter AWS Glue Scala GlueContext-APIs.

Das folgende Beispiel zeigt die Berechtigungen, die der Berechtigungsempfänger benötigt, um einen ETL-Auftrag auszuführen. In diesem Beispiel ist grantee-account-id die catalog-id des Clients, der den Auftrag ausführt, und grantor-account-id ist der Eigentümer der Ressource. In diesem Beispiel wird die Berechtigung für alle Katalogressourcen im Konto des Eigentümers gewährt. Um den Umfang der gewährten Ressourcen einzuschränken, können Sie spezifische ARN für Katalog, Datenbank, Tabelle und Verbindung angeben.

JSON
{ "Version":"2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "glue:GetConnection", "glue:GetDatabase", "glue:GetTable", "glue:GetPartition" ], "Principal": { "AWS": [ "arn:aws:iam::111122223333:root" ] }, "Resource": [ "arn:aws:glue:us-east-1:111122223333:*" ] } ] }
Anmerkung

Wenn eine Tabelle im Konto des Eigentümers auf einen Amazon-S3-Speicherort verweist, der sich auch im Konto des Eigentümers befindet, muss die IAM-Rolle, mit der ein ETL-Auftrag im Konto des Berechtigungsempfängers ausgeführt wird, die Berechtigung haben, Objekte aufzulisten und aus dem Konto des Eigentümers abzurufen.

Da der Client in Konto A bereits die Berechtigung zum Erstellen und Ausführen von ETL-Aufträgen hat, sind die grundlegenden Schritte zum Einrichten eines ETL-Auftrags für den kontoübergreifenden Zugriff die folgenden:

  1. Kontoübergreifenden Datenzugriff erlauben (überspringen Sie diesen Schritt, wenn der kontoübergreifende Zugriff in Amazon S3 bereits eingerichtet ist).

    1. Aktualisieren Sie die Amazon-S3-Bucket-Richtlinie in Konto B, um den kontoübergreifenden Zugriff von Konto A aus zu ermöglichen.

    2. Aktualisieren Sie die IAM-Richtlinie in Konto A, um den Zugriff auf den Bucket in Konto B zu ermöglichen.

  2. Kontoübergreifenden Zugriff auf den Data Catalog gewähren

    1. Erstellen oder aktualisieren Sie die Ressourcenrichtlinie, die an den Data Catalog in Konto B angefügt ist, um den Zugriff von Konto A aus zu ermöglichen.

    2. Aktualisieren Sie die IAM-Richtlinie in Konto A, um den Zugriff auf den Data Catalog in Konto B zu ermöglichen.

Kontoübergreifende CloudTrail-Protokollierung

Wenn ein AWS Glue Extract, Transform, Load (ETL)-Auftrag auf die zugrunde liegenden Daten einer Data Catalog-Tabelle zugreift, die über kontenübergreifende AWS Lake Formation-Berechtigungen freigegeben ist, gibt es zusätzliche AWS CloudTrail-Protokollierungsverhalten.

Für die Zwecke dieser Diskussion ist das AWS-Konto, das die Tabelle freigegeben hat, das Besitzerkonto, und das Konto, für das die Tabelle freigegeben wurde, ist das Empfängerkonto. Wenn ein ETL-Auftrag im Empfängerkonto auf Daten in der Tabelle im Besitzerkonto zugreift, wird das CloudTrail-Ereignis für den Datenzugriff, das den Protokollen für das Empfängerkonto hinzugefügt wird, in die CloudTrail-Protokolle des Eigentümerkontos kopiert. Auf diese Weise können Besitzerkonten Datenzugriffe durch verschiedene Empfängerkonten verfolgen. Standardmäßig enthalten die CloudTrail-Ereignisse keine menschenlesbare Prinzipalkennung (Principal ARN). Ein Administrator des Empfängerkontos kann sich dafür entscheiden, den Principal ARN in die Protokolle aufzunehmen.

Weitere Informationen finden Sie unter Kontoübergreifende CloudTrail-Protokollierung im AWS Lake Formation-Entwicklerhandbuch.

Weitere Informationen finden Sie unter:

Kontoübergreifende Ressourcen-Eigentümerschaft und Buchhaltung

Wenn ein Benutzer in einem AWS-Konto (Konto A) eine neue Ressource erstellt, wie beispielsweise eine Datenbank in einem anderen Konto (Konto B), ist diese Ressource dann im Besitz von Konto B, also dem Konto, in dem sie erstellt wurde. Ein Administrator in Konto B erhält automatisch volle Berechtigungen für den Zugriff auf die neue Ressource, einschließlich Lesen, Schreiben und Erteilen von Zugriffsrechten für ein drittes Konto. Der Benutzer in Konto A kann nur dann auf die Ressource zugreifen, die er gerade erstellt hat, wenn er die entsprechenden Berechtigungen hat, die von Konto B gewährt werden.

Speicherkosten und andere Kosten, die direkt mit der neuen Ressource verbunden sind, werden dem Konto B, dem Ressourcenbesitzer, in Rechnung gestellt. Die Kosten für Anfragen des Benutzers, der die Ressource angelegt hat, werden dem Konto des Antragstellers, Konto A, in Rechnung gestellt.

Weitere Informationen über AWS Glue-Abrechnung und Preise finden Sie unter So funktioniert die Preisgestaltung bei AWS.

Kontoübergreifende Zugriffsbeschränkungen

Kontoübergreifender AWS Glue-Zugriff hat folgende Einschränkungen:

  • Der kontoübergreifende Zugriff auf AWS Glue ist nicht zulässig, wenn Sie Datenbanken und Tabellen mit Amazon Athena oder Amazon Redshift Spectrum erstellt haben, bevor eine Region AWS Glue unterstützt hat, und das Konto des Ressourceneigentümers den Amazon Athena-Data Catalog nicht nach AWS Glue migriert hat. Den aktuellen Migrationsstatus erfahren Sie über GetCatalogImportStatus (get_catalog_import_status). Weitere Informationen zur Migration eines Athena-Katalogs zu AWS Glue finden Sie unter Schrittweises Upgrade auf den AWS Glue Data Catalog im Amazon-Athena-Benutzerhandbuch.

  • Der kontoübergreifende Zugriff wird nur für Data-Catalog-Ressourcen unterstützt, einschließlich Datenbanken, Tabellen, benutzerdefinierten Funktionen und Verbindungen.

  • Der kontoübergreifende Zugriff auf den Data Catalog von Athena erfordert, dass Sie den Katalog als eine Athena DataCatalog-Ressource registrieren. Detaillierte Anweisungen finden Sie unter Registrierung eines AWS Glue Data Catalog von einem anderen Konto im Amazon Athena-Benutzerhandbuch.