View a markdown version of this page

Vorlagen für Richtlinien - AWS Identitäts- und Zugriffsverwaltung

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.

Vorlagen für Richtlinien

Bei Richtlinienvorlagen handelt es sich um ein neues IAM-Konstrukt, mit dem temporäre Berechtigungen definiert werden, die Partner in Kundenkonten anfordern. Wie reguläre IAM-Richtlinien definieren sie Berechtigungen mithilfe von Anweisungen mit den Elementen Effect, Action, Resource und Condition. Der wesentliche Unterschied besteht darin, dass Richtlinienvorlagen Parameter (wie @ {BucketName}) enthalten, die beim Erstellen einer Delegierungsanfrage durch tatsächliche Werte ersetzt werden.

So funktionieren Richtlinienvorlagen

Im Rahmen des Onboarding-Prozesses registrieren Sie Ihre Richtlinienvorlagen bei AWS. AWS weist jeder Vorlage eine eindeutige ARN zu, auf die Sie beim Erstellen von Delegierungsanfragen verweisen.

Wenn Sie eine Delegierungsanfrage erstellen, geben Sie Folgendes an:

  • Der ARN der Richtlinienvorlage

  • Parameterwerte, die in die Vorlage eingefügt werden sollen

AWS kombiniert die Vorlage mit Ihren Parameterwerten, um eine Standard-IAM-Richtlinie zu generieren. Kunden überprüfen diese endgültig gerenderte Richtlinie, wenn sie Ihre Delegierungsanfrage genehmigen, um genau zu sehen, welche Berechtigungen gewährt werden.

Anmerkung

Die endgültige gerenderte Richtlinie hat eine maximale Größenbeschränkung von 2048 Zeichen.

Hier ist ein einfaches Beispiel, das zeigt, wie das Ersetzen von Vorlagen funktioniert.

Vorlage für Richtlinien:

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "s3:GetObject", "s3:PutObject" ], "Resource": "arn:aws:s3:::@{bucketName}/*" } ] }

In der Delegierungsanfrage angegebene Parameter:

{ "Name": "bucketName", "Values": ["customer-data-bucket"], "Type": "String" }

Endgültige Richtlinie (was Kunden sehen):

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "s3:GetObject", "s3:PutObject" ], "Resource": "arn:aws:s3:::customer-data-bucket/*" } ] }

Syntax der Vorlage

Richtlinienvorlagen verwenden zwei wichtige Funktionen, um Flexibilität zu bieten: Parameterersubstitution und bedingte Anweisungen. Mithilfe der Parameterersetzung können Sie Platzhalter in Ihrer Vorlage definieren, die bei der Erstellung einer Delegierungsanfrage durch tatsächliche Werte ersetzt werden. Mit bedingten Anweisungen können Sie ganze Richtlinienaussagen auf der Grundlage von Parameterwerten ein- oder ausschließen.

Substitution und Typen von Parametern

Verwenden Sie die @ {parameterName} -Syntax, um Parameter in Ihrer Richtlinienvorlage zu definieren. Wenn Sie eine Delegierungsanfrage erstellen, müssen Sie den Typ für jeden Parameter angeben.

Zeichenfolge

Ein einzelner Wert, der direkt in die Vorlage eingefügt wird.

Vorlage:

"Resource": "arn:aws:s3:::@{bucketName}/*"

Parameter:

{ "Name": "bucketName", "Values": ["my-bucket"], "Type": "String" }

Gerendertes Ergebnis:

"Resource": "arn:aws:s3:::my-bucket/*"

StringList

Mehrere Werte, die mehrere Ressourceneinträge generieren. Wenn ein StringList Parameter in einem Ressourcen-ARN verwendet wird, wird er erweitert, sodass für jeden Wert separate Ressourceneinträge erstellt werden.

Vorlage:

"Resource": "arn:aws:s3:::@{bucketNames}/*"

Parameter:

{ "Name": "bucketNames", "Values": ["bucket-1", "bucket-2"], "Type": "StringList" }

Gerendertes Ergebnis:

"Resource": [ "arn:aws:s3:::bucket-1/*", "arn:aws:s3:::bucket-2/*" ]

Cross-Product Verhalten

Wenn mehrere Parameter in demselben Ressourcen-ARN verwendet werden, erzeugen StringList Parameter ein Kreuzprodukt aller Kombinationen.

Vorlage:

