Konfigurieren Sie den kontoübergreifenden Zugriff auf einen gemeinsamen AWS Glue-Datenkatalog mit Amazon Athena - AWS Prescriptive Guidance

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

Konfigurieren Sie den kontoübergreifenden Zugriff auf einen gemeinsamen AWS Glue-Datenkatalog mit Amazon Athena

Erstellt von Denis Avdonin () AWS

Umwelt: Produktion

Technologien: DataLakes; Analytik; Große Datenmengen

Arbeitslast: Alle anderen Workloads

AWSDienstleistungen: Amazon Athena; Glue AWS

Übersicht

Dieses Muster enthält step-by-step Anweisungen, einschließlich Richtlinienbeispielen für AWS Identity and Access Management (IAM), um die kontenübergreifende gemeinsame Nutzung eines in einem Amazon Simple Storage Service (Amazon S3) -Bucket gespeicherten Datensatzes mithilfe des AWS Glue-Datenkatalogs zu konfigurieren. Sie können den Datensatz in einem S3-Bucket speichern. Die Metadaten werden von einem AWS Glue-Crawler gesammelt und in den AWS Glue-Datenkatalog aufgenommen. Der S3-Bucket und der AWS Glue-Datenkatalog befinden sich in einem AWS Konto, das als Datenkonto bezeichnet wird. Sie können den Zugriff auf IAM Principals in einem anderen AWS Konto gewähren, das als Verbraucherkonto bezeichnet wird. Benutzer können die Daten im Verbraucherkonto mithilfe der serverlosen Amazon Athena Athena-Abfrage-Engine abfragen.

Voraussetzungen und Einschränkungen

Voraussetzungen

Versionen der Produkte

Dieses Muster funktioniert nur mit Athena-Engine-Version 2 und Athena-Engine-Version 3. Wir empfehlen Ihnen, auf Athena-Engine-Version 3 zu aktualisieren. Wenn Sie kein Upgrade von Athena-Engine-Version 1 auf Athena-Engine-Version 3 durchführen können, folgen Sie dem Ansatz für den kontoübergreifenden Zugriff auf den AWS Glue-Datenkatalog mit Amazon Athena im AWS Big Data-Blog.

Architektur

Zieltechnologie-Stack

  • Amazon Athena

  • Amazon-Simple-Storage-Service (Amazon-S3)

  • AWS Glue

  • AWSIdentity and Access Management (IAM)

  • AWSSchlüsselverwaltungsdienst (AWSKMS)

Das folgende Diagramm zeigt eine Architektur, die IAM Berechtigungen verwendet, um Daten in einem S3-Bucket in einem AWS Konto (Datenkonto) mit einem anderen AWS Konto (Verbraucherkonto) über den AWS Glue-Datenkatalog zu teilen.

Teilen eines Datensatzes in einem S3-Bucket zwischen einem Datenkonto und einem Verbraucherkonto mithilfe des AWS Glue-Datenkatalogs.

Das Diagramm zeigt den folgenden Workflow:

  1. Die S3-Bucket-Richtlinie im Datenkonto gewährt Berechtigungen für eine IAM Rolle im Verbraucherkonto und für die AWS Glue-Crawler-Servicerolle im Datenkonto.

  2. Die AWS KMS Schlüsselrichtlinie im Datenkonto gewährt Berechtigungen für die IAM Rolle im Verbraucherkonto und für die AWS Glue-Crawler-Servicerolle im Datenkonto.

  3. Der AWS Glue-Crawler im Datenkonto erkennt das Schema der Daten, die im S3-Bucket gespeichert sind.

  4. Die Ressourcenrichtlinie des AWS Glue-Datenkatalogs im Datenkonto gewährt Zugriff auf die IAM Rolle im Verbraucherkonto.

  5. Ein Benutzer erstellt mithilfe eines AWS CLI Befehls eine benannte Katalogreferenz im Kundenkonto.

  6. Eine IAM Richtlinie gewährt einer IAM Rolle im Verbraucherkonto Zugriff auf Ressourcen im Datenkonto. Die Vertrauensrichtlinie der IAM Rolle ermöglicht es Benutzern im Verbraucherkonto, die IAM Rolle zu übernehmen.

  7. Ein Benutzer im Verbraucherkonto übernimmt die IAM Rolle und greift mithilfe von SQL Abfragen auf Objekte im Datenkatalog zu.

  8. Die serverlose Athena Engine führt die Abfragen ausSQL.

Hinweis: IAMBewährte Methoden empfehlen, einer IAM Rolle Berechtigungen zu erteilen und einen Identitätsverbund zu verwenden.

