Zugriff auf Datenbanken und Tabellen in AWS Glue Data Catalog konfigurieren - Amazon Athena

Zugriff auf Datenbanken und Tabellen in AWS Glue Data Catalog konfigurieren

Wenn Sie AWS Glue Data Catalog mit Amazon Athena verwenden, können Sie Richtlinien auf Ressourcenebene für die Datenkatalog-Objekte Datenbank und Tabelle definieren, die in Athena verwendet werden.

Anmerkung

Dieses Thema behandelt die Sicherheit auf Datenbank- und Tabellenebene. Hinweise zum Konfigurieren der Sicherheit auf Spalten-, Zeilen- und Zellen-Ebene finden Sie unter Daten-Filterung und Sicherheit auf Zellen-Ebene in Lake Formation.

Berechtigungen auf Ressourcenebene werden in identitätsbasierten IAM-Richtlinien definiert.

Wichtig

In diesem Abschnitt werden Berechtigungen auf Ressourcenebene in identitätsbasierten IAM-Richtlinien besprochen. Diese unterscheiden sich von ressourcenbasierten Richtlinien. Weitere Informationen zu den Unterschieden finden Sie unter Identitätsbasierte Richtlinien und ressourcenbasierte Richtlinien im IAM-Benutzerhandbuch.

Beachten Sie für diese Aufgaben folgende Themen:

Zur Ausführung dieser Aufgabe Beachten Sie folgendes Thema
Erstellen Sie eine IAM-Richtlinie, die Zugriff auf Ressourcen definiert Erstellen von IAM-Richtlinien im IAM-Benutzerhandbuch.
Informationen zu den in verwendeten identitätsbasierten Richtlinien (IAM-Richtlinien) AWS Glue Identitätsbasierte Richtlinien (IAM-Richtlinien) im AWS Glue-Entwicklerhandbuch.

In diesem Abschnitt

Einschränkungen

Berücksichtigen Sie die folgenden Einschränkungen, wenn Sie die Zugriffskontrolle auf Datenbank- und Tabellenebene für Athena AWS Glue Data Catalog verwenden:

  • Für IAM Identity Center aktivierte Athena-Arbeitsgruppen muss Lake Formation für die Verwendung von IAM-Identity-Center-Identitäten konfiguriert sein. Weitere Informationen finden Sie unter Integration von IAM Identity Center im AWS Lake Formation-Entwicklerhandbuch.

  • Sie können den Zugriff nur auf Datenbanken und Tabellen beschränken. Diese Kontrollen gelten auf Tabellenebene. Sie können den Zugriff nicht auf einzelne Partitionen innerhalb einer Tabelle beschränken. Weitere Informationen finden Sie unter Informationen zur Zugriffskontrolle für Tabellenpartitionen und -Versionen in AWS Glue.

  • AWS Glue Data Catalog enthält folgende Ressourcen: CATALOG, DATABASE, TABLE und FUNCTION.

    Anmerkung

    Ressourcen in dieser Liste, die zwischen Athena und AWS Glue Data Catalog gleich sind, sind für jedes Konto TABLE, DATABASE und CATALOG. Function ist spezifisch für AWS Glue. Zum Löschen von Aktionen in Athena müssen Sie Berechtigungen für AWS Glue-Aktionen einschließen. Siehe Beispiele für Berechtigungen auf Datenbank- und Tabellenebene.

    Die Hierarchie lautet wie folgt: CATALOG ist ein Vorgänger von allen DATABASES in jedem Konto und jede DATABASE ist ein Vorgänger für alle ihre TABLES und FUNCTIONS. Beispiel: Für eine Tabelle mit dem Namen table_test einer Datenbank db im Katalog in Ihrem Konto sind ihre Vorgänger db und der Katalog in Ihrem Konto. Für die db-Datenbank ist ihr Vorgänger der Katalog in Ihrem Konto und ihre untergeordneten Elemente sind Tabellen und Funktionen. Weitere Informationen über die hierarchische Struktur von Ressourcen finden Sie unter Liste der ARNs im Datenkatalog im AWS Glue Entwicklerhandbuch.

  • Für jede Nicht-Löschaktion in Athena auf einer Ressource, z. B. CREATE DATABASE, CREATE TABLE, SHOW DATABASE, SHOW TABLE oder ALTER TABLE, benötigen Sie Berechtigungen zum Aufrufen dieser Aktion auf dieser Ressource (Tabelle oder Datenbank) und alle Vorgänger dieser Ressource in Datenkatalog. Beispielsweise sind die Vorgänger einer Tabelle die Datenbank, zu der sie gehört, und der Katalog für das Konto. Für eine Datenbank ist ihr Vorgänger der Katalog für das Konto. Siehe Beispiele für Berechtigungen auf Datenbank- und Tabellenebene.

  • Für eine Löschaktion in Athena, wie z. B. DROP DATABASE oder DROP TABLE, müssen Sie auch Berechtigungen zum Aufrufen der Löschaktion auf allen Vorgängern und untergeordneten Elemente der Ressource im Datenkatalog besitzen. Wenn Sie beispielsweise eine Datenbank löschen, benötigen Sie Berechtigungen für die Datenbank, den Katalog, der ihr untergeordnetes Element ist, sowie alle Tabellen und benutzerdefinierten Funktionen, die untergeordnete Elemente von ihnen sind. Eine Tabelle hat keine untergeordneten Elemente. Zur Ausführung von DROP TABLE müssen Sie Berechtigungen für diese Aktion auf der Tabelle der Datenbank, zu dem sie gehört, und den Katalog haben. Siehe Beispiele für Berechtigungen auf Datenbank- und Tabellenebene.

