View a markdown version of this page

Referenz zu IAM-Richtlinien - Amazon Aurora

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.

Referenz zu IAM-Richtlinien

Aurora PostgreSQL benötigt IAM-Berechtigungen für den Zugriff auf Ihre Iceberg- und Parquet-Daten in Amazon S3 und optional in Amazon S3 AWS Glue Data Catalog S3-Tabellen. Die spezifischen Berechtigungen hängen von Ihrem Datenformat und davon ab, wie die Daten registriert werden. In diesem Abschnitt werden Beispiele für typische IAM-Richtlinien für Aurora PostgreSQL vorgestellt.

Zusammenfassung der erforderlichen Berechtigungen

In der folgenden Tabelle sind die Berechtigungen zusammengefasst, die Aurora PostgreSQL für jeden Zugriffspfad benötigt. Gewähren Sie nur die Zeile, die Ihrer Konfiguration entspricht.

Erforderliche Berechtigungen nach Datenformat und Zugriffspfad
Datenformat und Zugriffspfad Service Erforderliche Berechtigungen Ressourcen
Apache Parquet, einzelne Datei Amazon S3 s3:GetObject Objektschlüssel
Apache Parquet, Ordner oder Wildcard-Pfad Amazon S3 s3:GetObject, s3:ListBucket Bucket, Präfixbedingung, Objektschlüssel
Apache Iceberg, AWS Glue Data Catalog AWS Glue + Amazon S3 glue:GetTable, s3:GetObject Katalog, Datenbank, Tabelle, Objektschlüssel
Apache Iceberg, AWS Glue Verbundkatalog (Remote-Kataloge wie Snowflake und Databricks) AWS Lake Formation + AWS Glue + Amazon S3 lakeformation:GetDataAccess, glue:GetTable, s3:GetObject Katalog, Datenbank, Tabelle, Objektschlüssel
Apache Parquet, AWS Glue Data Catalog (vom Crawler registriert) AWS Glue + Amazon S3 glue:GetTable, s3:GetObject, s3:ListBucket Katalog, Datenbank, Tabelle, Bucket, Objektschlüssel
Apache Iceberg, Amazon S3 S3-Tabellen bis AWS Glue AWS Glue + Amazon S3 S3-Tabellen glue:GetTable, s3tables:GetTable, s3tables:GetTableBucket, s3tables:GetTableData, s3tables:GetNamespace Katalog, Datenbank, Tabelle, Tabellen-Bucket, Tabelle
Apache Iceberg, Amazon S3 S3-Tabellen nach Tabelle ARN Amazon S3 Tables s3tables:GetTable, s3tables:GetTableBucket, s3tables:GetTableData, s3tables:GetNamespace Tisch, Eimer, Tisch
Irgendein vorheriges, mit SSE-KMS Verschlüsselung + AWS KMS kms:Decrypt KMS-Schlüssel

Drei Punkte wirken sich darauf aus, wie viel Sie gewähren müssen:

  • s3:ListBucketist nur erforderlich, wenn Aurora PostgreSQL Dateien erkennen muss. Ein Speicherort, der einen exakten Objektschlüssel benennt, benötigt keine Auflistung. Iceberg-Tabellen müssen ebenfalls nicht aufgelistet werden, da Iceberg-Manifeste den exakten Schlüssel jeder Datendatei enthalten. Crawler-registered Parquet-Tabellen AWS Glue speichern einen Ordnerpfad und kein Manifest, was bedeutet, dass für diese Tabellen eine Auflistung erforderlich ist.

  • Amazon S3 Tables erfordert vier s3tables Aktionen, nicht eine. Das Auflösen einer Tabelle ist ein mehrstufiger Vorgang im Amazon S3 Tables-Service: Der Tabellen-Bucket, der Namespace, die Tabellenmetadaten und die Tabellendaten werden jeweils separat autorisiert. Nur die Gewährung s3tables:GetTableData führt zu einem Fehler bei der Benennung des Zugriffs verweigert. s3tables:GetTableBucket

  • Cross-account Für den Zugriff sind Berechtigungen auf beiden Seiten erforderlich. Die Beispiele in diesem Abschnitt beziehen sich auf dasselbe Konto. Wenn die Daten einem anderen Konto gehören, müssen sowohl die Ressourcenrichtlinie im Konto des Datenbesitzers als auch die IAM-Richtlinie in Ihrem Konto die Aktion zulassen.

