Wie kann ich IAM-Richtlinien-Tags verwenden, um einzuschränken, wie eine EC2-Instance oder ein EBS-Volume erstellt und darauf zugegriffen werden kann?
Ich möchte Identitäten von AWS Identity and Access Management (IAM) Zugriff gewähren, um neue Amazon Elastic Compute Cloud (Amazon EC2)-Instances zu starten. Ich möchte IAM-Identitäten auch den Zugriff ermöglichen, um neue Amazon Elastic Block Store (Amazon EBS)-Volumes zu erstellen, wenn sie bestimmte Tags anwenden.
Kurzbeschreibung
Geben Sie Tags für EC2-Instances und Amazon EBS-Volumes als Teil des API-Aufrufs an, der die Ressourcen erstellt. Wenden Sie Bedingungen auf die IAM-Richtlinie an, um IAM-Benutzer dazu zu verpflichten, bestimmte Ressourcen zu kennzeichnen.
Die folgenden Beispielrichtlinien erlauben es Benutzern nicht, Sicherheitsgruppen oder Schlüsselpaare zu erstellen. Daher müssen Benutzer vorhandene Sicherheitsgruppen und Schlüsselpaare auswählen.
Die folgenden Beispiel-IAM-Richtlinien ermöglichen Benutzern das Starten von Instances mit den folgenden Konfigurationen:
- Passende Tag-Schlüssel und -Werte
- Mindestens ein passendes Tag und ein passender Wert
- Mindestens ein passender Tag-Schlüssel
- Nur die angegebene Liste von Tags
Mit den IAM-Beispielrichtlinien können Benutzer auch Instances und Volumes verwalten, die über übereinstimmende Tag-Schlüssel und -Werte verfügen.
**Hinweis:**Um die Beispielrichtlinien zu verwenden, ersetzen Sie die Beispielwerte durch Ihre Werte.
Lösung
Beschränken Sie die Erstellung von EC2-Instances und EBS-Volumes auf der Grundlage von Tags
Die folgenden Beispielrichtlinien ermöglichen es einem Benutzer, eine Instance zu starten und ein Volume auf der Grundlage von Tags zu erstellen.
Starten Sie EC2-Instances mit passenden Tag-Schlüsseln und -Werten
In der folgenden Beispielrichtlinie steuert die Bedingung RequestTag die Tag-Durchsetzung. Wenn der Benutzer ein Tag anwendet, das nicht in der Richtlinie enthalten ist, wird die Aktion verweigert. Um die Berücksichtigung der Groß- und Kleinschreibung zu erzwingen, verwenden Sie die Bedingung aws:TagKeys:
{ "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": "AllowRunInstancesWithRestrictions", "Effect": "Allow", "Action": [ "ec2:CreateVolume", "ec2:RunInstances" ], "Resource": [ "arn:aws:ec2:*:*:volume/*", "arn:aws:ec2:*:*:instance/*", "arn:aws:ec2:*:*:network-interface/*" ], "Condition": { "StringEquals": { "aws:RequestTag/key1": "value1", "aws:RequestTag/key2": "value2" }, "ForAllValues:StringEquals": { "aws:TagKeys": [ "key1", "key2" ] } } }, { "Sid": "AllowCreateTagsOnlyLaunching", "Effect": "Allow", "Action": [ "ec2:CreateTags" ], "Resource": [ "arn:aws:ec2:*:*:volume/*", "arn:aws:ec2:*:*:instance/*", "arn:aws:ec2:*:*:network-interface/*" ], "Condition": { "StringEquals": { "ec2:CreateAction": [ "RunInstances", "CreateVolume" ] } } } ] }
Wichtig: Um EC2-Instances erfolgreich zu starten, muss die vorherige Richtlinie übereinstimmende Tag-Schlüssel und -Werte enthalten. Wenn die Schlüssel- und Wertepaare nicht übereinstimmen, erhalten Sie die Fehlermeldung Start fehlgeschlagen oder eine ähnliche API-Fehlermeldung.
Beispielergebnisse
Schlüssel/Wert | Ergebnis |
key1/value1 und key2/value2 | zulassen |
key1/value1 | ablehnen |
key1/value2 | ablehnen |
keine Schlüssel und Werte | ablehnen |
Starten Sie EC2-Instances, die über mindestens einen passenden Tag-Schlüssel verfügen
Ersetzen Sie in der folgenden Beispielrichtlinie den Bedingungsblock AllowRunInstancesWithRestrictions, wenn mindestens ein Tag-Schlüssel den Namen key1 hat. Für das key1-Tag ist kein bestimmter Wert erforderlich, und Sie können der Anforderung RunInstances Tags hinzufügen:
"Condition": { "StringEquals": { "aws:RequestTag/key1": "value1" }, "ForAnyValue:StringEquals": { "aws:TagKeys": [ "key1" ] } }
Beispielergebnisse
Schlüssel/Wert | Ergebnis |
key1/value1 und key2/value2 | zulassen |
key1/value1 | zulassen |
key1/value2 | zulassen |
keine Schlüssel und Werte | ablehnen |
Starten Sie EC2-Instances, die nur die angegebene Liste von Tags haben
Ersetzen Sie in der folgenden Beispielrichtlinie den Bedingungsblock AllowRunInstancesWithRestrictions, wenn die Tag-Schlüssel key1 und key2 in der Anforderung bereitgestellt werden. Für keinen der Tag-Schlüssel ist ein bestimmter Wert erforderlich, und Sie können der Anforderung RunInstances keine Tags hinzufügen:
"Condition": { "StringLike": { "aws:RequestTag/key1": "*", "aws:RequestTag/key2": "*" }, "ForAllValues:StringEquals": { "aws:TagKeys": [ "key1", "key2" ] } }
**Hinweis:**In der vorherigen Richtlinie ist die Bedingung StringLike erforderlich, damit die Werte Platzhalter für Übereinstimmungen mit mehreren Zeichen (*) enthalten können.
Beispielergebnisse
Schlüssel/Wert | Ergebnis |
key1/AnyValue und key2/AnyValue | Zulassen |
key1/AnyValue | Ablehnen |
key2/AnyValue | Ablehnen |
Keine Schlüssel oder Werte | Ablehnen |
key1/AnyValue, key2/AnyValue, key3/AnyValue | Ablehnen |
Beschränken des EC2-Instance- und EBS-Volume-Managements auf der Grundlage von Tag-Schlüsseln und -Werten
Die folgenden Beispielrichtlinien schränken die Benutzerverwaltung von Instances und Volumes auf der Grundlage von Tag-Schlüsseln und -Werten ein.
Verwalten von EC2-Instances, die passende Tag-Schlüssel und -Werte haben
Die folgende Beispielrichtlinie beschränkt den Zugriff auf eine IAM-Identität auf das Starten, Stoppen oder Neustarten von EC2-Instances. Die Instance muss einen Schlüssel-Tag Eigentümer mit dem Tag-Wert Bob haben:
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "ec2:Describe*", "Resource": "*" }, { "Effect": "Allow", "Action": [ "ec2:StartInstances", "ec2:StopInstances", "ec2:RebootInstances" ], "Resource": [ "arn:aws:ec2:*:111122223333:instance/*" ], "Condition": { "StringEquals": { "ec2:ResourceTag/Owner": "Bob" } } } ] }
Hinweis: Ersetzen Sie Eigentümer durch Ihren Tag-Schlüssel, Bob durch den Namen Ihres IAM-Benutzers und den Ressourcen-ARN durch den ARN Ihrer Ressource.
Weitere Informationen finden Sie unter Kann ich den Zugriff einer IAM-Identität auf bestimmte Amazon-EC2-Ressourcen einschränken?
EBS-Volumes verwalten, die übereinstimmende Tag-Schlüssel und -Werte haben
Die folgende Beispielrichtlinie ermöglicht es der IAM-Identität, ein EBS-Volume zu trennen oder zu löschen. Für die API-Aktion DeleteVolume muss das Volume einen Tag-Schlüssel Eigentümer mit dem Tag-Wert Mary haben. Für die API-Aktion DetachVolume müssen sowohl die Instance als auch das Volume denselben Tag-Schlüssel Eigentümer mit dem Tag-Wert Mary haben:
{ "Version": "2012-10-17", "Statement": [ { "Sid": "Statement1", "Effect": "Allow", "Action": [ "ec2:DetachVolume", "ec2:DeleteVolume" ], "Resource": [ "arn:aws:ec2:*:111122223333:volume/*", "arn:aws:ec2:*:111122223333:instance/*" ], "Condition": { "StringEquals": { "aws:ResourceTag/Owner": "Mary" } } } ] }
Hinweis: Ersetzen Sie Eigentümer durch Ihren Tag-Schlüssel, Mary durch den Namen Ihres IAM-Benutzers und den Ressourcen-ARN durch den ARN Ihrer Ressource.
Ähnliche Informationen
Beispiel für identitätsbasierte IAM-Richtlinien
Relevanter Inhalt
- AWS OFFICIALAktualisiert vor einem Monat
- AWS OFFICIALAktualisiert vor einem Monat
- AWS OFFICIALAktualisiert vor 4 Jahren
- AWS OFFICIALAktualisiert vor 3 Jahren