AWS Glue-Zugriff auf Ihren Katalog und Ihre Datenbank per AWS-Region konfigurieren

Damit Athena mit dem AWS Glue arbeiten kann, ist eine AWS-Region-Richtlinie erforderlich, die Zugriff auf Ihre Datenbank und auf die AWS Glue Data Catalog in Ihrem Konto per gewährt. Um Datenbanken zu erstellen, ist ebenfalls eine CreateDatabase-Genehmigung erforderlich. Ersetzen Sie in der folgenden Beispielrichtlinie die AWS-Region, AWS-Konto-ID und den Datenbanknamen durch Ihre eigenen.

{ "Sid": "DatabasePermissions", "Effect": "Allow", "Action": [ "glue:GetDatabase", "glue:GetDatabases", "glue:CreateDatabase" ], "Resource": [ "arn:aws:glue:us-east-1:123456789012:catalog", "arn:aws:glue:us-east-1:123456789012:database/default" ] }

Informationen zur Zugriffskontrolle für Tabellenpartitionen und -Versionen in AWS Glue

Tabellen können in AWS Glue Partitionen und Versionen haben. Tabellenversionen und -partitionen gelten nicht als unabhängige Ressourcen in AWS Glue. Zugriff auf die Tabellenversionen und -partitionen wird durch Erteilen des Zugriffs auf die Tabelle und Vorgängerressourcen für die Tabelle gewährt.

Für die Zwecke der Zugriffskontrolle gelten die folgenden Zugriffsberechtigungen:

  • Kontrollen gelten auf Tabellenebene. Sie können den Zugriff nur auf Datenbanken und Tabellen beschränken. Wenn Sie zum Beispiel den Zugriff auf eine partitionierte Tabelle gewähren, gilt dies für alle Partitionen in der Tabelle. Sie können den Zugriff nicht auf einzelne Partitionen innerhalb einer Tabelle beschränken.

    Wichtig

    Um Aktionen in AWS Glue auf Partitionen auszuführen, sind Berechtigungen für Partitionsaktionen auf Katalog-, Datenbank- und Tabellenebene erforderlich. Der Zugriff auf Partitionen innerhalb einer Tabelle ist nicht ausreichend. Um z. B. GetPartitions auf Tabelle myTable in der Datenbank myDB auszuführen, müssen Sie glue:GetPartitions die Berechtigungen für den Katalog, die myDB-Datenbank und die myTable-Ressourcen erteilen.

  • Zugriffskontrollen gelten nicht für Tabellenversionen. Wie bei Partitionen wird der Zugriff auf frühere Versionen einer Tabelle durch den Zugriff auf die Tabellenversions-APIs in AWS Glue in der Tabelle und für die Tabellenvorfahren gewährt.

Weitere Informationen zu Berechtigungen für AWS Glue-Aktionen finden Sie unter AWS Glue-API-Berechtigungen: Referenz für Aktionen und Ressourcen im AWS Glue Entwicklerhandbuch.

Beispiele für Berechtigungen auf Datenbank- und Tabellenebene

In der folgenden Tabelle sind Beispiele für identitätsbasierte IAM-Richtlinien aufgeführt, die einen Zugriff auf Datenbanken und Tabellen in Athena ermöglichen. Wir empfehlen Ihnen, mit diesen Beispielen zu beginnen und diese Ihren Anforderungen entsprechend anzupassen, um bestimmte Aktionen für einzelne Datenbanken und Tabellen zuzulassen oder zu verweigern.

Zu diesen Beispielen gehört der Zugriff auf Datenbanken und Kataloge, sodass Athena und AWS Glue zusammenarbeiten können. Nehmen Sie bei mehreren AWS-Regionen diese Richtlinie für jede Ihrer Datenbanken und ihrer Kataloge in einer Zeile für jede Region auf.

