Wie kann ich Datenbanken und Tabellen aus dem AWS Glue Data Catalog mit AWS Lake Formation kontenübergreifend freigeben?

Letzte Aktualisierung: 05.05.2022

Ich möchte Datenbanken und Tabellen aus dem AWS Glue Data Catalog mit AWS Lake Formation kontenübergreifend freigeben.

Lösung

Mit der kontenübergreifenden Funktion von Lake Formation können Sie anderen AWS-Konten Zugriff zum Schreiben und Freigeben von Daten in den oder aus dem Data Lake gewähren. Die Ressourcen können entweder über eine tagbasierte Zugriffssteuerung oder über benannte Ressourcen freigegeben werden. Dieser Artikel behandelt die Gewährung des kontenübergreifenden Zugriffs auf Data-Catalog-Ressourcen nach der Methode der benannten Ressourcen.

Sicherstellen, dass die Voraussetzungen erfüllt sind

Beachten Sie die folgenden Voraussetzungen, bevor Sie Ihre Data-Catalog-Ressourcen für ein anderes Konto freigeben oder auf Ressourcen zugreifen, die von einem anderen Konto aus freigegeben wurden:

Lake-Formation-Berechtigungen widerrufen

Widerrufen Sie alle Lake-Formation-Berechtigungen aus der Gruppe IAMAllowedPrincipals für die Data-Catalog-Ressource.

Super-Berechtigungen für neue Tabellen verhindern

Verhindern Sie für Data-Catalog-Datenbanken, die eventuell freizugebende Tabellen enthalten, dass neue Tabellen die Standardberechtigung Super für IAMAllowedPrincipals erhalten:

  1. Öffnen Sie die Lake-Formation-Konsole.
  2. Wählen Sie im Navigationsbereich unter Data Catalog die Option Databases (Datenbanken) aus.
  3. Wählen Sie die Datenbank aus, die Sie aktualisieren möchten.
  4. Wählen Sie Actions (Aktionen) und dann Edit (Bearbeiten).
  5. Deaktivieren Sie unter Default permissions for newly created tables (Standardberechtigungen für neu erstellte Tabellen) die Option Use only IAM access control for new tables in this database (Nur IAM-Zugriffssteuerung für neue Tabellen in dieser Datenbank verwenden).
  6. Wählen Sie Save (Speichern) aus.

Weitere Informationen finden Sie unter Super.

Erforderliche Berechtigungen für den kontenübergreifenden Zugriff hinzufügen

Wenn die Ressourcenrichtlinie für den AWS Glue Data Catalog bereits im Konto aktiviert ist, können Sie die Richtlinie entweder entfernen oder der Richtlinie neue Berechtigungen hinzufügen, die für die kontenübergreifende Zugriffsgewährung erforderlich sind. Im Folgenden finden Sie ein Beispiel für eine Ressourcenrichtlinie zur Bereitstellung eines kontenübergreifenden Zugriffs auf AWS Glue für das Konto 5555666677778888 vom Konto 1111222233334444.

Weitere Informationen finden Sie unter Kontenübergreifenden Zugriff gewähren.

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Principal": {
        "Service": "ram.amazonaws.com"
      },
      "Action": "glue:ShareResource",
      "Resource": [
        "arn:aws:glue:us-east-1:1111222233334444:table/*/*",
        "arn:aws:glue:us-east-1:1111222233334444:database/*",
        "arn:aws:glue:us-east-1:1111222233334444:catalog"
      ]
    },
    {
      "Effect": "Allow",
      "Principal": {
        "AWS": "arn:aws:iam::5555666677778888:root"
      },
      "Action": "glue:*",
      "Resource": [
        "arn:aws:glue:us-east-1:1111222233334444:table/*/*",
        "arn:aws:glue:us-east-1:1111222233334444:database/*",
        "arn:aws:glue:us-east-1:1111222233334444:catalog"
      ]
    }
  ]
}

Freigabe für Organisationen ermöglichen

