Wie steuern die Bedingungsschlüssel PrincipalTag, ResourceTag, RequestTag und TagKeys den Zugriff in IAM-Richtlinien?
Ich möchte die tagbasierten Bedingungsschlüssel PrincipalTag, ResourceTag, RequestTag und TagKeys in einer AWS Identity and Access Management (IAM)-Richtlinie verwenden, um den Zugriff auf AWS-Ressourcen zu steuern.
Lösung
Die folgenden IAM-Beispielrichtlinien verwenden Bedingungsschlüssel, um den Zugriff auf AWS-Ressourcen mithilfe von Tags zu steuern.
Um zu ermitteln, welche API-Aktionen du ausführen kannst, empfiehlt es sich, die API-Dokumentation für den Service, den du verwendest, zu überprüfen.
PrincipalTag-Bedingungsschlüssel
Verwende den Bedingungsschlüssel aws:PrincipalTag/tag-key, um die folgenden Tags zu vergleichen:
- Das Tag, das an den Prinzipal angefügt ist, der die Anforderung stellt
- Das Tag, das du in der IAM-Richtlinie angibst
Im folgenden Beispiel verweigert die PutObject-Aktion von Amazon Simple Storage Service (Amazon S3) allen Benutzern, außer jenen mit dem Titel Product-Manager, den Bucket-Zugriff:
{ "Version": "2012-10-17", "Statement": [ { "Sid": "DenyAllButProductManagers", "Effect": "Deny", "Principal": { "AWS": "*" }, "Action": [ "s3:PutObject" ], "Resource": [ "arn:aws:s3:::productionbucket/*" ], "Condition": { "StringNotEquals": { "aws:PrincipalTag/job-title": "Product-Manager" } } } ] }
ResourceTag-Bedingungsschlüssel
Der Bedingungsschlüssel aws:ResourceTag/tag-key vergleicht das in der IAM-Richtlinie angegebene Tag-Schlüssel-Wert-Paar mit dem Schlüssel-Wert-Paar, das an die AWS-Ressource angefügt ist. Weitere Informationen findest du unter Steuern des Zugriffs auf AWS-Ressourcen.
Du kannst den Bedingungsschlüssel aws:ResourceTag/tag-key mit der globalen Version aws:ResourceTag und AWS-Services wie ec2:ResourceTag verwenden.
Im folgenden Beispiel ermöglicht die IAM-Richtlinie Benutzern das Starten, Anhalten und Beenden von Amazon Elastic Compute Cloud (Amazon EC2)-Instances, die sich in der Test-Umgebung befinden:
{ "Version": "2012-10-17", "Statement": [ { "Sid": "AllowOnlyForTestEnvironment", "Effect": "Allow", "Action": [ "ec2:TerminateInstances", "ec2:StartInstances", "ec2:StopInstances" ], "Resource": "arn:aws:ec2:*:*:instance/*", "Condition": { "StringLike": { "ec2:ResourceTag/Env": "test" } } } ] }
RequestTag-Bedingungsschlüssel
Verwende den Bedingungsschlüssel aws:RequestTag/tag-key, um das Schlüssel-Wert-Paar in der Benutzeranforderung mit dem in der IAM-Richtlinie angegebenen Tag-Paar zu vergleichen. Du kannst diesen Bedingungsschlüssel verwenden, um Aktionen zu steuern, die Ressourcen erstellen, und um Tags während dieser Operationen zu überprüfen.
Im folgenden Beispiel erlaubt die IAM-Richtlinie Benutzern, Amazon Elastic Block Store (Amazon EBS)-Volumes nur zu erstellen, wenn sie ein Env-Tag mit den Werten Dev, Prod oder QA enthalten:
{ "Version": "2012-10-17", "Statement": [ { "Sid": "AllowCreateVolumeWithEnvTag", "Effect": "Allow", "Action": "ec2:CreateVolume", "Resource": "arn:aws:ec2:*:*:volume/*", "Condition": { "StringEquals": { "aws:RequestTag/Env": [ "Dev", "Prod", "QA" ] } } } ] }
TagKeys-Bedingungsschlüssel
Verwende den Bedingungsschlüssel aws:TagKeys, um die Tag-Schlüssel in einer Anforderung mit denen zu vergleichen, die du in der IAM-Richtlinie angibst. Dieser Bedingungsschlüssel validiert die Tag-Schlüssel, die an eine Ressource angefügt sind.
Wenn eine Anforderung mehrere Schlüssel-Wert-Paare enthält, verwende die Mengenoperatoren ForAllValues oder ForAnyValue, um diese Werte zu vergleichen.
Im folgenden Beispiel schränkt die IAM-Richtlinie die Tag-Erstellung auf AWS-Ressourcen ein. Sie ermöglicht Benutzern, nur die Env- und CostCenter-Tags zu erstellen, wenn Benutzer ein neues Amazon-EBS-Volume erstellen. Der Mengenoperator ForAllValues mit dem Bedingungsschlüssel aws:TagKeys ermöglicht es Benutzern, die erforderlichen Tags an die Ressource anzufügen. Die Richtlinie macht diese Tag-Schlüssel während der Ressourcenerstellung optional und verhindert die Tag-Erstellung mit anderen Schlüssel-Wert-Paaren:
{ "Version": "2012-10-17", "Statement": [ { "Sid": "VisualEditor0", "Effect": "Allow", "Action": "ec2:CreateVolume", "Resource": "arn:aws:ec2:*:*:volume/*", "Condition": { "ForAllValues:StringEquals": { "aws:TagKeys": [ "Env", "CostCenter" ] } } } ] }
Ähnliche Informationen
- Sprache
- Deutsch

Relevanter Inhalt
AWS OFFICIALAktualisiert vor 10 Monaten
AWS OFFICIALAktualisiert vor 9 Monaten