Ersetzen Sie in den Beispielen außerdem die Namen der example_db-Datenbank und test-Tabelle durch die Namen Ihrer Datenbanken und Tabellen.

DDL-Anweisung Beispiel für eine IAM-Zugriffsrichtlinie, die Zugriff auf die Ressource erteilt
ALTER DATABASE Hiermit können Sie die Eigenschaften für die example_db-Datenbank ändern.
{ "Effect": "Allow", "Action": [ "glue:GetDatabase", "glue:UpdateDatabase" ], "Resource": [ "arn:aws:glue:us-east-1:123456789012:catalog", "arn:aws:glue:us-east-1:123456789012:database/example_db" ] }
CREATE DATABASE Hiermit können Sie die Datenbank mit dem Namen erstellen example_db.
{ "Effect": "Allow", "Action": [ "glue:GetDatabase", "glue:CreateDatabase" ], "Resource": [ "arn:aws:glue:us-east-1:123456789012:catalog", "arn:aws:glue:us-east-1:123456789012:database/example_db" ] }
CREATE TABLE Hiermit können Sie eine Tabelle mit dem Namen test in der example_db-Datenbank erstellen.
{ "Sid": "DatabasePermissions", "Effect": "Allow", "Action": [ "glue:GetDatabase", "glue:GetDatabases" ], "Resource": [ "arn:aws:glue:us-east-1:123456789012:catalog", "arn:aws:glue:us-east-1:123456789012:database/example_db" ] }, { "Sid": "TablePermissions", "Effect": "Allow", "Action": [ "glue:GetTables", "glue:GetTable", "glue:GetPartitions", "glue:CreateTable" ], "Resource": [ "arn:aws:glue:us-east-1:123456789012:catalog", "arn:aws:glue:us-east-1:123456789012:database/example_db", "arn:aws:glue:us-east-1:123456789012:table/example_db/test" ] }
DROP DATABASE Hiermit können Sie die example_db-Datenbank mit allen darin enthaltenen Tabellen löschen.
{ "Effect": "Allow", "Action": [ "glue:GetDatabase", "glue:DeleteDatabase", "glue:GetTables", "glue:GetTable", "glue:DeleteTable" ], "Resource": [ "arn:aws:glue:us-east-1:123456789012:catalog", "arn:aws:glue:us-east-1:123456789012:database/example_db", "arn:aws:glue:us-east-1:123456789012:table/example_db/*", "arn:aws:glue:us-east-1:123456789012:userDefinedFunction/example_db/*" ] }
DROP TABLE Hiermit können Sie eine partitionierte Tabelle mit dem Namen test in der example_db-Datenbank löschen. Falls Ihre Tabelle keine Partitionen hat, nehmen Sie keine Aktionen für Partitionen auf.
{ "Effect": "Allow", "Action": [ "glue:GetDatabase", "glue:GetTable", "glue:DeleteTable", "glue:GetPartitions", "glue:GetPartition", "glue:DeletePartition" ], "Resource": [ "arn:aws:glue:us-east-1:123456789012:catalog", "arn:aws:glue:us-east-1:123456789012:database/example_db", "arn:aws:glue:us-east-1:123456789012:table/example_db/test" ] }
MSCK REPAIR TABLE Ermöglicht das Aktualisieren von Katalog-Metadaten, nachdem Sie Hive-kompatible Partitionen zur Tabelle mit dem Namen test in die example_db-Datenbank hinzugefügt haben.
{ "Effect": "Allow", "Action": [ "glue:GetDatabase", "glue:CreateDatabase", "glue:GetTable", "glue:GetPartitions", "glue:GetPartition", "glue:BatchCreatePartition" ], "Resource": [ "arn:aws:glue:us-east-1:123456789012:catalog", "arn:aws:glue:us-east-1:123456789012:database/example_db", "arn:aws:glue:us-east-1:123456789012:table/example_db/test" ] }
SHOW DATABASES Hiermit können Sie alle Datenbanken in auflisten AWS Glue Data Catalog.
{ "Effect": "Allow", "Action": [ "glue:GetDatabase", "glue:GetDatabases" ], "Resource": [ "arn:aws:glue:us-east-1:123456789012:catalog", "arn:aws:glue:us-east-1:123456789012:database/*" ] }
SHOW TABLES Hiermit können Sie alle Tabellen in der example_db-Datenbank auflisten.
{ "Effect": "Allow", "Action": [ "glue:GetDatabase", "glue:GetTables" ], "Resource": [ "arn:aws:glue:us-east-1:123456789012:catalog", "arn:aws:glue:us-east-1:123456789012:database/example_db", "arn:aws:glue:us-east-1:123456789012:table/example_db/*" ] }