"Resource": "arn:aws:s3:::@{bucketNames}/@{prefix}/*"

Parameter:

[ { "Name": "bucketNames", "Values": ["bucket-1", "bucket-2"], "Type": "StringList" }, { "Name": "prefix", "Values": ["data"], "Type": "String" } ]

Gerendertes Ergebnis:

"Resource": [ "arn:aws:s3:::bucket-1/data/*", "arn:aws:s3:::bucket-2/data/*" ]

Bedingte Aussagen

Verwenden Sie die @Enabled -Direktive, um ganze Anweisungen auf der Grundlage von Parameterwerten bedingt ein- oder auszuschließen.

Syntax:

  • @Enabled: „ParameterName“ — Schließt die Anweisung ein, wenn der Parameterwert „True“ ist

  • @Enabled: „! „ParameterName“ — Schließt die Anweisung ein, wenn der Parameterwert NICHT „True“ ist (Negation)

Vorlage:

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": ["s3:GetObject"], "Resource": "*" }, { "@Enabled": "ENABLE_S3_WRITE", "Effect": "Allow", "Action": ["s3:PutObject"], "Resource": "arn:aws:s3:::@{bucketName}/*" } ] }

Parameter (wenn ENABLE_S3_WRITE „True“ ist):

[ { "Name": "bucketName", "Values": ["my-bucket"], "Type": "String" }, { "Name": "ENABLE_S3_WRITE", "Values": ["True"], "Type": "String" } ]

Gerendertes Ergebnis:

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": ["s3:GetObject"], "Resource": "*" }, { "Effect": "Allow", "Action": ["s3:PutObject"], "Resource": "arn:aws:s3:::my-bucket/*" } ] }

Parameter (wenn ENABLE_S3_WRITE „False“ ist):

[ { "Name": "bucketName", "Values": ["my-bucket"], "Type": "String" }, { "Name": "ENABLE_S3_WRITE", "Values": ["False"], "Type": "String" } ]

Gerendertes Ergebnis:

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": ["s3:GetObject"], "Resource": "*" } ] }

Wenn ENABLE_S3_WRITE auf „True“ gesetzt ist, ist die bedingte Anweisung enthalten. Wenn die Anweisung auf „False“ gesetzt ist, wird sie von der gerenderten Richtlinie ausgeschlossen.

Weitere Beispiele

Die folgenden Beispiele veranschaulichen gängige Muster für die Verwendung von Richtlinienvorlagen bei der temporären Delegierung. Sie konzentrieren sich auf die Erstellung von IAM-Rollen mit Berechtigungsgrenzen für den langfristigen Zugriff und zeigen verschiedene Strategien zur Festlegung des Geltungsbereichs von Berechtigungen für bestimmte Ressourcen. Diese Beispiele veranschaulichen, wie Flexibilität und Sicherheit mithilfe von Techniken wie ARN-Präfixen, Ressourcen-Tagging und Aktualisierungen der Berechtigungsgrenzen in Einklang gebracht werden können.

Beispiel 1: Long-Term Zugriff auf bestimmte Ressourcen gewähren

Die folgende Berechtigungsgrenze wird als "SQSAccessorBoundary" für „partner.com“ eingegeben:

{ "Effect": "Allow", "Action": [ "sqs:DeleteMessage", "sqs:ReceiveMessage", "sqs:SendMessage" ], "Resource": "arn:aws:sqs:*:*:*", "Condition": { "StringEquals": { "aws:ResourceAccount": "${aws:PrincipalAccount}" } } }
Anmerkung

Dazu gehört auch eine Bedingung für dasselbe Konto, um zu verhindern, dass der Zugriff auf Warteschlangen in anderen Konten mit Richtlinien für offene Ressourcen gewährt wird. Ein direkter Verweis auf die Konto-ID des Kunden kann nicht verwendet werden, da die Grenze für alle Kunden gilt und nicht als Vorlage verwendet werden kann.

Da dies die erste Version dieser Richtlinie ist, lautet ihr ARN arn:aws:iam: :partner: -. policy/permissions boundary/partner com/SQSAccessorBoundary_2025_01_15

Die folgende Richtlinienvorlage wird für temporäre Zugriffsberechtigungen eingereicht:

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "sqs:ListQueues" ], "Resource": "arn:aws:sqs:*:*:*" }, { "Effect": "Allow", "Action": [ "iam:CreateRole", "iam:PutRolePermissionsBoundary", "iam:PutRolePolicy" ], "Resource": "arn:aws:iam::@{AccountId}:role/partner.com/SQSAccessor", "Condition": { "StringEquals": { "iam:PermissionsBoundary": "arn:aws:iam::partner:policy/permissions-boundary/partner.com/SQSAccessorBoundary_2025_01_15" } } } ] }

Beispiel 2: Verwendung von ARN-Präfixen

Die Berechtigungsgrenze kann ein Ressourcen-ARN-Präfix angeben, um den Zugriff einzuschränken:

"Resource": "arn:aws:sqs:*:@{AccountId}:PartnerPrefix*"

Dadurch wird der Zugriff nur auf die Ressourcen mit diesem Präfix beschränkt, wodurch der Umfang der zugänglichen Ressourcen reduziert wird.

Beispiel 3: Verwendung von Tags für die Ressourcenzugriffskontrolle

Sie können Ressourcen während des temporären delegierten Zugriffs kennzeichnen und sich bei der langfristigen Zugriffskontrolle auf diese Tags verlassen.

Berechtigungsgrenze, die den Zugriff auf markierte Ressourcen ermöglicht:

{ "Effect": "Allow", "Action": [ "sqs:DeleteMessage", "sqs:ReceiveMessage", "sqs:SendMessage" ], "Resource": "arn:aws:sqs:*:*:*", "Condition": { "Null": { "aws:ResourceTag/ManagedByPartnerDotCom": "false" }, "StringEquals": { "aws:ResourceAccount": "${aws:PrincipalAccount}" } } }

Richtlinienvorlage zum Markieren neuer Warteschlangen bei der Erstellung:

{ "Effect": "Allow", "Action": [ "sqs:CreateQueue", "sqs:TagQueue" ], "Resource": "arn:aws:sqs:*:*:*", "Condition": { "Null": { "aws:RequestTag/ManagedByPartnerDotCom": "false" } } }

Richtlinienvorlage zum Markieren bereits vorhandener Warteschlangen und zum Erstellen der Rolle:

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "sqs:TagQueue" ], "Resource": "arn:aws:sqs:*:@{AccountId}:@{QueueName}", "Condition": { "ForAllValues:StringEquals": { "aws:TagKeys": "ManagedByPartnerDotCom" } } }, { "Effect": "Allow", "Action": [ "iam:CreateRole", "iam:PutRolePermissionsBoundary", "iam:PutRolePolicy" ], "Resource": "arn:aws:iam::@{AccountId}:role/partner.com/SQSAccessor", "Condition": { "StringEquals": { "iam:PermissionsBoundary": "arn:aws:iam::partner:policy/permissions-boundary/partner.com/SQSAccessorBoundary_2025_01_15" } } } ] }

Dieser Ansatz ermöglicht es Kunden, explizit zu bestätigen, auf welche spezifischen Ressourcen langfristig zugegriffen werden kann.

Beispiel 4: Aktualisierung der Berechtigungsgrenze

Um eine Berechtigungsgrenze zu aktualisieren, registrieren Sie eine neue Version mit einem neuen Datumssuffix und fordern Sie die Erlaubnis an, diese zu ersetzen.

Die Berechtigungsgrenze wurde mit zusätzlicher Berechtigung aktualisiert:

{ "Effect": "Allow", "Action": [ "sqs:DeleteMessage", "sqs:PurgeQueue", "sqs:ReceiveMessage", "sqs:SendMessage" ], "Resource": "arn:aws:sqs:*:*:*", "Condition": { "StringEquals": { "aws:ResourceAccount": "${aws:PrincipalAccount}" } } }

Als zweite Version hat diese Richtlinie den ARN: arn:aws:iam: :partner: -. policy/permissions boundary/partner com/SQSAccessorBoundary_2025_01_20

Richtlinienvorlage zum Aktualisieren der Berechtigungsgrenze für die vorhandene Rolle:

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "iam:PutRolePermissionsBoundary" ], "Resource": "arn:aws:iam::@{AccountId}:role/partner.com/SQSAccessor", "Condition": { "StringEquals": { "iam:PermissionsBoundary": "arn:aws:iam::partner:policy/permissions-boundary/partner.com/SQSAccessorBoundary_2025_01_20" } } } ] }

Kunden müssen diese Delegierungsanfrage genehmigen, um die Berechtigungsgrenze für die bestehende Rolle zu aktualisieren.