Complete a 3 Question Survey and Earn a re:Post Badge
Help improve AWS Support Official channel in re:Post and share your experience - complete a quick three-question survey to earn a re:Post badge!
Wie funktioniert die IAM-Evaluierungslogik mithilfe einer expliziten Ablehnungsrichtlinie mit mehreren Bedingungsschlüsseln?
Ich möchte eine explizite Ablehnungsrichtlinie für AWS Identity and Access Management (IAM) erstellen. Diese Ablehnungsrichtlinie muss die Erstellung von Amazon Elastic Compute Cloud (Amazon EC2) Instances und Amazon Elastic Block Store (Amazon EBS) Volumes einschränken.
Kurzbeschreibung
Sie können IAM-Richtlinien-Tags verwenden, um den Start von EC2 Instances und EBS Volumes einzuschränken, indem Sie die Bedingungsoperatoren Zulassen mit StringLike oder Ablehnen mit StringNotLike verwenden.
Weitere Informationen finden Sie unter Wie kann ich IAM-Richtlinien-Tags verwenden, um einzuschränken, wie eine EC2 Instance oder ein EBS Volume erstellt werden kann?
Behebung
Verwenden Sie die folgende Beispiel-IAM-Richtlinie, die Ablehnen mit StringNotLike verwendet, um die Erstellung von EC2 Instances und EBS Volumes einzuschränken.
Hinweis: Es ist eine bewährte Methode, Ablehnen mit StringNotLike zu verwenden, um einen versehentlichen privilegierten Zugriff zu verhindern.
Wenn Ihre Richtlinie mehrere Bedingungsoperatoren oder mehrere Schlüssel an einen einzelnen Bedingungsoperator angehängt hat, werden die Bedingungen mithilfe der UND-Logik ausgewertet. Bei Ablehnen von mehreren Tag-Werten muss jeder RequestTag-Schlüssel in separaten Anweisungen verwendet werden, um dieselbe UND-Logik zu erhalten.
Hinweis: Das Festlegen aller RequestTag-Schlüsselwerte in einer Bedingung mit einer Ablehnungs-Richtlinie funktioniert möglicherweise nicht wie erwartet. Dies liegt daran, dass die Aktion zulässig ist, bis alle Bedingungen erfüllt sind. Wenn alle Bedingungen erfüllt sind, wird die Aktion abgelehnt.
Die folgenden Tags sind erforderlich:
- Das Tag cost\ _center muss einen Wert ungleich Null haben.
- Die EC2-Instance hat einen Tag-Schlüssel mit dem Namen Produktion.
- Das Identifier-Tag muss eine Kombination aus fünf beliebigen Zeichen sein.
- Der Wert des Tags env muss sandbox, dev oder prod lauten.
Beispiel für eine Richtlinie:
{ "Version": "2012-10-17", "Statement": [ { "Sid": "AllowToDescribeAll", "Effect": "Allow", "Action": [ "ec2:Describe*" ], "Resource": "*" }, { "Sid": "AllowRunInstances", "Effect": "Allow", "Action": "ec2:RunInstances", "Resource": [ "arn:aws:ec2:*::image/*", "arn:aws:ec2:*::snapshot/*", "arn:aws:ec2:*:*:subnet/*", "arn:aws:ec2:*:*:network-interface/*", "arn:aws:ec2:*:*:security-group/*", "arn:aws:ec2:*:*:key-pair/*" ] }, { "Sid": "AllowRunInstancesWithRestrictions1", "Effect": "Deny", "Action": [ "ec2:CreateVolume", "ec2:RunInstances" ], "Resource": [ "arn:aws:ec2:*:*:volume/*", "arn:aws:ec2:*:*:instance/*" ], "Condition": { "StringNotLike": { "aws:RequestTag/cost_center": "?*" } } }, { "Sid": "AllowRunInstancesWithRestrictions2", "Effect": "Deny", "Action": [ "ec2:CreateVolume", "ec2:RunInstances" ], "Resource": [ "arn:aws:ec2:*:*:volume/*", "arn:aws:ec2:*:*:instance/*" ], "Condition": { "ForAllValues:StringNotLike": { "aws:TagKeys": "Production" } } }, { "Sid": "AllowRunInstancesWithRestrictions3", "Effect": "Deny", "Action": [ "ec2:CreateVolume", "ec2:RunInstances" ], "Resource": [ "arn:aws:ec2:*:*:volume/*", "arn:aws:ec2:*:*:instance/*" ], "Condition": { "StringNotLike": { "aws:RequestTag/identifier": "?????" } } }, { "Sid": "AllowRunInstancesWithRestrictions4", "Effect": "Deny", "Action": [ "ec2:CreateVolume", "ec2:RunInstances" ], "Resource": [ "arn:aws:ec2:*:*:volume/*", "arn:aws:ec2:*:*:instance/*" ], "Condition": { "StringNotLike": { "aws:RequestTag/env": [ "sandbox", "dev", "prod" ] } } }, { "Sid": "AllowRunInstances1", "Effect": "Allow", "Action": [ "ec2:CreateVolume", "ec2:RunInstances" ], "Resource": [ "arn:aws:ec2:*:*:volume/*", "arn:aws:ec2:*:*:instance/*" ] }, { "Sid": "AllowCreateTagsOnRunInstance", "Effect": "Allow", "Action": "ec2:CreateTags", "Resource": "*", "Condition": { "StringEquals": { "ec2:CreateAction": "RunInstances" } } } ] }
Beachten Sie die folgenden Erzwingungswerte:
- Der Wert aws:TagKeys erzwingt die Berücksichtigung der Groß- und Kleinschreibung in der Produktion.
- Der Wert ????? erzwingt die Verwendung einer Kombination von fünf beliebigen Werten. Leerzeichen, die vor- oder nachlaufen, werden ignoriert.
- Der Wert ?* erzwingt, dass mindestens ein Zeichen im Wertfeld vorhanden ist, sodass EC2 Instances nicht mit leeren Tag-Werten gestartet werden können.
Ähnliche Informationen
Markieren Ihrer Amazon-EC2-Ressourcen mit Tags (Markierungen)
Ähnliche Videos