Wenn die Data-Catalog-Ressourcen organisationsübergreifend freigegeben werden sollen, aktivieren Sie die Freigabe für AWS Organizations mithilfe der AWS-RAM-Konsole. Zur Aktivierung dieser Option muss der Benutzer oder die Rolle aus dem AWS Identity and Access Management (IAM) über die IAM-Berechtigung ram:EnableSharingWithAwsOrganization verfügen.

Weitere Informationen finden Sie unter Voraussetzungen für den kontenübergreifenden Zugriff.

Gewährung der erforderlichen IAM-Berechtigungen

Quellkonto: Um die Methode „Benannte Ressourcen“ zum Erteilen kontenübergreifender Berechtigungen zu verwenden, müssen Sie über die erforderlichen IAM-Berechtigungen für AWS Glue und AWS Resource Access Manager (AWS RAM) verfügen. Sie können die von AWS verwaltete Richtlinie AWSLakeFormationCrossAccountManager auswählen, die diese Berechtigungen erteilt, oder eine neue Richtlinie basierend auf dieser Richtlinie erstellen.

Zielkonto: Data Lake-Administratoren in Zielkonten müssen über die folgende zusätzliche Richtlinie verfügen. Diese Richtlinie ermöglicht es dem Administrator, Einladungen zur AWS-RAM-Ressourcenfreigabe anzunehmen und die Freigabe von Ressourcen für Organisationen zu ermöglichen:

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "ram:AcceptResourceShareInvitation",
        "ram:RejectResourceShareInvitation",
        "ec2:DescribeAvailabilityZones",
        "ram:EnableSharingWithAwsOrganization"
      ],
      "Resource": "*"
    }
  ]
}

Hinweis: Der IAM-Benutzer oder die IAM-Rolle, die die Einladung zur Ressourcenfreigabe in AWS RAM erhält, muss über die erforderlichen IAM-Berechtigungen für glue:PutResourcePolicy verfügen.

Freigabe einer Datenbank und ihrer Tabellen für das Zielkonto

Gehen Sie wie folgt vor, um eine Datenbank und alle Tabellen in der Datenbank für das Zielkonto freizugeben, das nicht Teil der Organisation ist:

Hinweis: Wenn Sie alle Tabellen in einer Datenbank im Quellkonto freigeben, wird jede im Quellkonto neu erstellte Tabelle automatisch für das Zielkonto freigegeben.

Führen Sie im Quellkonto Folgendes aus:

  1. Öffnen Sie die Lake-Formation-Konsole und melden Sie sich als Data-Lake-Administrator an.
  2. Wählen Sie im Navigationsbereich Databases (Datenbanken) aus.
  3. Wählen Sie die Datenbank aus, die Sie freigeben möchten.
  4. Wählen Sie Actions (Aktionen) und dann Grant (Gewähren).
  5. Wählen Sie External account (Externes Konto).
  6. Geben Sie für AWS account ID oder AWS organization ID die Konto-ID des Zielkontos ein.
  7. Stellen Sie sicher, dass für Table (Tabelle) All tables (Alle Tabellen) ausgewählt ist.
  8. Wählen Sie für Table permissions (Tabellenberechtigungen) undGrantable permissions (Erteilbare Berechtigungen) die Zugriffsberechtigungen aus, die Sie erteilen möchten.
  9. Wählen Sie Grant (Gewähren) aus.