Beispielrichtlinien

Diese Beispielrichtlinien werden amzn-s3-demo-bucket als Bucket-Name, amzn-s3-demo-table-bucket als Bucket-Name für die Amazon S3 S3-Tabellen-Tabelle und 123456789012 als AWS Konto-ID verwendet. Um diese Richtlinien zu verwenden, ersetzen Sie sie durch Ihre eigenen Informationen und beschränken Sie jedes Resource Element nur auf die Daten, auf die sich Ihre Fremdtabellen beziehen. user input placeholders

Beispiel: Parquet-Dateien in Amazon S3

Die folgende Beispielrichtlinie gewährt die Erlaubnis, Parquet-Dateien direkt aus einem Amazon S3 S3-Bucket zu lesen. AWS Glue Data Catalog ist für Parquet nicht erforderlich.

{ "Version": "2012-10-17", "Statement": [ { "Sid": "S3ListBucket", "Effect": "Allow", "Action": "s3:ListBucket", "Resource": "arn:aws:s3:::amzn-s3-demo-bucket", "Condition": { "StringLike": { "s3:prefix": [ "data/orders", "data/orders/*", "data/customers", "data/customers/*" ] } } }, { "Sid": "S3ReadObjects", "Effect": "Allow", "Action": "s3:GetObject", "Resource": [ "arn:aws:s3:::amzn-s3-demo-bucket/data/orders/*", "arn:aws:s3:::amzn-s3-demo-bucket/data/customers/*" ] } ] }

Diese Richtlinie besteht aus zwei Allow Aussagen:

S3ListBucket

Erteilt die Erlaubnis, Dateien im Amazon S3 S3-Bucket aufzulisten, beschränkt auf bestimmte Ordnerpräfixe. Fügen Sie diese Anweisung ein, wenn ein fremder Tabellenspeicherort einen Ordner oder einen Platzhalterpfad benennt, z. B. s3://amzn-s3-demo-bucket/data/orders/ Lassen Sie sie weg, wenn jede Fremdtabelle einen exakten Objektschlüssel benennt. Das Condition Element beschränkt die Auflistung auf die angegebenen Präfixe. Jedes Präfix wird sowohl mit als auch ohne abschließenden Schrägstrich aufgeführt, sodass die Bedingung unabhängig davon, wie das Präfix ausgedrückt wird, zutrifft.

S3ReadObjects

Erteilt die Berechtigung, den Inhalt der Parquet-Datei zu lesen. Die Ressourcen-ARNs sind auf bestimmte Objektschlüsselpräfixe für den Zugriff mit den geringsten Rechten beschränkt.

Beispiel: Iceberg-Tabellen bis AWS Glue Data Catalog und Amazon S3

Die folgende Beispielrichtlinie gewährt die Berechtigung, Iceberg-Tabellen abzufragen, die in registriert sind. AWS Glue Data Catalog

{ "Version": "2012-10-17", "Statement": [ { "Sid": "GlueCatalogAccess", "Effect": "Allow", "Action": "glue:GetTable", "Resource": [ "arn:aws:glue:us-east-1:123456789012:catalog", "arn:aws:glue:us-east-1:123456789012:database/analytics_db", "arn:aws:glue:us-east-1:123456789012:table/analytics_db/orders", "arn:aws:glue:us-east-1:123456789012:table/analytics_db/customers" ] }, { "Sid": "S3ReadObjects", "Effect": "Allow", "Action": "s3:GetObject", "Resource": [ "arn:aws:s3:::amzn-s3-demo-bucket/data/iceberg/orders/*", "arn:aws:s3:::amzn-s3-demo-bucket/data/iceberg/customers/*" ] } ] }

