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 für Kundenkonten anfordern. Wie reguläre IAM-Richtlinien definieren sie Berechtigungen mithilfe von Anweisungen mit den Elementen Effect, Action, Resource und Condition. Der Hauptunterschied besteht darin, dass Richtlinienvorlagen Parameter (wie @ {bucketName}) enthalten, die durch tatsächliche Werte ersetzt werden, wenn Sie eine Delegierungsanfrage erstellen.

So funktionieren Richtlinienvorlagen

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

Wenn Sie eine Delegierungsanfrage erstellen, geben Sie Folgendes an:

  • Die Richtlinienvorlage ARN

  • 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ültige Richtlinie, wenn sie Ihre Delegierungsanfrage genehmigen, und sehen genau, welche Berechtigungen erteilt werden.

Anmerkung

Die endgültige Richtlinie für das gerenderte Bild hat eine maximale Größe von 2048 Zeichen.

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

Richtlinienvorlage:

{ "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ültig gerenderte 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: Parameterersetzung und bedingte Anweisungen. Durch die Parameterersetzung können Sie Platzhalter in Ihrer Vorlage definieren, die bei der Erstellung einer Delegierungsanfrage durch tatsächliche Werte ersetzt werden. Bedingte Anweisungen ermöglichen es Ihnen, ganze Richtlinienaussagen auf der Grundlage von Parameterwerten ein- oder auszuschließen.

Ersetzung 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, um separate Ressourceneinträge für jeden Wert zu erstellen.

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/*" ]

Produktübergreifendes 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, die auf Parameterwerten basieren, 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 auf „True“ gesetzt 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 auf „False“ gesetzt 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 der Wert auf „False“ gesetzt ist, wird die Anweisung aus der gerenderten Richtlinie ausgeschlossen.

Weitere Beispiele

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

Beispiel 1: Langfristigen Zugriff auf bestimmte Ressourcen gewähren

Die folgende Genehmigungsgrenze wird als „SQSAccessorGrenze“ für „partner.com“ eingereicht:

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

Dazu gehört auch die Bedingung, dass dasselbe Konto verwendet wird, um zu verhindern, dass Zugriff auf Warteschlangen in anderen Konten mit offenen Ressourcenrichtlinien gewährt wird. Ein direkter Verweis auf die Konto-ID des Kunden kann nicht angegeben werden, da die Grenze von allen Kunden gemeinsam genutzt wird und nicht als Vorlage verwendet werden kann.

Da es sich um die erste Version dieser Richtlinie handelt, lautet ihr ARN arn:aws:iam: :partner: _2025_01_15 policy/permissions-boundary/partner.com/SQSAccessorBoundary

Die folgende Richtlinienvorlage wurde 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 verfügbaren Ressourcen reduziert wird.

Beispiel 3: Verwendung von Tags für die Ressourcenzugriffskontrolle

Sie können Ressourcen während eines temporären delegierten Zugriffs taggen 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 Kennzeichnen 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, ausdrücklich 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ätzlichen Berechtigungen 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: _2025_01_20 policy/permissions-boundary/partner.com/SQSAccessorBoundary

Richtlinienvorlage zur Aktualisierung der Berechtigungsgrenze für die bestehende 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.