Führen Sie im Zielkonto Folgendes aus:

  1. Öffnen Sie die AWS-RAM-Konsole.
  2. Wählen Sie im Navigationsbereich unter Shared with me (Für mich freigegeben) die OptionResource shares (Ressourcenfreigaben).
  3. Prüfen Sie die Liste der Ressourcenfreigaben, auf die Sie Zugriff erhalten haben.
  4. Zur Annahme der Einladung für die vom Quellkonto freigegebene Ressource wählen Sie die ID der Ressourcenfreigabe aus und wählen Sie Accept resource share (Ressourcenfreigabe annehmen).
  5. Öffnen Sie die Lake-Formation-Konsole.
  6. Wählen Sie im Navigationsbereich Databases (Datenbanken) aus.
    Die freigegebene Datenbank wird in der Liste anzeigt. Die Owner account ID (Konto-ID des Besitzers) für diese Datenbank zeigt die Konto-ID des Quellkontos an.
  7. Wählen Sie die freigegebene Datenbank aus, und wählen Sie dann Actions (Aktionen) aus.
  8. Wählen Sie Create resource link (Ressourcen-Link erstellen).
  9. Gehen Sie auf der Seite Create resource link (Ressourcen-Link erstellen) wie folgt vor:
    Geben Sie für Resource link name den Namen des Ressourcenlinks ein.
    Stellen Sie sicher, dass für Shared database (Freigegebene Datenbank) der Name der freigegebenen Datenbank ausgewählt ist.
    Geben Sie für die Shared database‘s owner ID (Besitzer-ID der freigegebenen Datenbank) die Konto-ID des Quellkontos ein.
  10. Wählen Sie Create (Erstellen) aus.
    Der Ressourcenlink wird erstellt.

Bei Ressourcenlinks handelt es sich um Data-Catalog-Objekte, die Links zu Metadaten-Datenbanken und -Tabellen darstellen, in der Regel zu freigegebenen Datenbanken und Tabellen aus anderen AWS-Konten. Sie erleichtern den kontenübergreifenden Zugriff auf Daten im Data Lake. Nachdem der Ressourcenlink erstellt wurde, können Sie die Tabellen in der freigegebenen Datenbank mit dem Data-Lake-Administratorzugriff abfragen.

Um den IAM-Benutzern/Prinzipalen Zugriff für die freigegebene Datenbank zu gewähren, erteilen Sie die erforderlichen Berechtigungen für den Ressourcenlink und die freigegebene Datenbank. Auf diese Weise können IAM-Benutzer/Prinzipale die freigegebene Datenbank und den Ressourcenlink in ihrer Lake-Formation-Konsole anzeigen. Die IAM-Benutzer können die Datenbank und den Ressourcenlink auch in ihrer Amazon-Athena-Konsole oder in Amazon Redshift Spectrum anzeigen.

Gehen Sie wie folgt vor, um IAM-Benutzern Zugriff auf den Ressourcenlink zu gewähren:

  1. Öffnen Sie die Lake-Formation-Konsole und melden Sie sich als Data-Lake-Administrator an.
  2. Wählen Sie im Navigationsbereich Databases (Datenbanken) aus.
  3. Wählen Sie den Ressourcenlink aus, den Sie erstellt haben.
  4. Wählen Sie Actions (Aktionen) und dann Grant (Gewähren).
  5. Wählen Sie unter Principals die Option IAM users and roles (IAM-Benutzer und -Rollen) aus.
  6. Wählen Sie für IAM users and roles (IAM-Benutzer und -Rollen) den IAM-Benutzer oder Prinzipal aus, dem Sie Zugriff gewähren müssen.
  7. Wählen Sie unter Resource link permissions (Berechtigungen für Ressourcenlinks) die Option Describe (Beschreiben).
  8. Wählen Sie Grant (Gewähren) aus.

Gehen Sie wie folgt vor, um den IAM-Benutzern Zugriff auf die freigegebenen Datenbanken zu gewähren:

  1. Öffnen Sie die Lake-Formation-Konsole und melden Sie sich als Data-Lake-Administrator an.
  2. Wählen Sie im Navigationsbereich Databases (Datenbanken) aus.
  3. Wählen Sie die freigegebene Datenbank aus.
  4. Wählen Sie Actions (Aktionen) und dann Grant (Gewähren).
  5. Wählen Sie unter Principals die Option IAM users and roles (IAM-Benutzer und -Rollen) aus.
  6. Wählen Sie für IAM users and roles (IAM-Benutzer und -Rollen) den IAM-Benutzer oder Prinzipal aus, dem Sie Zugriff gewähren müssen.
  7. Wählen Sie unter Database permissions (Datenbankberechtigungen) Describe (Beschreiben) aus.
    Hinweis: Dieser Schritt bietet den Benutzern die Mindestberechtigungen zum Anzeigen der freigegebenen Datenbank.
  8. Wählen Sie Grant (Gewähren) aus.