Diese Richtlinie besteht aus zwei Allow Aussagen:

GlueCatalogAccess

Erteilt die Berechtigung zum Lesen von Tabellenmetadaten aus AWS Glue Data Catalog. Für die glue:GetTable Aktion sind Berechtigungen auf drei Ressourcenebenen erforderlich: für den AWS Glue Stammkatalog, die Datenbank, die die Tabelle enthält, und für jede Tabelle, die Sie abfragen möchten. Wenn Sie in einer AWS Glue Fremdtabelle auf einen Tabellen-ARN verweisen, ruft Aurora PostgreSQL die AWS Glue API auf, um Tabellenmetadaten abzurufen, einschließlich des Amazon S3 S3-Speicherorts, des Formats und des Schemas.

S3ReadObjects

Erteilt die Berechtigung, die Iceberg-Metadatendateien und die Parquet-Datendateien von Amazon S3 zu lesen.

Diese Richtlinie erteilt nichts3:ListBucket, was für Iceberg-Tabellen nicht erforderlich ist. Wenn es sich bei der AWS Glue Tabelle nicht um eine Iceberg-Tabelle, sondern um eine vom Crawler registrierte Parquet-Tabelle handelt, fügen Sie die S3ListBucket Anweisung hinzu, die im vorherigen Parquet-Beispiel gezeigt wurde.

Beispiel: Eisberg-Tabellen in Amazon S3 S3-Tabellen

Amazon S3 Tables unterstützt zwei Zugriffspfade, für die jeweils unterschiedliche Berechtigungen erforderlich sind. Verwenden Sie das Beispiel, das Ihrer Fremdtabellendefinition entspricht.

Zugriff über AWS Glue Data Catalog

Die folgende Beispielrichtlinie gewährt die Erlaubnis, eine Amazon S3 S3-Tables-Tabelle über einen AWS Glue ARN im s3tablescatalog Verbundkatalog abzufragen, z. B. arn:aws:glue:us-east-1:123456789012:table/s3tablescatalog/amzn-s3-demo-table-bucket/my_namespace/orders

{ "Version": "2012-10-17", "Statement": [ { "Sid": "GlueCatalogAccess", "Effect": "Allow", "Action": "glue:GetTable", "Resource": [ "arn:aws:glue:us-east-1:123456789012:catalog/s3tablescatalog/amzn-s3-demo-table-bucket", "arn:aws:glue:us-east-1:123456789012:database/s3tablescatalog/amzn-s3-demo-table-bucket/my_namespace", "arn:aws:glue:us-east-1:123456789012:table/s3tablescatalog/amzn-s3-demo-table-bucket/my_namespace/orders" ] }, { "Sid": "S3TablesAccess", "Effect": "Allow", "Action": [ "s3tables:GetTable", "s3tables:GetTableBucket", "s3tables:GetTableData", "s3tables:GetNamespace" ], "Resource": [ "arn:aws:s3tables:us-east-1:123456789012:bucket/amzn-s3-demo-table-bucket", "arn:aws:s3tables:us-east-1:123456789012:bucket/amzn-s3-demo-table-bucket/table/*" ] } ] }

Zugriff über Tabelle ARN

Die folgende Beispielrichtlinie erteilt die Erlaubnis, eine Amazon S3-Tables-Tabelle anhand ihres Tabellen-ARN abzufragen, z. arn:aws:s3tables:us-east-1:123456789012:bucket/amzn-s3-demo-table-bucket/table/1234abcd-12ab-34cd-56ef-1234567890ab B. Dieser Zugriffspfad beinhaltet AWS Glue nichts und es sind auch keine AWS Glue Berechtigungen erforderlich.