Tools

  • Amazon Athena ist ein interaktiver Abfrageservice, mit dem Sie Daten mithilfe von Standards SQL direkt in Amazon S3 analysieren können.

  • Amazon Simple Storage Service (Amazon S3) ist ein cloudbasierter Objektspeicherservice, der Sie beim Speichern, Schützen und Abrufen beliebiger Datenmengen unterstützt.

  • AWSGlue ist ein vollständig verwalteter Dienst zum Extrahieren, Transformieren und Laden (ETL). Er hilft Ihnen dabei, Daten zuverlässig zu kategorisieren, zu bereinigen, anzureichern und zwischen Datenspeichern und Datenströmen zu verschieben.

  • AWSMit Identity and Access Management (IAM) können Sie den Zugriff auf Ihre AWS Ressourcen sicher verwalten, indem Sie kontrollieren, wer authentifiziert und autorisiert ist, diese zu verwenden.

  • AWSDer Key Management Service (AWSKMS) unterstützt Sie bei der Erstellung und Kontrolle kryptografischer Schlüssel zum Schutz Ihrer Daten.

Epen

AufgabeBeschreibungErforderliche Fähigkeiten

Gewähren Sie Zugriff auf Daten im S3-Bucket.

Erstellen Sie eine S3-Bucket-Richtlinie auf der Grundlage der folgenden Vorlage und weisen Sie die Richtlinie dem Bucket zu, in dem die Daten gespeichert sind.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "AWS": [ "arn:aws:iam::<consumer account id>:role/<role name>", "arn:aws:iam::<data account id>:role/service-role/AWSGlueServiceRole-data-bucket-crawler" ] }, "Action": "s3:GetObject", "Resource": "arn:aws:s3:::data-bucket/*" }, { "Effect": "Allow", "Principal": { "AWS": [ "arn:aws:iam::<consumer account id>:role/<role name>", "arn:aws:iam::<data account id>:role/service-role/AWSGlueServiceRole-data-bucket-crawler" ] }, "Action": "s3:ListBucket", "Resource": "arn:aws:s3:::data-bucket" } ] }

Die Bucket-Richtlinie gewährt Berechtigungen für die IAM Rolle im Verbraucherkonto und für die AWS Glue-Crawler-Servicerolle im Datenkonto.

Cloud-Administrator

(Falls erforderlich) Gewähren Sie Zugriff auf den Datenverschlüsselungsschlüssel.

Wenn der S3-Bucket mit einem AWS KMS Schlüssel verschlüsselt ist, kms:Decrypt erteilen Sie der IAM Rolle im Verbraucherkonto und der AWS Glue-Crawler-Servicerolle im Datenkonto die Erlaubnis für den Schlüssel.

Aktualisieren Sie die Schlüsselrichtlinie mit der folgenden Aussage:

{ "Effect": "Allow", "Principal": { "AWS": [ "arn:aws:iam::<consumer account id>:role/<role name>", "arn:aws:iam::<data account id>:role/service-role/AWSGlueServiceRole-data-bucket-crawler" ] }, "Action": "kms:Decrypt", "Resource": "arn:aws:kms:<region>:<data account id>:key/<key id>" }
Cloud-Administrator

Gewähren Sie dem Crawler Zugriff auf die Daten.

Hängen Sie die folgende IAM Richtlinie an die Servicerolle des Crawlers an:

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "s3:GetObject", "Resource": "arn:aws:s3:::data-bucket/*" }, { "Effect": "Allow", "Action": "s3:ListBucket", "Resource": "arn:aws:s3:::data-bucket" } ] }
Cloud-Administrator

(Falls erforderlich) Gewähren Sie dem Crawler Zugriff auf den Datenverschlüsselungsschlüssel.

Wenn der S3-Bucket mit einem AWS KMS Schlüssel verschlüsselt ist, erteilen Sie der Servicerolle des Crawlers die kms:Decrypt Erlaubnis für den Schlüssel, indem Sie ihm die folgende Richtlinie anhängen:

{ "Effect": "Allow", "Action": "kms:Decrypt", "Resource": "arn:aws:kms:<region>:<data account id>:key/<key id>" }
Cloud-Administrator

Gewähren Sie der IAM Rolle im Verbraucherkonto und dem Crawler Zugriff auf den Datenkatalog.

  1. Melden Sie sich bei der AWS Management Console an und öffnen Sie die AWSGlue-Konsole.

  2. Wählen Sie im Navigationsbereich unter Datenkatalog die Option Einstellungen aus.

  3. Fügen Sie im Abschnitt Berechtigungen die folgende Anweisung hinzu, und wählen Sie dann Speichern aus.

{ "Version" : "2012-10-17", "Statement" : [ { "Effect" : "Allow", "Principal" : { "AWS" : [ "arn:aws:iam::<consumer account id>:role/<role name>", "arn:aws:iam::<data account id>:role/service-role/AWSGlueServiceRole-data-bucket-crawler" ] }, "Action" : "glue:*", "Resource" : [ "arn:aws:glue:<region>:<data account id>:catalog", "arn:aws:glue:<region>:<data account id>:database/*", "arn:aws:glue:<region>:<data account id>:table/*" ] } ] }