Um Zugriff auf alle oder bestimmte Tabellen in der Datenbank zu gewähren, wählen Sie die Option All tables (Alle Tabellen) aus:

  1. Wählen Sie den Ressourcenlink aus.
  2. Wählen Sie Actions (Aktionen) und dann Grant (Gewähren).
  3. Wählen Sie IAM users and roles (IAM-Benutzer und -Rollen) aus.
  4. Wählen Sie für IAM users and roles (IAM-Benutzer und -Rollen) den Benutzer/Prinzipal aus, für den Sie Zugriff gewähren möchten.
  5. Führen Sie unter LF-Tags or catalog resources (LF-Tags oder Katalogressourcen) die folgenden Schritte aus:
    Um Zugriff auf alle Tabellen in der Datenbank zu gewähren, wählen Sie für Tables - optional (Tabellen - optional) All tables (Alle Tabellen) aus.
    Um Zugriff nur auf bestimmte Tabellen in der Datenbank zu gewähren, wählen Sie für Tables - optional (Tabellen - optional) die betreffenden Tabellen aus.
  6. Wählen Sie für Table permissions (Tabellenberechtigungen) und Grantable permissions (Erteilbare Berechtigungen) Select (Auswählen) und Describe (Beschreiben) aus.
  7. Wählen Sie Grant (Gewähren) aus.

Hinweis: Sie können nur die Berechtigungen erteilen, die Sie unter Grantable permissions (Erteilbare Berechtigungen) im Quellkonto ausgewählt haben.

Nachdem Sie die erforderlichen Berechtigungen erteilt haben, können Sie die Tabelle in Athena erfolgreich vom Zielkonto aus abfragen.

Nur Tabellen für das Zielkonto freigeben

Um einzelne Tabellen für das Zielkonto freizugeben, befolgen Sie die Anweisungen des vorherigen Abschnitts mit den folgenden Änderungen.

Quellkonto:

Um über die Lake-Formation-Konsole Zugriff auf das Zielkonto zu gewähren, wählen Sie statt der Datenbank die einzelnen Tabellen aus.

Zielkonto:

  • Akzeptieren Sie die Ressourcenfreigabe in der AWS-RAM-Konsole, um auf die freigegebene Tabelle in der Lake-Formation-Konsole zuzugreifen.
  • Erstellen Sie einen Ressourcenlink für die freigegebene Tabelle. Nachdem der Ressourcenlink erstellt wurde, können Sie die freigegebene Tabelle mit dem Data-Lake-Administratorzugriff abfragen.
  • Um den IAM-Benutzern/Prinzipalen Zugriff auf die freigegebene Tabelle zu gewähren, müssen Sie Berechtigungen für den Ressourcenlink erteilen.

Weitere Erwägungen prüfen

  • Wenn Sie Berechtigungen für die Tabelle erteilen, können Sie den Zugriff nur auf bestimmte Spalten in der Tabelle einschränken. In diesem Fall kann das Zielkonto nur diese Spalten in der freigegebenen Tabelle anzeigen.
  • Stellen Sie sicher, dass die IAM-Benutzer/Prinzipale des Zielkontos Zugriff auf den Pfad des Amazon Simple Storage Service (Amazon S3) im Quellkonto haben.
  • Wenn Sie die Berechtigungen widerrufen, die zuvor vom Quellkonto erteilt wurden, kann das Zielkonto nicht auf die freigegebene Datenbank/Tabelle zugreifen. Der Ressourcenlink, den Sie im Zielkonto erstellt haben, wird jedoch nicht automatisch gelöscht. Sie müssen den Ressourcenlink manuell löschen.
  • Wenn Sie eine Datenbank/Tabelle löschen, werden die Ressourcenfreigaben im AWS RAM nicht automatisch gelöscht. Daher müssen Sie die kontenübergreifenden Berechtigungen manuell widerrufen, bevor Sie eine freigegebene Datenbank oder Tabelle löschen.