{ "Version": "2012-10-17", "Statement": [ { "Sid": "S3TablesAccess", "Effect": "Allow", "Action": [ "s3tables:GetTable", "s3tables:GetTableBucket", "s3tables:GetTableData", "s3tables:GetNamespace" ], "Resource": [ "arn:aws:s3tables:us-east-1:123456789012:bucket/amzn-s3-demo-table-bucket", "arn:aws:s3tables:us-east-1:123456789012:bucket/amzn-s3-demo-table-bucket/table/*" ] } ] }

Die Anweisungen in den vorherigen Beispielen gewähren die folgenden Berechtigungen:

GlueCatalogAccess

Erteilt die Berechtigung zum Auflösen der Tabelle durch AWS Glue Data Catalog. Tabellen-Buckets für Amazon S3 S3-Tabellen werden AWS Glue unter dem s3tablescatalog Verbundkatalog angezeigt, sodass die Ressourcen-ARNs den Tabellen-Bucket-Namen in den Katalog-, Datenbank- und Tabellenpfaden enthalten. Diese Anweisung ist nur erforderlich, wenn Sie über auf die Tabelle zugreifen. AWS Glue Data Catalog

S3TablesAccess

Erteilt die Berechtigung, die Tabelle mithilfe von Amazon S3 S3-Tabellen aufzulösen und zu lesen. Alle vier Aktionen sind erforderlich, und jede Aktion autorisiert einen bestimmten Schritt der Tabellenauflösung:

Amazon S3 Tables-Aktionen und die Schritte, die sie autorisieren
Action Autorisiert
s3tables:GetTableBucket Den Tabellen-Bucket auflösen
s3tables:GetNamespace Der Namespace, der die Tabelle enthält, wird aufgelöst
s3tables:GetTable Tabellenmetadaten werden abgerufen
s3tables:GetTableData Lesen der zugrunde liegenden Iceberg-Daten

Wenn Sie über auf die Tabelle zugreifen AWS Glue Data Catalog, AWS Glue löst im Rahmen der Auflösung des Verbundkatalogs den Tabellen-Bucket und den Namespace in Ihrem Namen auf.

Standardberechtigungen von Amazon S3 wie z. B. s3:GetObject und s3:ListBucket sind für keinen der beiden Zugriffspfade erforderlich.

Für kontoübergreifenden Zugriff können Sie s3tables:GetTableBucket und s3tables:GetNamespace in der Tabellen-Bucket-Richtlinie im Konto des Datenbesitzers statt in Ihrer IAM-Richtlinie gewähren. In dieser Konfiguration erfordert Ihre IAM-Richtlinie nur und. s3tables:GetTable s3tables:GetTableData

Server-side Verschlüsselung mit AWS KMS

Wenn Ihre Daten mit serverseitiger Verschlüsselung mit AWS KMS keys (SSE-KMS) verschlüsselt sind, fügen Sie der Richtlinie für Ihren Zugriffspfad eine Anweisung wie die folgende hinzu. Für Daten, die mit verschlüsselt sind, sind SSE-S3 keine zusätzlichen Berechtigungen erforderlich.

{ "Sid": "KMSDecrypt", "Effect": "Allow", "Action": "kms:Decrypt", "Resource": "arn:aws:kms:us-east-1:123456789012:key/1234abcd-12ab-34cd-56ef-1234567890ab" }

Für einen KMS-Schlüssel, der einem anderen Konto gehört, muss die Schlüsselrichtlinie im Besitzerkonto Ihrer Rolle kms:Decrypt zugewiesen werden, und die IAM-Richtlinie Ihrer Rolle muss diesen Schlüssel zulassenkms:Decrypt. Keine der beiden Richtlinien allein ist ausreichend.

Cross-account Zugang

Wenn Ihre Daten einem anderen Konto gehören, müssen beide Konten die Aktion zulassen. In den folgenden Beispielen 123456789012 liest eine Clusterrolle in einem Konto Parquet-Dateien aus einem Bucket, der dem Konto gehört111122223333.

