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.
Themen
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.
| 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
s3tablesAktionen, 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ährungs3tables:GetTableDatafü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. DasConditionElement 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:GetTableAktion 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
s3tablescatalogVerbundkatalog 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:GetTableBucketDen Tabellen-Bucket auflösen s3tables:GetNamespaceDer Namespace, der die Tabelle enthält, wird aufgelöst s3tables:GetTableTabellenmetadaten werden abgerufen s3tables:GetTableDataLesen 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:ListBucketnur 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:prefixBedingungen aufs3:ListBucketAktionen 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.