Ressourcenbasierte Richtlinie für AWS Glue - AWS Glue

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.

Ressourcenbasierte Richtlinie für AWS Glue

Dieser Abschnitt enthält beispielhafte Ressourcenrichtlinien, einschließlich Richtlinien, die kontoübergreifenden Zugriff gewähren.

Die folgenden Beispiele verwenden AWS Command Line Interface (AWS CLI) zur Interaktion mit AWS Glue-Service-API-Vorgängen. Sie können die gleichen Operationen auch auf der AWS Glue-Konsole oder mit einem der AWS SDKs ausführen.

Wichtig

Durch das Ändern einer AWS Glue-Ressourcenrichtlinie können Sie versehentlich Berechtigungen für bestehende AWS Glue-Benutzer in Ihrem Konto entziehen und unerwartete Störungen verursachen. Probieren Sie diese Beispiele nur in Entwicklungs- oder Testkonten aus und stellen Sie sicher, dass sie keine bestehenden Arbeitsabläufe unterbrechen, bevor Sie die Änderungen vornehmen.

Überlegungen zur Verwendung ressourcenbasierter Richtlinien mit AWS Glue

Anmerkung

IAM-Richtlinien und AWS Glue-Ressourcenrichtlinien brauchen zur Umsetzung einige Sekunden. Nachdem Sie eine neue Richtlinie angefügt haben, stellen Sie möglicherweise fest, dass die alte Richtlinie noch in Kraft ist, bis die neue Richtlinie durch das System verbreitet wurde.

Sie verwenden ein im JSON-Format geschriebenes Richtliniendokument, um eine Ressourcenrichtlinie zu erstellen oder zu ändern. Die Richtliniensyntax ist die gleiche wie bei einer identitätsbasierten IAM-Richtlinie (siehe IAM-JSON-Richtlinienreferenz), mit den folgenden Ausnahmen:

  • Ein "Principal"- oder "NotPrincipal"-Block ist für jede Richtlinienanweisung erforderlich.

  • Das "Principal" oder "NotPrincipal" muss gültige bestehende Prinzipale identifizieren. Platzhalter-Muster (z. B. arn:aws:iam::account-id:user/*) sind nicht erlaubt.

  • Der "Resource"-Block in der Richtlinie erfordert, dass alle Ressourcen-ARN mit der folgenden Syntax für reguläre Ausdrücke übereinstimmen (wobei der erste %s für die Region steht und der zweite %s die Konto-ID ist):

    *arn:aws:glue:%s:%s:(\*|[a-zA-Z\*]+\/?.*)

    Zum Beispiel sind sowohl arn:aws:glue:us-west-2:account-id:* als auch arn:aws:glue:us-west-2:account-id:database/default erlaubt, aber * ist nicht erlaubt.

  • Im Gegensatz zu identitätsbasierten Richtlinien muss eine AWS Glue-Ressourcenrichtlinie ausschließlich Amazon-Ressourcennamen (ARNs) von Ressourcen enthalten, die zu dem Katalog gehören, dem die Richtlinie angefügt ist. Solche ARN beginnen immer mit arn:aws:glue:.

  • Eine Richtlinie kann nicht dazu führen, dass die Identität, die sie erstellt, von der weiteren Erstellung oder Änderung von Richtlinien ausgeschlossen wird.

  • Ein JSON-Dokument für Ressourcenrichtlinien darf eine Größe von 10 kB nicht überschreiten.

Verwenden einer Ressourcenrichtlinie, um den Zugriff auf das gleiche Konto zu steuern

In diesem Beispiel erstellt ein Admin-Benutzer in Konto A eine Ressourcenrichtlinie, die dem IAM-Benutzer Alice in Konto A Vollzugriff auf den Katalog gewährt. Alice hat keine angefügte IAM-Richtlinie.

Um dies zu tun, führt der Administratorbenutzer folgenden AWS CLI-Befehl aus.

# Run as admin of Account A $ aws glue put-resource-policy --profile administrator-name --region us-west-2 --policy-in-json '{ "Version": "2012-10-17", "Statement": [ { "Principal": { "AWS": [ "arn:aws:iam::account-A-id:user/Alice" ] }, "Effect": "Allow", "Action": [ "glue:*" ], "Resource": [ "arn:aws:glue:us-west-2:account-A-id:*" ] } ] }'

Anstatt das JSON-Richtliniendokument als Teil Ihres AWS CLI-Befehls einzugeben, können Sie ein Richtliniendokument in einer Datei speichern und den Dateipfad im AWS CLI-Befehl referenzieren, indem Sie file:// voranstellen. Im Folgenden finden Sie ein Beispiel dafür, wie Sie dies tun können.

$ echo '{ "Version": "2012-10-17", "Statement": [ { "Principal": { "AWS": [ "arn:aws:iam::account-A-id:user/Alice" ] }, "Effect": "Allow", "Action": [ "glue:*" ], "Resource": [ "arn:aws:glue:us-west-2:account-A-id:*" ] } ] }' > /temp/policy.json $ aws glue put-resource-policy --profile admin1 \ --region us-west-2 --policy-in-json file:///temp/policy.json

Nachdem diese Ressourcenrichtlinie verbreitet wurde, kann Alice auf alle AWS Glue-Ressourcen in Konto A zugreifen.

# Run as user Alice $ aws glue create-database --profile alice --region us-west-2 --database-input '{ "Name": "new_database", "Description": "A new database created by Alice", "LocationUri": "s3://my-bucket" }' $ aws glue get-table --profile alice --region us-west-2 --database-name "default" --table-name "tbl1"}

Als Reaktion auf den get-table-Aufruf von Alice gibt der AWS Glue-Service Folgendes zurück.

{ "Table": { "Name": "tbl1", "PartitionKeys": [], "StorageDescriptor": { ...... }, ...... } }