Diese Richtlinie erlaubt alle AWS Glue-Aktionen für alle Datenbanken und Tabellen im Datenkonto. Sie können die Richtlinie so anpassen, dass den Benutzerprinzipalen nur die erforderlichen Berechtigungen gewährt werden. Sie können beispielsweise schreibgeschützten Zugriff auf bestimmte Tabellen oder Ansichten in einer Datenbank gewähren.

Cloud-Administrator
AufgabeBeschreibungErforderliche Fähigkeiten

Erstellen Sie eine benannte Referenz für den Datenkatalog.

Um eine benannte Datenkatalogreferenz zu erstellen, verwenden Sie CloudShelloder eine lokal installierte AWS CLI Datei, um den folgenden Befehl auszuführen:

aws athena create-data-catalog --name <shared catalog name> --type GLUE --parameters catalog-id=<data account id>
Cloud-Administrator

Gewähren Sie der IAM Rolle im Verbraucherkonto Zugriff auf die Daten.

Fügen Sie der IAM Rolle im Verbraucherkonto die folgende Richtlinie hinzu, um der Rolle kontoübergreifenden Zugriff auf die Daten zu gewähren:

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "s3:GetObject", "Resource": "arn:aws:s3:::data-bucket/*" }, { "Effect": "Allow", "Action": "s3:ListBucket", "Resource": "arn:aws:s3:::data-bucket" }, { "Effect": "Allow", "Action": "glue:*", "Resource": [ "arn:aws:glue:<region>:<data account id>:catalog", "arn:aws:glue:<region>:<data account id>:database/*", "arn:aws:glue:<region>:<data account id>:table/*" ] } ] }

Verwenden Sie als Nächstes die folgende Vorlage, um anzugeben, welche Benutzer die IAM Rolle in ihrer Vertrauensrichtlinie akzeptieren können:

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::<consumer account id>:user/<IAM user>" }, "Action": "sts:AssumeRole" } ] }

Erteilen Sie den Benutzern abschließend Berechtigungen zur Übernahme der IAM Rolle, indem Sie der Benutzergruppe, zu der sie gehören, dieselbe Richtlinie zuordnen.

Cloud-Administrator

(Falls erforderlich) Gewähren Sie der IAM Rolle im Verbraucherkonto Zugriff auf den Datenverschlüsselungsschlüssel.

Wenn der S3-Bucket mit einem AWS KMS Schlüssel verschlüsselt ist, erteilen Sie der IAM Rolle im Verbraucherkonto die kms:Decrypt Erlaubnis für den Schlüssel, indem Sie ihm die folgende Richtlinie anhängen:

{ "Effect": "Allow", "Action": "kms:Decrypt", "Resource": "arn:aws:kms:<region>:<data account id>:key/<key id>" }
Cloud-Administrator

Wechseln Sie zur IAM Rolle im Verbraucherkonto, um auf Daten zuzugreifen.

Wechseln Sie als Datenverbraucher zu der IAM Rolle, um auf Daten im Datenkonto zuzugreifen.

Datenkonsument

Greifen Sie auf die Daten zu.

Fragen Sie Daten mit Athena ab. Öffnen Sie beispielsweise den Athena-Abfrage-Editor und führen Sie die folgende Abfrage aus:

SELECT * FROM <shared catalog name>.<database name>.<table name>

Anstatt eine benannte Katalogreferenz zu verwenden, können Sie auch anhand seines Amazon-Ressourcennamens (ARN) auf den Katalog verweisen.

Hinweis: Wenn Sie eine dynamische Katalogreferenz in einer Abfrage oder Ansicht verwenden, setzen Sie den Verweis in doppelte Anführungszeichen (\“). Beispielsweise:

SELECT * FROM \"glue:arn:aws:glue:<region>:<data account id>:catalog\".<database name>.<table name>

Weitere Informationen finden Sie unter Kontoübergreifender Zugriff auf AWS Glue-Datenkataloge im Amazon Athena Athena-Benutzerhandbuch.

Datenverbraucher

Zugehörige Ressourcen

Zusätzliche Informationen

Verwendung von Lake Formation als Alternative für kontenübergreifendes Teilen

Sie können AWS Lake Formation auch verwenden, um den Zugriff auf AWS Glue-Katalogobjekte für mehrere Konten gemeinsam zu nutzen. Lake Formation bietet eine detaillierte Zugriffskontrolle auf Spalten- und Zeilenebene, Tag-basierte Zugriffskontrolle, gesteuerte Tabellen für ACID Transaktionen und andere Funktionen. Lake Formation ist zwar gut in Athena integriert, erfordert jedoch eine zusätzliche Konfiguration im Vergleich zum reinen Ansatz dieses MustersIAM. Wir empfehlen Ihnen, die Entscheidung, Lake Formation oder IAM -only Access Controls zu verwenden, im breiteren Kontext Ihrer Gesamtlösungsarchitektur zu berücksichtigen. Zu den Überlegungen gehören auch, um welche anderen Dienste es sich handelt und wie sie sich in beide Ansätze integrieren lassen.