Die folgende Beispiel-Bucket-Richtlinie erteilt der Clusterrolle im Konto des Datenbesitzers die Berechtigung, Objekte aus dem Bucket zu lesen.

{ "Version": "2012-10-17", "Statement": [ { "Sid": "AllowAuroraAnalyticsRole", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::123456789012:role/amzn-analytics-demo-role" }, "Action": "s3:GetObject", "Resource": "arn:aws:s3:::amzn-s3-demo-bucket/data/orders/*" } ] }

Das folgende Beispiel für eine identitätsbasierte Richtlinie, die der Clusterrolle in Ihrem Konto zugeordnet ist, gewährt dieselbe Berechtigung für dieselbe Ressource.

{ "Version": "2012-10-17", "Statement": [ { "Sid": "S3ReadCrossAccount", "Effect": "Allow", "Action": "s3:GetObject", "Resource": "arn:aws:s3:::amzn-s3-demo-bucket/data/orders/*" } ] }

Wenn eine der Richtlinien die Aktion auslässt, wird die Anfrage abgelehnt. Cross-account Bei Ablehnungen von Amazon S3 wird nicht ermittelt, welcher Seite die Genehmigung fehlt. Überprüfen Sie daher beide Richtlinien.

Dieselbe Anforderung gilt für AWS Glue Ressourcen und AWS KMS Schlüssel, die einem anderen Konto gehören. Wenn Ihr Fremdtabellenspeicherort einen Ordner und nicht einen exakten Objektschlüssel benennt, fügen Sie s3:ListBucket den Bucket-ARN zu beiden Richtlinien hinzu.

IAM-Rollen-Vertrauensrichtlinie

Welche Berechtigungsrichtlinie Sie auch verwenden, fügen Sie sie einer IAM-Rolle hinzu, deren Vertrauensrichtlinie es Amazon RDS ermöglicht, die Rolle im Namen Ihres Aurora-DB-Clusters zu übernehmen, wie im folgenden Beispiel. Die Schlüssel aws:SourceAccount und aws:SourceArn condition schränken die Rolle ein, sodass sie nur im Namen Ihres eigenen Clusters übernommen werden kann.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "rds.amazonaws.com" }, "Action": "sts:AssumeRole", "Condition": { "StringEquals": { "aws:SourceAccount": "123456789012" }, "ArnLike": { "aws:SourceArn": "arn:aws:rds:us-east-1:123456789012:cluster:amzn-rds-demo-cluster" } } } ] }

Bewährte Methoden für IAM-Richtlinien

Beachten Sie bei der Erstellung dieser IAM-Richtlinien die folgenden bewährten Methoden:

  • Verwenden Sie die geringsten Rechte: Gewähren Sie nur die spezifischen Amazon S3 S3-Präfixe, AWS Glue Ressourcen und Amazon S3 S3-Tabellenressourcen, die Ihre Fremdtabellen benötigen. Vermeiden Sie Ressourcen-ARNs mit Platzhaltern (*).

  • Gewähren Sie s3:ListBucket nur dort, wo es benötigt wird: Sehen Sie in der Übersichtstabelle nach, für welche Zugriffspfade dies erforderlich ist.

  • Präfixbedingungen verwenden: Wenden Sie s3:prefix Bedingungen auf s3:ListBucket Aktionen an, um einzuschränken, welche Ordner aufgelistet werden können.

  • Separate Rollen für unterschiedliche Anliegen: Wenn verschiedene Datenbanken oder Benutzer auf unterschiedliche Amazon S3 S3-Daten zugreifen, sollten Sie die Verwendung separater IAM-Rollen für jeden Bereich in Betracht ziehen.

  • Regelmäßige Prüfung: Überprüfen Sie die Richtlinienberechtigungen regelmäßig, um sicherzustellen, dass sie Ihren aktuellen Definitionen für ausländische Tabellen entsprechen.