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.
Beispielrichtlinien für das Arbeiten mit der AWS CLI oder einem AWS-SDK
Die folgenden Beispiele veranschaulichen Richtlinienanweisungen, mit denen Sie die Berechtigungen, die IAM-Benutzer für Amazon EC2 haben, kontrollieren können. Diese Richtlinien sind auf Anforderungen ausgelegt, die über die AWS CLI oder ein AWS-SDK erfolgen. Wenn Sie die Amazon EC2-Konsole verwenden möchten, finden Sie Beispielrichtlinien unter Beispielrichtlinien für die Arbeit in der Amazon EC2-Konsole. Beispiele für Amazon VPC-spezifische IAM-Richtlinien finden Sie unter Identity and Access Management für Amazon VPC.
Beispiele
- Schreibgeschützter Zugriff
- Beschränken des Zugriffs auf eine bestimmte Region
- Arbeiten mit Instances
- Arbeiten mit Volumes
- Arbeiten mit Snapshots
- Starten von Instances (RunInstances)
- Arbeiten mit Spot-Instances
- Arbeiten mit Reserved Instances
- Markieren von Ressourcen
- Arbeiten mit IAM-Rollen
- Arbeiten mit Routing-Tabellen
- Zulassen, dass eine bestimmte Instance Ressourcen in anderen AWS-Services anzeigt
- Arbeiten mit Startvorlagen
- Arbeiten mit Instance-Metadaten
Beispiel: schreibgeschützter Zugriff
Mit der folgenden Richtlinie wird Benutzern Berechtigungen zur Verwendung aller Amazon
EC2-API-Aktionen erteilt, deren Name mit Describe
beginnt. Das Resource
-Element verwendet einen Platzhalter, wodurch Benutzer alle Ressourcen mit diesen
API-Aktionen angeben können. Das Sternchen (*) als Platzhalter ist auch dann erforderlich,
wenn die API-Aktion keine Berechtigungen auf Ressourcenebene unterstützt. Weitere
Informationen dazu, welche ARNs Sie mit welchen Amazon EC2-API-Aktionen verwenden
können, finden Sie unter Aktionen, Ressourcen und Bedingungsschlüssel für Amazon EC2.
Die Benutzer haben keine Berechtigung zum Ausführen von Aktionen auf den Ressourcen (es sei denn, eine andere Anweisung erteilt ihnen diese Erlaubnis), da ihnen die Berechtigung für die Verwendung von API-Aktionen standardmäßig verweigert wird.
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "ec2:Describe*", "Resource": "*" } ] }
Beispiel: Beschränken des Zugriffs auf eine bestimmte Region
Die folgende Richtlinie verweigert Benutzern die Berechtigung, Amazon EC2-API-Aktionen
in anderen Regionen als Europa (Frankfurt) zu verwenden. Sie verwendet den globalen
Bedingungsschlüssel aws:RequestedRegion
, der von allen Amazon EC2-API-Aktionen unterstützt wird.
{ "Version":"2012-10-17", "Statement": [ { "Effect": "Deny", "Action": "ec2:*", "Resource": "*", "Condition": { "StringNotEquals": { "aws:RequestedRegion": "eu-central-1" } } } ] }
Alternativ können Sie den Bedingungsschlüssel ec2:Region
verwenden, der speziell für Amazon EC2 verwendet wird und von allem Amazon EC2-API-Aktionen
unterstützt wird.
{ "Version":"2012-10-17", "Statement": [ { "Effect": "Deny", "Action": "ec2:*", "Resource": "*", "Condition": { "StringNotEquals": { "ec2:Region": "eu-central-1" } } } ] }
Arbeiten mit Instances
Beispiele
Beispiel: Beschreiben, Initiieren, Stoppen, Starten und Beenden aller Instances
Mit der folgenden Richtlinie wird Benutzern Berechtigungen erteilt, die im Element
Action
angegebenen API-Aktionen zu verwenden. Das Resource
-Element verwendet den Platzhalter "*", wodurch Benutzer alle Ressourcen mit diesen
API-Aktionen angeben können. Das Sternchen (*) als Platzhalter ist auch dann erforderlich,
wenn die API-Aktion keine Berechtigungen auf Ressourcenebene unterstützt. Weitere
Informationen dazu, welche ARNs Sie mit welchen Amazon EC2-API-Aktionen verwenden
können, finden Sie unter Aktionen, Ressourcen und Bedingungsschlüssel für Amazon EC2.
Die Benutzer haben keine Berechtigung zur Verwendung von anderen API-Aktionen (es sei denn, eine andere Anweisung erteilt ihnen die entsprechende Erlaubnis), da den Benutzern die Berechtigung für die Verwendung von API-Aktionen standardmäßig verweigert wird.
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "ec2:DescribeInstances", "ec2:DescribeImages", "ec2:DescribeKeyPairs", "ec2:DescribeSecurityGroups", "ec2:DescribeAvailabilityZones", "ec2:RunInstances", "ec2:TerminateInstances", "ec2:StopInstances", "ec2:StartInstances" ], "Resource": "*" } ] }
Beispiel: Beschreiben aller Instances sowie Stoppen, Starten und Beenden nur bestimmter Instances
Die folgende Richtlinie erlaubt den Benutzern, alle Instances zu beschreiben, nur
die Instances i-1234567890abcdef0 und i-0598c7d356eba48d7 zu starten und anzuhalten
sowie ausschließlich Instances in der Region USA Ost (N.-Virginia) (us-east-1
) mit dem Ressourcen-Tag purpose=test
zu beenden.
In der ersten Anweisung legt ein *-Platzhalter im Resource
-Element fest, dass die Benutzer alle Ressourcen für die Aktion angeben können. In
diesem Beispiel können sie alle Instances auflisten. Das Sternchen (*) als Platzhalter
ist auch dann erforderlich, wenn die API-Aktion keine Berechtigungen auf Ressourcenebene
unterstützt (in diesem Fall ec2:DescribeInstances
). Weitere Informationen dazu, welche ARNs Sie mit welchen Amazon EC2-API-Aktionen
verwenden können, finden Sie unter Aktionen, Ressourcen und Bedingungsschlüssel für Amazon EC2.
Die zweite Anweisung erteilt Berechtigungen auf Ressourcenebene für die Aktionen StopInstances
und StartInstances
. Die genauen Instances werden durch ihre ARNs im Resource
-Element angegeben.
Die dritte Anweisung erlaubt den Benutzern, alle Instances in der Region USA Ost (N.-Virginia)
(us-east-1
) zu beenden, die zu dem angegebenen AWS-Konto gehören, aber nur, wenn die Instance
das "purpose=test"
-Tag aufweist. Das Condition
-Element bestimmt, wann die Richtlinienanweisung wirksam ist.
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "ec2:DescribeInstances", "Resource": "*" }, { "Effect": "Allow", "Action": [ "ec2:StopInstances", "ec2:StartInstances" ], "Resource": [ "arn:aws:ec2:us-east-1:123456789012:instance/i-1234567890abcdef0", "arn:aws:ec2:us-east-1:123456789012:instance/i-0598c7d356eba48d7" ] }, { "Effect": "Allow", "Action": "ec2:TerminateInstances", "Resource": "arn:aws:ec2:us-east-1:123456789012:instance/*", "Condition": { "StringEquals": { "ec2:ResourceTag/purpose": "test" } } } ] }
Arbeiten mit Volumes
Beispiele
Beispiel: Anhängen und Trennen von Volumes
Wenn ein Aufrufer mehrere Ressourcen für eine API-Aktion angeben muss, erstellen Sie
eine Richtlinienanweisung, die den Benutzern den Zugriff auf alle erforderlichen Ressourcen
ermöglicht. Falls ein Condition
-Element mit einem oder mehreren dieser Ressourcen erforderlich ist, müssen Sie mehrere
Anweisungen erstellen, wie in diesem Beispiel gezeigt.
Die folgende Richtlinie erlaubt Benutzern das Anfügen von Volumes mit dem Tag volume_user
=IAM-Benutzername an Instances mit dem Tag department=dev
und das Trennen dieser Volumes von diesen Instances. Wenn Sie einer IAM-Gruppe diese
Richtlinie anfügen, erteilt die aws:username
-Richtlinienvariable jedem IAM-Benutzer in der Gruppe die Berechtigung zum Anfügen
bzw. Trennen von Volumes von Instances, die ein Tag namens volume_user
haben, das den entsprechenden IAM-Benutzernamen als Wert aufweist.
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "ec2:AttachVolume", "ec2:DetachVolume" ], "Resource": "arn:aws:ec2:us-east-1:123456789012:instance/*", "Condition": { "StringEquals": { "ec2:ResourceTag/department": "dev" } } }, { "Effect": "Allow", "Action": [ "ec2:AttachVolume", "ec2:DetachVolume" ], "Resource": "arn:aws:ec2:us-east-1:123456789012:volume/*", "Condition": { "StringEquals": { "ec2:ResourceTag/volume_user": "${aws:username}" } } } ] }
Beispiel: Erstellen eines Volumes
Die folgende Richtlinie gestattet es Benutzern, die CreateVolume-API-Aktion zu verwenden. Die Benutzer dürfen nur ein Volume erstellen, wenn das Volume verschlüsselt und nicht größer als 20 GiB ist.
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "ec2:CreateVolume" ], "Resource": "arn:aws:ec2:us-east-1:123456789012:volume/*", "Condition":{ "NumericLessThan": { "ec2:VolumeSize" : "20" }, "Bool":{ "ec2:Encrypted" : "true" } } } ] }
Beispiel: Erstellen eines Volumes mit Tags
Die folgende Richtlinie umfasst den aws:RequestTag
-Bedingungsschlüssel. Die Benutzer müssen daher alle Volumes, die sie erstellen, mit
den Tags costcenter=115
und stack=prod
versehen. Mit dem aws:TagKeys
-Modifikator im ForAllValues
-Bedingungsschlüssel wird ferner festgelegt, dass nur die Schlüssel costcenter
und stack
in der Anforderung zulässig sind und keine anderen Tags verwendet werden können.
Werden nicht genau diese Tags übergeben oder überhaupt keine Tags angegeben, schlägt
die Anforderung fehl.
Bei Aktionen zur Ressourcenerstellung, die Tags anwenden, müssen die Benutzer zudem
über Berechtigungen für die Aktion CreateTags
verfügen. Die zweite Anweisung enthält den ec2:CreateAction
-Bedingungsschlüssel, sodass die Benutzer Tags nur im Kontext von CreateVolume
erstellen können. Die Benutzer können keine vorhandenen Volumes oder andere Ressourcen
markieren. Weitere Informationen finden Sie unter Erteilen der Berechtigung zum Markieren von Ressourcen während der Erstellung.
{ "Version": "2012-10-17", "Statement": [ { "Sid": "AllowCreateTaggedVolumes", "Effect": "Allow", "Action": "ec2:CreateVolume", "Resource": "arn:aws:ec2:us-east-1:123456789012:volume/*", "Condition": { "StringEquals": { "aws:RequestTag/costcenter": "115", "aws:RequestTag/stack": "prod" }, "ForAllValues:StringEquals": { "aws:TagKeys": ["costcenter","stack"] } } }, { "Effect": "Allow", "Action": [ "ec2:CreateTags" ], "Resource": "arn:aws:ec2:us-east-1:123456789012:volume/*", "Condition": { "StringEquals": { "ec2:CreateAction" : "CreateVolume" } } } ] }
Die folgende Richtline erlaubt den Benutzern die Erstellung eines Volumes, ohne Tags
angeben zu müssen. Die CreateTags
-Aktion wird nur ausgewertet, wenn Tags in der CreateVolume
-Anforderung festgelegt werden. Wenn Benutzer Tags hinzufügen, muss das Tag purpose=test
sein. Andere Tags sind in der Anforderung nicht zulässig.
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "ec2:CreateVolume", "Resource": "*" }, { "Effect": "Allow", "Action": [ "ec2:CreateTags" ], "Resource": "arn:aws:ec2:us-east-1:1234567890:volume/*", "Condition": { "StringEquals": { "aws:RequestTag/purpose": "test", "ec2:CreateAction" : "CreateVolume" }, "ForAllValues:StringEquals": { "aws:TagKeys": "purpose" } } } ] }
Arbeiten mit Snapshots
Dieser Abschnitt enthält Beispielrichtlinien für CreateSnapshot
(zeitpunktbezogener Snapshot eines EBS-Volumes) und CreateSnapshots
(Multi-Volume-Snapshots).
Beispiele
Beispiel: Erstellen eines Snapshots
Die folgende Richtlinie gestattet es Kunden, die CreateSnapshot-API-Aktion zu verwenden. Die Kunden können nur dann Snapshots erstellen, wenn das Volume verschlüsselt und nicht größer als 20 GiB ist.
{ "Version":"2012-10-17", "Statement": [ { "Effect":"Allow", "Action":"ec2:CreateSnapshot", "Resource":"arn:aws:ec2:us-east-1::snapshot/*" }, { "Effect":"Allow", "Action":"ec2:CreateSnapshot", "Resource":"arn:aws:ec2:us-east-1:123456789012:volume/*", "Condition":{ "NumericLessThan":{ "ec2:VolumeSize":"20" }, "Bool":{ "ec2:Encrypted":"true" } } } ] }
Beispiel: Erstellen von Snapshots
Die folgende Richtlinie gestattet es Kunden, die CreateSnapshots-API-Aktion zu verwenden. Die Kunden können nur Snapshots erstellen, wenn alle Volumes in der Instance den Typ GP2 aufweisen.
{ "Version":"2012-10-17", "Statement": [ { "Effect":"Allow", "Action":"ec2:CreateSnapshots", "Resource":[ "arn:aws:ec2:us-east-1::snapshot/*", "arn:aws:ec2:*:*:instance/*" ] }, { "Effect":"Allow", "Action":"ec2:CreateSnapshots", "Resource":"arn:aws:ec2:us-east-1:*:volume/*", "Condition":{ "StringLikeIfExists":{ "ec2:VolumeType":"gp2" } } } ] }
Beispiel: Erstellen eines Snapshots mit Tags
Die folgende Richtlinie umfasst den aws:RequestTag
-Bedingungsschlüssel. Er fordert, dass die Kunden die Tags costcenter=115
und stack=prod
auf jeden neuen Snapshot anwenden. Im aws:TagKeys
-Bedingungsschlüssel wird der ForAllValues
-Modifikator verwendet, um anzugeben, dass nur die Schlüssel costcenter
and stack
in der Anforderung angegeben werden können. Die Anforderung schlägt fehl, wenn eine
dieser Bedingungen nicht erfüllt ist.
Bei Aktionen zur Ressourcenerstellung, die Tags anwenden, müssen die Kunden zudem
über die Berechtigungen für die CreateTags
-Aktion verfügen. Die dritte Anweisung enthält den ec2:CreateAction
-Bedingungsschlüssel, sodass die Kunden Tags nur im Kontext von CreateSnapshot
erstellen können. Kunden können keine vorhandenen Volumes oder andere Ressourcen
markieren. Weitere Informationen finden Sie unter Erteilen der Berechtigung zum Markieren von Ressourcen während der Erstellung.
{ "Version":"2012-10-17", "Statement": [ { "Effect":"Allow", "Action":"ec2:CreateSnapshot", "Resource":"arn:aws:ec2:us-east-1:123456789012:volume/*" }, { "Sid":"AllowCreateTaggedSnapshots", "Effect":"Allow", "Action":"ec2:CreateSnapshot", "Resource":"arn:aws:ec2:us-east-1::snapshot/*", "Condition":{ "StringEquals":{ "aws:RequestTag/costcenter":"115", "aws:RequestTag/stack":"prod" }, "ForAllValues:StringEquals":{ "aws:TagKeys":[ "costcenter", "stack" ] } } }, { "Effect":"Allow", "Action":"ec2:CreateTags", "Resource":"arn:aws:ec2:us-east-1::snapshot/*", "Condition":{ "StringEquals":{ "ec2:CreateAction":"CreateSnapshot" } } } ] }
Beispiel: Erstellen von Snapshots mit Tags
Die folgende Richtlinie umfasst den aws:RequestTag
-Bedingungsschlüssel. Er fordert, dass die Kunden die Tags costcenter=115
und stack=prod
auf jeden neuen Snapshot anwenden. Im aws:TagKeys
-Bedingungsschlüssel wird der ForAllValues
-Modifikator verwendet, um anzugeben, dass nur die Schlüssel costcenter
and stack
in der Anforderung angegeben werden können. Die Anforderung schlägt fehl, wenn eine
dieser Bedingungen nicht erfüllt ist.
{ "Version":"2012-10-17", "Statement": [ { "Effect":"Allow", "Action":"ec2:CreateSnapshots", "Resource":[ "arn:aws:ec2:us-east-1::snapshot/*", "arn:aws:ec2:*:*:instance/*", "arn:aws:ec2:*:*:volume/*" ] }, { "Sid":"AllowCreateTaggedSnapshots", "Effect":"Allow", "Action":"ec2:CreateSnapshots", "Resource":"arn:aws:ec2:us-east-1::snapshot/*", "Condition":{ "StringEquals":{ "aws:RequestTag/costcenter":"115", "aws:RequestTag/stack":"prod" }, "ForAllValues:StringEquals":{ "aws:TagKeys":[ "costcenter", "stack" ] } } }, { "Effect":"Allow", "Action":"ec2:CreateTags", "Resource":"arn:aws:ec2:us-east-1::snapshot/*", "Condition":{ "StringEquals":{ "ec2:CreateAction":"CreateSnapshots" } } } ] }
Die folgende Richtlinie erlaubt den Kunden die Erstellung eines Snapshots, ohne Tags
angeben zu müssen. Die CreateTags
-Aktion wird nur ausgewertet, wenn Tags in der CreateSnapshot
- oder CreateSnapshots
-Anforderung angegeben werden. Wenn ein Tag angegeben ist, muss das Tag purpose=test
sein. Andere Tags sind in der Anforderung nicht zulässig.
{ "Version":"2012-10-17", "Statement": [ { "Effect":"Allow", "Action":"ec2:CreateSnapshot", "Resource":"*" }, { "Effect":"Allow", "Action":"ec2:CreateTags", "Resource":"arn:aws:ec2:us-east-1::snapshot/*", "Condition":{ "StringEquals":{ "aws:RequestTag/purpose":"test", "ec2:CreateAction":"CreateSnapshot" }, "ForAllValues:StringEquals":{ "aws:TagKeys":"purpose" } } } ] }
{ "Version":"2012-10-17", "Statement": [ { "Effect":"Allow", "Action":"ec2:CreateSnapshots", "Resource":"*" }, { "Effect":"Allow", "Action":"ec2:CreateTags", "Resource":"arn:aws:ec2:us-east-1::snapshot/*", "Condition":{ "StringEquals":{ "aws:RequestTag/purpose":"test", "ec2:CreateAction":"CreateSnapshots" }, "ForAllValues:StringEquals":{ "aws:TagKeys":"purpose" } } } ] }
Die folgende Richtlinie erlaubt nur dann, einen Snapshot zu erstellen, wenn das Quell-Volume
das Tag User:username
für den Kunden hat, und wenn der eigentliche Snapshot mit den Tags Environment:Dev
und User:username
gekennzeichnet ist. Der Kunde kann dem Snapshot weitere Tags hinzufügen.
{ "Version":"2012-10-17", "Statement": [ { "Effect":"Allow", "Action":"ec2:CreateSnapshot", "Resource":"arn:aws:ec2:us-east-1:123456789012:volume/*", "Condition":{ "StringEquals":{ "ec2:ResourceTag/User":"${aws:username}" } } }, { "Effect":"Allow", "Action":"ec2:CreateSnapshot", "Resource":"arn:aws:ec2:us-east-1::snapshot/*", "Condition":{ "StringEquals":{ "aws:RequestTag/Environment":"Dev", "aws:RequestTag/User":"${aws:username}" } } }, { "Effect":"Allow", "Action":"ec2:CreateTags", "Resource":"arn:aws:ec2:us-east-1::snapshot/*" } ] }
Die folgende Richtlinie für CreateSnapshots
erlaubt nur dann, Snapshots zu erstellen, wenn das Quell-Volume mit User:username
für den Kunden markiert ist und der eigentliche Snapshot mit Environment:Dev
und User:username
markiert ist.
{ "Version":"2012-10-17", "Statement": [ { "Effect":"Allow", "Action":"ec2:CreateSnapshots", "Resource":"arn:aws:ec2:us-east-1:*:instance/*", }, { "Effect":"Allow", "Action":"ec2:CreateSnapshots", "Resource":"arn:aws:ec2:us-east-1:123456789012:volume/*", "Condition":{ "StringEquals":{ "ec2:ResourceTag/User":"${aws:username}" } } }, { "Effect":"Allow", "Action":"ec2:CreateSnapshots", "Resource":"arn:aws:ec2:us-east-1::snapshot/*", "Condition":{ "StringEquals":{ "aws:RequestTag/Environment":"Dev", "aws:RequestTag/User":"${aws:username}" } } }, { "Effect":"Allow", "Action":"ec2:CreateTags", "Resource":"arn:aws:ec2:us-east-1::snapshot/*" } ] }
Die folgende Richtlinie erlaubt nur dann, einen Snapshot zu löschen, wenn der Snapshot mit User:Benutzername für den Kunden gekennzeichnet ist.
{ "Version":"2012-10-17", "Statement": [ { "Effect":"Allow", "Action":"ec2:DeleteSnapshot", "Resource":"arn:aws:ec2:us-east-1::snapshot/*", "Condition":{ "StringEquals":{ "ec2:ResourceTag/User":"${aws:username}" } } } ] }
Die folgende Richtlinie erlaubt einem Kunden, einen Snapshot zu erstellen, weist die
Aktion jedoch ab, wenn der zu erstellende Snapshot den Tag-Schlüssel value=stack
hat.
{ "Version":"2012-10-17", "Statement": [ { "Effect":"Allow", "Action":[ "ec2:CreateSnapshot", "ec2:CreateTags" ], "Resource":"*" }, { "Effect":"Deny", "Action":"ec2:CreateSnapshot", "Resource":"arn:aws:ec2:us-east-1::snapshot/*", "Condition":{ "ForAnyValue:StringEquals":{ "aws:TagKeys":"stack" } } } ] }
Die folgende Richtlinie erlaubt einem Kunden, Snapshots zu erstellen, weist die Aktion
jedoch ab, wenn die zu erstellenden Snapshots den Tag-Schlüssel value=stack
haben.
{ "Version":"2012-10-17", "Statement": [ { "Effect":"Allow", "Action":[ "ec2:CreateSnapshots", "ec2:CreateTags" ], "Resource":"*" }, { "Effect":"Deny", "Action":"ec2:CreateSnapshots", "Resource":"arn:aws:ec2:us-east-1::snapshot/*", "Condition":{ "ForAnyValue:StringEquals":{ "aws:TagKeys":"stack" } } } ] }
Die folgende Richtlinie erlaubt es Ihnen, mehrere Aktionen in einer Richtlinie zu
kombinieren. Sie können nur einen Snapshot erstellen (im Kontext vonCreateSnapshots
), wenn der Snapshot in der Region us-east-1
erstellt wird. Sie können nur Snapshots erstellen (im Kontext von CreateSnapshots
) wenn die Snapshots in der Region us-east-1
erstellt werden und der Instance-Typ t2*
lautet.
{ "Version":"2012-10-17", "Statement": [ { "Effect":"Allow", "Action":[ "ec2:CreateSnapshots", "ec2:CreateSnapshot", "ec2:CreateTags" ], "Resource": [ "arn:aws:ec2:*:*:instance/*", "arn:aws:ec2:*:*:snapshot/*", "arn:aws:ec2:*:*:volume/*" ], "Condition":{ "StringEqualsIgnoreCase": { "ec2:Region": "us-east-1" }, "StringLikeIfExists": { "ec2:InstanceType": ["t2.*"] } } } ] }
Beispiel: Snapshots kopieren
Die für die Aktion CopySnapshot (Snapshot kopieren) angegebenen Berechtigungen auf Ressourcenebene gelten nur für den neuen Snapshot. Sie können nicht für den Quell-Snapshot angegeben werden.
Die folgende Beispielrichtlinie ermöglicht es Prinzipalen, Snapshots nur zu kopieren,
wenn der neue Snapshot mit dem Tag-Schlüssel von purpose
und einem Tag-Wert von production
(purpose=production
) erstellt wird.
{ "Version": "2012-10-17", "Statement": [ { "Sid": "AllowCopySnapshotWithTags", "Effect": "Allow", "Action": "ec2:CopySnapshot", "Resource": "arn:aws:ec2:*:123456789012:snapshot/*", "Condition": { "StringEquals": { "aws:RequestTag/purpose": "production" } } } ] }
Beispiel: Ändern der Berechtigungseinstellungen für Snapshots
Die folgende Richtlinie erlaubt nur dann, einen Snapshot zu ändern, wenn der Snapshot
mit User:
gekennzeichnet ist, wobei username
username
der Benutzername für das AWS-Konto des Kunden ist. Die Anforderung schlägt fehl,
wenn diese Bedingungen nicht erfüllt ist.
{ "Version":"2012-10-17", "Statement": [ { "Effect":"Allow", "Action":"ec2: ModifySnapshotAttribute", "Resource":"arn:aws:ec2:us-east-1::snapshot/*", "Condition":{ "StringEquals":{ "ec2:ResourceTag/user-name":"${aws:
username
}" } } } ] }
Starten von Instances (RunInstances)
Die RunInstances-API-Aktion startet eine oder mehrere On-Demand-Instances oder eine oder mehrere Spot-Instances.
RunInstances
erfordert ein AMI und erstellt eine Instance. Benutzer können in der Anforderung
ein Schlüsselpaar und eine Sicherheitsgruppe angeben. Der Start in einer VPC erfordert
ein Subnetz und generiert eine Netzwerkschnittstelle. Beim Starten von einem Amazon
EBS-Backed AMI wird ein Volume erstellt. Der Benutzer muss daher über Berechtigungen
zur Verwendung dieser Amazon EC2-Ressourcen verfügen. Sie können eine Richtlinienanweisung
erstellen, damit die Benutzer einen optionalen Parameter für RunInstances
angeben müssen, oder die Werte einschränken, die den Benutzern für einen Parameter
gestattet sind.
Weitere Informationen zu Berechtigungen auf Ressourcenebene, die zum Starten einer Instance erforderlich sind, finden Sie unter Aktionen, Ressourcen und Bedingungsschlüssel für Amazon EC2.
Standardmäßig verfügen Benutzer nicht über Berechtigungen, die resultierenden Instances zu beschreiben, zu starten, anzuhalten oder zu beenden. Eine Möglichkeit, den Benutzern die Berechtigung zum Verwalten der resultierenden Instances zu erteilen, besteht darin, ein spezielles Tag für jede Instance und eine Anweisung zu erstellen, welche dazu dient, die Instances mit diesem Tag zu verwalten. Weitere Informationen finden Sie unter Arbeiten mit Instances.
Ressourcen
AMIs
Die folgende Richtlinie erlaubt den Benutzern, Instances ausschließlich mit den AMIs
ami-9e1670f7
und ami-45cf5c3c
zu starten. Die Benutzer können keine Instance mit anderen AMIs starten (es sei denn,
eine andere Anweisung gewährt den Benutzern die entsprechende Berechtigung).
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "ec2:RunInstances", "Resource": [ "arn:aws:ec2:region::image/ami-9e1670f7", "arn:aws:ec2:region::image/ami-45cf5c3c", "arn:aws:ec2:region:account:instance/*", "arn:aws:ec2:region:account:volume/*", "arn:aws:ec2:region:account:key-pair/*", "arn:aws:ec2:region:account:security-group/*", "arn:aws:ec2:region:account:subnet/*", "arn:aws:ec2:region:account:network-interface/*" ] } ] }
Alternativ ermöglicht es die unten stehende Richtlinie den Benutzern, Instances von
allen AMIs zu starten, die im Besitz von Amazon sind. Das Condition
-Element in der ersten Anweisung überprüft, ob ec2:Owner
amazon
ist. Die Benutzer können keine Instance mit anderen AMIs starten (es sei denn, eine
andere Anweisung gewährt den Benutzern die entsprechende Berechtigung).
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "ec2:RunInstances", "Resource": [ "arn:aws:ec2:region::image/ami-*" ], "Condition": { "StringEquals": { "ec2:Owner": "amazon" } } }, { "Effect": "Allow", "Action": "ec2:RunInstances", "Resource": [ "arn:aws:ec2:region:account:instance/*", "arn:aws:ec2:region:account:subnet/*", "arn:aws:ec2:region:account:volume/*", "arn:aws:ec2:region:account:network-interface/*", "arn:aws:ec2:region:account:key-pair/*", "arn:aws:ec2:region:account:security-group/*" ] } ] }
Instance-Typen
Die folgende Richtlinie gestattet es Benutzern, Instances nur mit dem t2.micro
- oder t2.small
-Instance-Typ zu starten, wodurch die Kosten kontrolliert werden können. Die Benutzer
können keine größeren Instances starten, da das Condition
-Element der ersten Anweisung überprüft, ob ec2:InstanceType
entweder t2.micro
oder t2.small
ist.
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "ec2:RunInstances", "Resource": [ "arn:aws:ec2:region:account:instance/*" ], "Condition": { "StringEquals": { "ec2:InstanceType": ["t2.micro", "t2.small"] } } }, { "Effect": "Allow", "Action": "ec2:RunInstances", "Resource": [ "arn:aws:ec2:region::image/ami-*", "arn:aws:ec2:region:account:subnet/*", "arn:aws:ec2:region:account:network-interface/*", "arn:aws:ec2:region:account:volume/*", "arn:aws:ec2:region:account:key-pair/*", "arn:aws:ec2:region:account:security-group/*" ] } ] }
Sie können alternativ eine Richtlinie erstellen, die Benutzern Berechtigungen zum
Starten aller Instances, mit Ausnahme der Instance-Typen t2.micro
und t2.small
, verweigert.
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Deny", "Action": "ec2:RunInstances", "Resource": [ "arn:aws:ec2:region:account:instance/*" ], "Condition": { "StringNotEquals": { "ec2:InstanceType": ["t2.micro", "t2.small"] } } }, { "Effect": "Allow", "Action": "ec2:RunInstances", "Resource": [ "arn:aws:ec2:region::image/ami-*", "arn:aws:ec2:region:account:network-interface/*", "arn:aws:ec2:region:account:instance/*", "arn:aws:ec2:region:account:subnet/*", "arn:aws:ec2:region:account:volume/*", "arn:aws:ec2:region:account:key-pair/*", "arn:aws:ec2:region:account:security-group/*" ] } ] }
Subnetze
Die folgende Richtlinie erlaubt den Benutzern, Instances ausschließlich im angegebenen
Subnetz, subnet-12345678
, zu starten. Die Gruppe kann keine Instances in einem anderen Subnetz starten (es
sei denn, eine andere Anweisung gewährt den Benutzern die entsprechende Berechtigung).
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "ec2:RunInstances", "Resource": [ "arn:aws:ec2:region:account:subnet/subnet-12345678", "arn:aws:ec2:region:account:network-interface/*", "arn:aws:ec2:region:account:instance/*", "arn:aws:ec2:region:account:volume/*", "arn:aws:ec2:region::image/ami-*", "arn:aws:ec2:region:account:key-pair/*", "arn:aws:ec2:region:account:security-group/*" ] } ] }
Alternativ können Sie eine Richtlinie erstellen, die Benutzern Berechtigungen zum
Starten einer Instance in jedem anderen Subnetz verweigert. Zu diesem Zweck verweigert
die Anweisung die Berechtigung zum Erstellen einer Netzwerkschnittstelle, außer wenn
das subnet-12345678
-Subnetz festgelegt wird. Diese Verweigerung setzt alle anderen Richtlinien außer
Kraft, die erstellt werden, um zu gestatten, Instances in anderen Subnetzen zu starten.
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Deny", "Action": "ec2:RunInstances", "Resource": [ "arn:aws:ec2:region:account:network-interface/*" ], "Condition": { "ArnNotEquals": { "ec2:Subnet": "arn:aws:ec2:region:account:subnet/subnet-12345678" } } }, { "Effect": "Allow", "Action": "ec2:RunInstances", "Resource": [ "arn:aws:ec2:region::image/ami-*", "arn:aws:ec2:region:account:network-interface/*", "arn:aws:ec2:region:account:instance/*", "arn:aws:ec2:region:account:subnet/*", "arn:aws:ec2:region:account:volume/*", "arn:aws:ec2:region:account:key-pair/*", "arn:aws:ec2:region:account:security-group/*" ] } ] }
EBS-Datenträger
Die Richtlinie unten ermöglicht es den Benutzern, Instances nur zu starten, wenn die EBS-Volumes für die Instance verschlüsselt sind. Der Benutzer muss eine Instance von einem AMI starten, das mit verschlüsselten Snapshots erstellt wurde, um sicherzustellen, dass das Stamm-Volume verschlüsselt wird. Jedes weitere Volume, das der Instance während des Starts vom Benutzer angefügt wird, muss auch verschlüsselt sein.
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "ec2:RunInstances", "Resource": [ "arn:aws:ec2:*:*:volume/*" ], "Condition": { "Bool": { "ec2:Encrypted": "true" } } }, { "Effect": "Allow", "Action": "ec2:RunInstances", "Resource": [ "arn:aws:ec2:*::image/ami-*", "arn:aws:ec2:*:*:network-interface/*", "arn:aws:ec2:*:*:instance/*", "arn:aws:ec2:*:*:subnet/*", "arn:aws:ec2:*:*:key-pair/*", "arn:aws:ec2:*:*:security-group/*" ] } ] }
Tags
Markieren von Instances bei der Erstellung
Die folgende Richtlinie gestattet es den Benutzern, Instances zu starten und sie während
ihrer Erstellung zu markieren. Bei Aktionen zur Ressourcenerstellung, die Tags anwenden,
müssen Benutzer über Berechtigungen für die Aktion CreateTags
verfügen. Die zweite Anweisung enthält den ec2:CreateAction
-Bedingungsschlüssel, sodass die Benutzer Tags nur im Kontext von RunInstances
und nur für Instances erstellen können. Die Benutzer können keine vorhandenen Ressourcen
mit Tags versehen und Volumes nicht mit der RunInstances
-Anforderung markieren.
Weitere Informationen finden Sie unter Erteilen der Berechtigung zum Markieren von Ressourcen während der Erstellung.
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "ec2:RunInstances" ], "Resource": "*" }, { "Effect": "Allow", "Action": [ "ec2:CreateTags" ], "Resource": "arn:aws:ec2:us-east-1:123456789012:instance/*", "Condition": { "StringEquals": { "ec2:CreateAction" : "RunInstances" } } } ] }
Markieren von Instances und Volumes bei der Erstellung mit bestimmten Tags
Die folgende Richtlinie umfasst den aws:RequestTag
-Bedingungsschlüssel. Die Benutzer müssen daher alle Instances und Volumes, die durch
RunInstances
erstellt werden, mit den Tags environment=production
und purpose=webserver
versehen. Mit dem aws:TagKeys
-Modifikator im ForAllValues
-Bedingungsschlüssel wird ferner festgelegt, dass nur die Schlüssel environment
und purpose
in der Anforderung zulässig sind und keine anderen Tags verwendet werden können.
Wenn keine Tags in der Anforderung angegeben werden, schlägt die Anforderung fehl.
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "ec2:RunInstances" ], "Resource": [ "arn:aws:ec2:region::image/*", "arn:aws:ec2:region:account:subnet/*", "arn:aws:ec2:region:account:network-interface/*", "arn:aws:ec2:region:account:security-group/*", "arn:aws:ec2:region:account:key-pair/*" ] }, { "Effect": "Allow", "Action": [ "ec2:RunInstances" ], "Resource": [ "arn:aws:ec2:region:account:volume/*", "arn:aws:ec2:region:account:instance/*" ], "Condition": { "StringEquals": { "aws:RequestTag/environment": "production" , "aws:RequestTag/purpose": "webserver" }, "ForAllValues:StringEquals": { "aws:TagKeys": ["environment","purpose"] } } }, { "Effect": "Allow", "Action": [ "ec2:CreateTags" ], "Resource": "arn:aws:ec2:region:account:*/*", "Condition": { "StringEquals": { "ec2:CreateAction" : "RunInstances" } } } ] }
Markieren von instances und Volumes bei der Erstellung mit mindestens einem bestimmten Tag
Die Richtlinie unten verwendet den ForAnyValue
-Modifikator für die aws:TagKeys
-Bedingung, um festzulegen, dass mindestens ein Tag in der Anforderung angegeben werden
muss und der environment
- oder webserver
-Schlüssel enthalten sein muss. Das Tag muss sowohl auf Instances als auch auf Volumes
angewendet werden. In der Anforderung können beliebige Tag-Werte angegeben werden.
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "ec2:RunInstances" ], "Resource": [ "arn:aws:ec2:region::image/*", "arn:aws:ec2:region:account:subnet/*", "arn:aws:ec2:region:account:network-interface/*", "arn:aws:ec2:region:account:security-group/*", "arn:aws:ec2:region:account:key-pair/*" ] }, { "Effect": "Allow", "Action": [ "ec2:RunInstances" ], "Resource": [ "arn:aws:ec2:region:account:volume/*", "arn:aws:ec2:region:account:instance/*" ], "Condition": { "ForAnyValue:StringEquals": { "aws:TagKeys": ["environment","webserver"] } } }, { "Effect": "Allow", "Action": [ "ec2:CreateTags" ], "Resource": "arn:aws:ec2:region:account:*/*", "Condition": { "StringEquals": { "ec2:CreateAction" : "RunInstances" } } } ] }
Wenn Instances bei der Erstellung markiert werden, müssen sie mit einem bestimmten Tag markiert sein
In der folgenden Richtlinie ist es nicht notwendig, dass die Benutzer in der Anforderung
Tags angeben, aber wenn sie dies tun, muss es das purpose=test
-Tag sein. Andere Tags sind nicht zulässig. Die Benutzer können in der RunInstances
-Anforderung die Tags auf jede Ressource anwenden, die mit Tags versehen werden kann.
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "ec2:RunInstances" ], "Resource": "*" }, { "Effect": "Allow", "Action": [ "ec2:CreateTags" ], "Resource": "arn:aws:ec2:region:account:*/*", "Condition": { "StringEquals": { "aws:RequestTag/purpose": "test", "ec2:CreateAction" : "RunInstances" }, "ForAllValues:StringEquals": { "aws:TagKeys": "purpose" } } } ] }
So verbieten Sie allen, „Tag on create“ (Beim Erstellen markieren) für RunInstances aufzurufen:
{ "Version": "2012-10-17", "Statement": [ { "Sid": "AllowRun", "Effect": "Allow", "Action": [ "ec2:RunInstances" ], "Resource": [ "arn:aws:ec2:us-east-1::image/*", "arn:aws:ec2:us-east-1:*:subnet/*", "arn:aws:ec2:us-east-1:*:network-interface/*", "arn:aws:ec2:us-east-1:*:security-group/*", "arn:aws:ec2:us-east-1:*:key-pair/*", "arn:aws:ec2:us-east-1:*:volume/*", "arn:aws:ec2:us-east-1:*:instance/*", "arn:aws:ec2:us-east-1:*:spot-instances-request/*" ] }, { "Sid": "VisualEditor0", "Effect": "Deny", "Action": "ec2:CreateTags", "Resource": "*" } ] }
Lassen Sie nur bestimmte Tags für spot-instances-request zu. Hier kommt die überraschende Inkonsistenz Nr. 2 ins Spiel. Unter normalen Umständen führt das Angeben von keinen Tags zu „Unauthenticated (Nicht authentifiziert)“. Im Fall von spot-instances-request wird diese Richtlinie nicht ausgewertet, wenn keine spot-instances-request-Tags vorhanden sind, so dass eine Spot on Run-Anforderung ohne Tags erfolgreich ist.
{ "Version": "2012-10-17", "Statement": [ { "Sid": "AllowRun", "Effect": "Allow", "Action": [ "ec2:RunInstances" ], "Resource": [ "arn:aws:ec2:us-east-1::image/*", "arn:aws:ec2:us-east-1:*:subnet/*", "arn:aws:ec2:us-east-1:*:network-interface/*", "arn:aws:ec2:us-east-1:*:security-group/*", "arn:aws:ec2:us-east-1:*:key-pair/*", "arn:aws:ec2:us-east-1:*:volume/*", "arn:aws:ec2:us-east-1:*:instance/*", ] }, { "Sid": "VisualEditor0", "Effect": "Allow", "Action": "ec2:RunInstances", "Resource": "arn:aws:ec2:us-east-1:*:spot-instances-request/*", "Condition": { "StringEquals": { "aws:RequestTag/environment": "production" } } } ] }
Tags in einer Startvorlage
Im folgenden Beispiel können Benutzer Instances starten, jedoch nur über eine bestimmte
Startvorlage (lt-09477bcd97b0d310e
). Durch den Bedingungsschlüssel ec2:IsLaunchTemplateResource
werden Benutzer daran gehindert, in der Startvorlage angegebene Ressourcen außer
Kraft zu setzen. Der zweite Teil der Anweisung erlaubt Benutzern das Markieren von
Instances bei der Erstellung—dieser Teil der Anweisung wird benötigt, wenn in der
Startvorlage Markierungen für die Instance angegeben werden.
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "ec2:RunInstances", "Resource": "*", "Condition": { "ArnLike": { "ec2:LaunchTemplate": "arn:aws:ec2:region:account:launch-template/lt-09477bcd97b0d310e" }, "Bool": { "ec2:IsLaunchTemplateResource": "true" } } }, { "Effect": "Allow", "Action": [ "ec2:CreateTags" ], "Resource": "arn:aws:ec2:region:account:instance/*", "Condition": { "StringEquals": { "ec2:CreateAction" : "RunInstances" } } } ] }
Elastic GPUs
In der folgenden Richtlinie können Benutzer eine Instance starten und eine elastische
GPU zum Anfügen an die Instance angeben. Benutzer können Instances in jeder Region
starten, das Anfügen einer elastischen GPU ist beim Start jedoch nur in der Region
us-east-2
möglich.
Der Bedingungsschlüssel ec2:ElasticGpuType
verwendet den Modifikator ForAnyValue
, um anzuzeigen, dass nur die elastischen GPU-Typen eg1.medium
und eg1.large
in der Anfrage zulässig sind.
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "ec2:RunInstances" ], "Resource": [ "arn:aws:ec2:*:account:elastic-gpu/*" ], "Condition": { "StringEquals": { "ec2:Region": "us-east-2" }, "ForAnyValue:StringLike": { "ec2:ElasticGpuType": [ "eg1.medium", "eg1.large" ] } } }, { "Effect": "Allow", "Action": "ec2:RunInstances", "Resource": [ "arn:aws:ec2:*::image/ami-*", "arn:aws:ec2:*:account:network-interface/*", "arn:aws:ec2:*:account:instance/*", "arn:aws:ec2:*:account:subnet/*", "arn:aws:ec2:*:account:volume/*", "arn:aws:ec2:*:account:key-pair/*", "arn:aws:ec2:*:account:security-group/*" ] } ] }
Startvorlagen
Im folgenden Beispiel können Benutzer Instances starten, jedoch nur über eine bestimmte
Startvorlage (lt-09477bcd97b0d310e
). Benutzer können die Parameter in der Startvorlage außer Kraft setzen, indem sie
die Parameter in der Aktion RunInstances
angeben.
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "ec2:RunInstances", "Resource": "*", "Condition": { "ArnLike": { "ec2:LaunchTemplate": "arn:aws:ec2:region:account:launch-template/lt-09477bcd97b0d310e" } } } ] }
In diesem Beispiel können Benutzer Instances nur starten, wenn sie eine Startvorlage
verwenden. Die Richtlinie verhindert mit dem Bedingungsschlüssel ec2:IsLaunchTemplateResource
, dass Benutzer eventuell vorhandene ARNs in der Startvorlage übergehen.
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "ec2:RunInstances", "Resource": "*", "Condition": { "ArnLike": { "ec2:LaunchTemplate": "arn:aws:ec2:region:account:launch-template/*" }, "Bool": { "ec2:IsLaunchTemplateResource": "true" } } } ] }
Die folgende Beispielsrichtlinie erlaubt einem Benutzer, Instances zu starten, jedoch nur über eine Startvorlage. Benutzer können in der Anforderung keine Subnetz- und Netzwerkschnittstellen-Parameter außer Kraft setzen. Diese Parameter können nur in der Startvorlage angegeben werden. Der erste Teil der Anweisung erlaubt mithilfe des Elements NotResource alle anderen Ressourcen, außer Subnetze und Netzwerkschnittstellen. Der zweite Teil der Anweisung erlaubt die Subnetz- und Netzwerkschnittstellen-Ressourcen, jedoch nur, wenn sie ihren Ursprung in der Startvorlage haben.
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "ec2:RunInstances", "NotResource": ["arn:aws:ec2:region:account:subnet/*", "arn:aws:ec2:region:account:network-interface/*" ], "Condition": { "ArnLike": { "ec2:LaunchTemplate": "arn:aws:ec2:region:account:launch-template/*" } } }, { "Effect": "Allow", "Action": "ec2:RunInstances", "Resource": ["arn:aws:ec2:region:account:subnet/*", "arn:aws:ec2:region:account:network-interface/*" ], "Condition": { "ArnLike": { "ec2:LaunchTemplate": "arn:aws:ec2:region:account:launch-template/*" }, "Bool": { "ec2:IsLaunchTemplateResource": "true" } } } ] }
Das folgende Beispiel erlaubt Benutzern, Instances zu starten, jedoch nur über eine
Startvorlage und wenn die Startvorlage den Tag Purpose=Webservers
aufweist. Benutzer können mit der Aktion RunInstances
keine Parameter der Startvorlage außer Kraft setzen.
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "ec2:RunInstances", "NotResource": "arn:aws:ec2:region:account:launch-template/*", "Condition": { "ArnLike": { "ec2:LaunchTemplate": "arn:aws:ec2:region:account:launch-template/*" }, "Bool": { "ec2:IsLaunchTemplateResource": "true" } } }, { "Effect": "Allow", "Action": "ec2:RunInstances", "Resource": "arn:aws:ec2:region:account:launch-template/*", "Condition": { "StringEquals": { "ec2:ResourceTag/Purpose": "Webservers" } } } ] }
Arbeiten mit Spot-Instances
Sie können die RunInstances-Aktion verwenden, um Spot-Instance-Anforderungen zu erstellen
und die Spot-Instance-Anforderungen beim Erstellen zu kennzeichnen. Die Ressource,
die für RunInstances anzugeben ist, ist spot-instances-request
.
Die spot-instances-request
-Ressource wird in der IAM-Richtlinie wie folgt ausgewertet:
-
Wenn Sie keine Spot-Instance-Anforderung beim Erstellen markieren, wertet Amazon EC2 die
spot-instances-request
-Ressource in der RunInstances-Anweisung aus. -
Wenn Sie eine Spot-Instance-Anforderung beim Erstellen markieren, wertet Amazon EC2 die
spot-instances-request
-Ressource in der RunInstances-Anweisung aus.
Daher gelten für die spot-instances-request
-Ressource die folgenden Regeln für die IAM-Richtlinie:
-
Wenn Sie RunInstances verwenden, um eine Spot-Instance-Anforderung zu erstellen und die Spot-Instance-Anforderung beim Erstellen nicht markieren, müssen Sie die
spot-instances-request
-Ressource nicht explizit zulassen. Der Aufruf wird erfolgreich ausgeführt. -
Wenn Sie RunInstances verwenden, um eine Spot-Instance-Anforderung zu erstellen und beabsichtigen, die Spot-Instance-Anforderung beim Erstellen zu markieren, müssen Sie die
spot-instances-request
-Ressource in die RunInstances allow-Anweisung aufnehmen, andernfalls schlägt der Aufruf fehl. -
Wenn Sie RunInstances verwenden, um eine Spot-Instance Anforderung zu erstellen und beabsichtigen, die Spot-Instance-Anforderung beim Erstellen zu markieren, müssen Sie die
spot-instances-request
-Ressource oder den*
-Platzhalter in der CreateTags allow-Anweisung angeben, andernfalls schlägt der Aufruf fehl.
Sie können Spot-Instances mit RunInstances oder RequestSpotInstances anfordern. Die folgenden Beispiele für IAM-Richtlinien gelten nur für Anforderungen von Spot-Instances mit RunInstances.
Beispiel: Anforderung Spot-Instances mit RunInstances
Mit der folgenden Richtlinie können Benutzer Spot-Instances mithilfe der RunInstances-Aktion
anfordern. Die spot-instances-request
-Ressource, die von RunInstances erstellt wird, fordert Spot-Instances an.
Um RunInstances zum Erstellen von Spot-Instance-Anforderungen zu verwenden, können
Sie spot-instances-request
aus der Resource
-Liste weglassen, wenn Sie nicht beabsichtigen, die Spot-Instance-Anforderungen beim
Erstellen zu markieren. Dies liegt daran, dass Amazon EC2 die spot-instances-request
-Ressource in der RunInstances-Anweisung nicht auswertet, wenn die Spot-Instance-Anforderung
nicht bei der Erstellung markiert wird.
{ "Version": "2012-10-17", "Statement": [ { "Sid": "AllowRun", "Effect": "Allow", "Action": [ "ec2:RunInstances" ], "Resource": [ "arn:aws:ec2:us-east-1::image/*", "arn:aws:ec2:us-east-1:*:subnet/*", "arn:aws:ec2:us-east-1:*:network-interface/*", "arn:aws:ec2:us-east-1:*:security-group/*", "arn:aws:ec2:us-east-1:*:key-pair/*", "arn:aws:ec2:us-east-1:*:volume/*", "arn:aws:ec2:us-east-1:*:instance/*", "arn:aws:ec2:us-east-1:*:spot-instances-request/*" ] } ] }
NOT SUPPORTED (NICHT UNTERSTÜTZT) – Beispiel: Benutzer die Berechtigung verweigern, Spot-Instances mit RunInstances anzufordern
Die folgende Richtlinie wird für die spot-instances-request
-Ressource nicht unterstützt.
Die folgende Richtlinie soll Benutzern die Berechtigung zum Starten von On-Demand-Instances
erteilen, ihnen jedoch die Berechtigung zum Anfordern von Spot-Instances verweigern.
Die spot-instances-request
-Ressource, die von RunInstances erstellt wird, ist die Ressource, die Spot-Instances
anfordert. Die zweite Anweisung soll die RunInstances-Aktion für die spot-instances-request
-Ressource verweigern. Diese Bedingung wird jedoch nicht unterstützt, da Amazon EC2
die spot-instances-request
- Ressource in der RunInstances -Anweisung nicht auswertet, wenn die Spot-Instance-Anforderung
nicht beim Erstellen markiert wurde.
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "AllowRun",
"Effect": "Allow",
"Action": [
"ec2:RunInstances"
],
"Resource": [
"arn:aws:ec2:us-east-1::image/*",
"arn:aws:ec2:us-east-1:*:subnet/*",
"arn:aws:ec2:us-east-1:*:network-interface/*",
"arn:aws:ec2:us-east-1:*:security-group/*",
"arn:aws:ec2:us-east-1:*:key-pair/*",
"arn:aws:ec2:us-east-1:*:volume/*",
"arn:aws:ec2:us-east-1:*:instance/*"
]
},
{
"Sid": "DenySpotInstancesRequests - NOT SUPPORTED - DO NOT USE!",
"Effect": "Deny",
"Action": "ec2:RunInstances",
"Resource": "arn:aws:ec2:us-east-1:*:spot-instances-request/*"
}
]
}
Beispiel: Markieren von Spot-Instance-Anfragen beim Erstellen
Die folgende Richtlinie ermöglicht es Benutzern, alle Ressourcen zu kennzeichnen,
die während des Instance-Starts erstellt werden. Die erste Anweisung ermöglicht es
RunInstances, die aufgelisteten Ressourcen zu erstellen. Die spot-instances-request
-Ressource, die von RunInstances erstellt wird, ist die Ressource, die Spot-Instances
anfordert. Die zweite Anweisung stellt einen *
-Platzhalter bereit, mit dem alle Ressourcen markiert werden können, wenn sie beim
Start der Instance erstellt werden.
Wenn Sie eine Spot-Instance-Anforderung beim Erstellen markieren, wertet Amazon EC2
die spot-instances-request
-Ressource in der RunInstances-Anweisung aus. Daher müssen Sie die spot-instances-request
-Ressource explizit für die RunInstances-Aktion zulassen, andernfalls schlägt der
Aufruf fehl.
{ "Version": "2012-10-17", "Statement": [ { "Sid": "AllowRun", "Effect": "Allow", "Action": [ "ec2:RunInstances" ], "Resource": [ "arn:aws:ec2:us-east-1::image/*", "arn:aws:ec2:us-east-1:*:subnet/*", "arn:aws:ec2:us-east-1:*:network-interface/*", "arn:aws:ec2:us-east-1:*:security-group/*", "arn:aws:ec2:us-east-1:*:key-pair/*", "arn:aws:ec2:us-east-1:*:volume/*", "arn:aws:ec2:us-east-1:*:instance/*", "arn:aws:ec2:us-east-1:*:spot-instances-request/*" ] }, { "Sid": "TagResources", "Effect": "Allow", "Action": "ec2:CreateTags", "Resource": "*" } ] }
Beispiel: Markieren beim Erstellen für Spot-Instance-Anfragen verweigern
Die folgende Richtlinie verweigert Benutzern die Berechtigung zum Markieren der Ressourcen, die während des Instance-Starts erstellt werden.
Die erste Anweisung ermöglicht es RunInstances, die aufgelisteten Ressourcen zu erstellen.
Die spot-instances-request
-Ressource, die von RunInstances erstellt wird, ist die Ressource, die Spot-Instances
anfordert. Die zweite Anweisung stellt einen *
-Platzhalter bereit, um alle Ressourcen zu verweigern, die markiert werden, wenn sie
beim Start der Instance erstellt werden. Wenn spot-instances-request
oder eine andere Ressource beim Erstellen markiert wurde, schlägt der Aufruf RunInstances
fehl.
{ "Version": "2012-10-17", "Statement": [ { "Sid": "AllowRun", "Effect": "Allow", "Action": [ "ec2:RunInstances" ], "Resource": [ "arn:aws:ec2:us-east-1::image/*", "arn:aws:ec2:us-east-1:*:subnet/*", "arn:aws:ec2:us-east-1:*:network-interface/*", "arn:aws:ec2:us-east-1:*:security-group/*", "arn:aws:ec2:us-east-1:*:key-pair/*", "arn:aws:ec2:us-east-1:*:volume/*", "arn:aws:ec2:us-east-1:*:instance/*", "arn:aws:ec2:us-east-1:*:spot-instances-request/*" ] }, { "Sid": "DenyTagResources", "Effect": "Deny", "Action": "ec2:CreateTags", "Resource": "*" } ] }
NOT SUPPORTED (NICHT UNTERSTÜTZT)– Beispiel: Zulassen des Erstellens einer Spot-Instance-Anfrage nur, wenn ihr ein bestimmter Tag zugewiesen wurde
Die folgende Richtlinie wird für die spot-instances-request
-Ressource nicht unterstützt.
Die folgende Richtlinie soll RunInstances nur dann die Berechtigung zum Erstellen einer Spot-Instance-Anforderung erteilen, wenn die Anforderung mit einem bestimmten Tag markiert ist.
Die erste Anweisung ermöglicht es RunInstances, die aufgelisteten Ressourcen zu erstellen.
Die zweite Anweisung soll Benutzern nur dann die Berechtigung erteilen, eine Spot-Instance-Anforderung
zu erstellen, wenn die Anforderung das Tag environment=production
hat. Wenn diese Bedingung auf andere Ressourcen angewendet wird, die von RunInstances
erstellt wurden, führt das Angeben von keinen Tags zu einem Unauthenticated
-Fehler. Wenn jedoch keine Tags für die Spot-Instance-Anforderung angegeben sind,
wird die spot-instances-request
-Ressource in der RunInstances-Anweisung von Amazon EC2 nicht ausgewertet, was dazu
führt, dass nicht markierte Spot-Instance-Anforderungen von RunInstances erstellt
werden.
Beachten Sie, dass das Angeben eines anderen Tags als environment=production
zu einem Unauthenticated
-Fehler führt. Wenn ein Benutzer eine Spot-Instance-Anforderung markiert, wird die
spot-instances-request
-Ressource von Amazon EC2 in der RunInstances-Anweisung ausgewertet.
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "AllowRun",
"Effect": "Allow",
"Action": [
"ec2:RunInstances"
],
"Resource": [
"arn:aws:ec2:us-east-1::image/*",
"arn:aws:ec2:us-east-1:*:subnet/*",
"arn:aws:ec2:us-east-1:*:network-interface/*",
"arn:aws:ec2:us-east-1:*:security-group/*",
"arn:aws:ec2:us-east-1:*:key-pair/*",
"arn:aws:ec2:us-east-1:*:volume/*",
"arn:aws:ec2:us-east-1:*:instance/*"
]
},
{
"Sid": "RequestSpotInstancesOnlyIfTagIs_environment=production - NOT SUPPORTED - DO NOT USE!",
"Effect": "Allow",
"Action": "ec2:RunInstances",
"Resource": "arn:aws:ec2:us-east-1:*:spot-instances-request/*",
"Condition": {
"StringEquals": {
"aws:RequestTag/environment": "production"
}
}
},
{
"Sid": "TagResources",
"Effect": "Allow",
"Action": "ec2:CreateTags",
"Resource": "*"
}
]
}
Beispiel: Verweigern des Erstellens einer Spot-Instance-Anforderung, wenn ihr ein bestimmtes Tag zugewiesen ist
Die folgende Richtlinie verweigert RunInstances die Berechtigung zum Erstellen einer
Spot-Instance-Anforderung, wenn die Anforderung mit environment=production
markiert ist.
Die erste Anweisung ermöglicht es RunInstances, die aufgelisteten Ressourcen zu erstellen.
Die zweite Anweisung verweigert Benutzern die Berechtigung, eine Spot-Instance-Anforderung
zu erstellen, wenn die Anforderung das Tag environment=production
hat. Die Angabe von environment=production
als Tag führt zu einem Unauthenticated
-Fehler. Wenn Sie andere oder keine Tags angeben, wird eine Spot-Instance-Anforderung
erstellt.
{ "Version": "2012-10-17", "Statement": [ { "Sid": "AllowRun", "Effect": "Allow", "Action": [ "ec2:RunInstances" ], "Resource": [ "arn:aws:ec2:us-east-1::image/*", "arn:aws:ec2:us-east-1:*:subnet/*", "arn:aws:ec2:us-east-1:*:network-interface/*", "arn:aws:ec2:us-east-1:*:security-group/*", "arn:aws:ec2:us-east-1:*:key-pair/*", "arn:aws:ec2:us-east-1:*:volume/*", "arn:aws:ec2:us-east-1:*:instance/*", "arn:aws:ec2:us-east-1:*:spot-instances-request/*" ] }, { "Sid": "DenySpotInstancesRequests", "Effect": "Deny", "Action": "ec2:RunInstances", "Resource": "arn:aws:ec2:us-east-1:*:spot-instances-request/*", "Condition": { "StringEquals": { "aws:RequestTag/environment": "production" } } }, { "Sid": "TagResources", "Effect": "Allow", "Action": "ec2:CreateTags", "Resource": "*" } ] }
Beispiel: Arbeiten mit Reserved Instances
Mit der folgenden Richtlinie wird Benutzern die Berechtigung zum Ansehen, Ändern und Kaufen von Reserved Instances in Ihrem Konto gewährt.
Für einzelne Reserved Instances können keine Berechtigungen auf Ressourcenebene erteilt werden. Diese Richtlinie bedeutet, dass die Benutzer Zugriff auf alle Reserved Instances im Konto haben.
Der Platzhalter * im Element Resource
legt fest, dass Benutzer alle Ressourcen für die Aktion angeben können. In diesem
Beispiel können sie alle Reserved Instances im Konto auflisten und bearbeiten. Sie
haben auch die Möglichkeit, die Kontoanmeldeinformationen zu verwenden, um Reserved
Instances zu kaufen. Das Sternchen (*) als Platzhalter ist auch dann erforderlich,
wenn die API-Aktion keine Berechtigungen auf Ressourcenebene unterstützt.
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "ec2:DescribeReservedInstances", "ec2:ModifyReservedInstances", "ec2:PurchaseReservedInstancesOffering", "ec2:DescribeAvailabilityZones", "ec2:DescribeReservedInstancesOfferings" ], "Resource": "*" } ] }
Benutzern wird die Berechtigung zum Ansehen und Ändern der Reserved Instances in Ihrem Konto erteilt, aber nicht zum Kauf von neuen Reserved Instances.
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "ec2:DescribeReservedInstances", "ec2:ModifyReservedInstances", "ec2:DescribeAvailabilityZones" ], "Resource": "*" } ] }
Beispiel: Markieren von Ressourcen
Die folgende Richtlinie erlaubt Benutzern nur die Verwendung der CreateTags
-Aktion, um einer Instance Tags hinzuzufügen, wenn das Tag den environment
-Schlüssel und den production
-Wert enthält. Der ForAllValues
-Modifikator wird dem aws:TagKeys
-Bedingungsschlüssel hinzugefügt, um anzugeben, dass nur der environment
-Schlüssel in der Anforderung zulässig ist und keine anderen Tags verwendet werden
können. Der Benutzer kann keine anderen Ressourcentypen markieren.
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "ec2:CreateTags" ], "Resource": "arn:aws:ec2:region:account:instance/*", "Condition": { "StringEquals": { "aws:RequestTag/environment": "production" }, "ForAllValues:StringEquals": { "aws:TagKeys": [ "environment" ] } } } ] }
Die Richtlinie unten ermöglicht es den Benutzern, jede markierbare Ressource, die
bereits ein Tag mit dem owner
-Schlüssel und einen IAM-Benutzernamen als Wert aufweist, mit Tags zu versehen. Zudem
müssen die Benutzer ein Tag mit dem anycompany:environment-type
-Schlüssel und dem Wert test
oder prod
in der Anforderung festlegen. Die Benutzer können zusätzliche Tags in der Anforderung
angeben.
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "ec2:CreateTags" ], "Resource": "arn:aws:ec2:region:account:*/*", "Condition": { "StringEquals": { "aws:RequestTag/anycompany:environment-type": ["test","prod"], "ec2:ResourceTag/owner": "${aws:username}" } } } ] }
Sie können eine IAM-Richtlinie erstellen, die den Benutzern erlaubt, bestimmte Tags
für eine Ressource zu löschen. Die folgende Richtlinie gestattet es den Benutzern
zum Beispiel, Tags für ein Volume zu löschen, sofern die Anforderung die Tag-Schlüssel
environment
oder cost-center
enthält. Für den Tag kann ein beliebiger Wert angegeben werden, aber der Tag-Schlüssel
muss einem der genannten Schlüssel entsprechen.
Wenn Sie eine Ressource löschen, werden alle der Ressource zugeordneten Tags ebenfalls
gelöscht. Die Benutzer benötigen keine Berechtigungen für die Verwendung der Aktion
ec2:DeleteTags
, um eine Ressource zu löschen, die Tags aufweist. Sie müssen nur über Berechtigungen
zum Ausführen der Löschaktion verfügen.
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "ec2:DeleteTags", "Resource": "arn:aws:ec2:us-east-1:123456789012:volume/*", "Condition": { "ForAllValues:StringEquals": { "aws:TagKeys": ["environment","cost-center"] } } } ] }
Diese Richtlinie erlaubt den Benutzern, auf beliebigen Ressourcen nur den environment=prod
-Tag zu löschen. Dies gilt zudem nur, wenn die Ressource bereits den owner
-Schlüssel-Tag und einen IAM-Benutzernamen als Wert aufweist. Die Benutzer können
keine anderen Tags für eine Ressource löschen.
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "ec2:DeleteTags" ], "Resource": "arn:aws:ec2:region:account:*/*", "Condition": { "StringEquals": { "aws:RequestTag/environment": "prod", "ec2:ResourceTag/owner": "${aws:username}" }, "ForAllValues:StringEquals": { "aws:TagKeys": ["environment"] } } } ] }
Beispiel: Arbeiten mit IAM-Rollen
Die folgende Richtlinie erlaubt Benutzern das Anfügen, Ersetzen und Trennen einer
IAM-Rolle für Instances, die über das department=test
-Tag verfügen. Das Ersetzen oder Trennen einer IAM-Rolle erfordert eine Zuordnungs-ID.
Die Richtlinie erteilt den Benutzern daher außerdem die Berechtigung, die ec2:DescribeIamInstanceProfileAssociations
-Aktion zu verwenden.
Die IAM-Benutzer müssen über die Berechtigung für die iam:PassRole
-Aktion verfügen, um die Rollen an die Instance zu übergeben.
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "ec2:AssociateIamInstanceProfile", "ec2:ReplaceIamInstanceProfileAssociation", "ec2:DisassociateIamInstanceProfile" ], "Resource": "arn:aws:ec2:region:account:instance/*", "Condition": { "StringEquals": { "ec2:ResourceTag/department":"test" } } }, { "Effect": "Allow", "Action": "ec2:DescribeIamInstanceProfileAssociations", "Resource": "*" }, { "Effect": "Allow", "Action": "iam:PassRole", "Resource": "*" } ] }
Die folgende Richtlinie erlaubt Benutzern das Anfügen oder Ersetzen einer IAM-Rolle
für eine beliebige Instance. Es können nur IAM-Rollen angefügt oder ersetzt werden,
deren Namen mit TestRole-
beginnen. Stellen Sie bei der iam:PassRole
-Aktion sicher, dass Sie den Namen der IAM-Rolle und nicht den des Instance-Profils
angeben, falls sich diese Namen unterscheiden. Weitere Informationen finden Sie unter
Instance-Profile.
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "ec2:AssociateIamInstanceProfile", "ec2:ReplaceIamInstanceProfileAssociation" ], "Resource": "*" }, { "Effect": "Allow", "Action": "ec2:DescribeIamInstanceProfileAssociations", "Resource": "*" }, { "Effect": "Allow", "Action": "iam:PassRole", "Resource": "arn:aws:iam::account:role/TestRole-*" } ] }
Beispiel: Arbeiten mit Routing-Tabellen
Die folgende Richtlinie ermöglicht Benutzern das Hinzufügen, Entfernen und Ersetzen
von Routings für Routing-Tabellen, die nur mit VPC vpc-ec43eb89
verbunden sind. Zur Angabe einer VPC für den Bedingungsschlüssel ec2:Vpc
müssen Sie den vollständigen ARN der VPC angeben.
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "ec2:DeleteRoute", "ec2:CreateRoute", "ec2:ReplaceRoute" ], "Resource": [ "arn:aws:ec2:region:account:route-table/*" ], "Condition": { "StringEquals": { "ec2:Vpc": "arn:aws:ec2:region:account:vpc/vpc-ec43eb89" } } } ] }
Beispiel: Zulassen, dass eine bestimmte Instance Ressourcen in anderen AWS-Services anzeigt
Nachfolgend finden Sie ein Beispiel für eine Richtlinie, die Sie einer IAM-Rolle anhängen
können. Diese Richtlinie lässt zu, dass eine Instance Ressourcen in verschiedenen
AWS-Services anzeigt. Sie gibt mit dem Bedingungsschlüssel ec2:SourceInstanceARN
an, dass es sich bei der Instance, von der die Anforderung ausging, um die Instance
i-093452212644b0dd6
handeln muss. Wenn die gleiche IAM-Rolle mit einer anderen Instance verbunden ist,
kann die andere Instance keine dieser Aktionen ausführen.
Der Schlüssel ec2:SourceInstanceARN
ist ein AWS-weiter Bedingungsschlüssel und kann daher für andere Serviceaktionen,
nicht nur für Amazon EC2, verwendet werden.
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "ec2:DescribeVolumes", "s3:ListAllMyBuckets", "dynamodb:ListTables", "rds:DescribeDBInstances" ], "Resource": [ "*" ], "Condition": { "ArnEquals": { "ec2:SourceInstanceARN": "arn:aws:ec2:region:account:instance/i-093452212644b0dd6" } } } ] }
Beispiel: Arbeiten mit Startvorlagen
Die folgende Richtlinie erlaubt Benutzern, eine Startvorlagenversion zu erstellen
und eine Startvorlage zu bearbeiten, jedoch nur für eine bestimmte Startvorlage (lt-09477bcd97b0d3abc
). Benutzer können nicht mit anderen Startvorlagen arbeiten.
{ "Version": "2012-10-17", "Statement": [ { "Action": [ "ec2:CreateLaunchTemplateVersion", "ec2:ModifyLaunchTemplate" ], "Effect": "Allow", "Resource": "arn:aws:ec2:region:account:launch-template/lt-09477bcd97b0d3abc" } ] }
Die folgende Richtlinie erlaubt Benutzern, eine Startvorlage und Startvorlagenversion
zu löschen, vorausgesetzt, dass die Startvorlage den Tag Purpose
=Testing
aufweist.
{ "Version": "2012-10-17", "Statement": [ { "Action": [ "ec2:DeleteLaunchTemplate", "ec2:DeleteLaunchTemplateVersions" ], "Effect": "Allow", "Resource": "arn:aws:ec2:region:account:launch-template/*", "Condition": { "StringEquals": { "ec2:ResourceTag/Purpose": "Testing" } } } ] }
Arbeiten mit Instance-Metadaten
Die folgenden Richtlinien stellen sicher, dass Benutzer Instance-Metadaten nur mit Instance-Metadatenservice Version 2 (IMDSv2) abrufen können. Sie können die folgenden vier Richtlinien zu einer Richtlinie mit vier Anweisungen zusammenfassen. Wenn diese zu einer Richtlinie zusammengefasst werden, können Sie die Richtlinie als Service-Kontrollrichtlinie (SCP) verwenden. Sie kann gleichermaßen gut als Verweigerungsrichtlinie funktionieren, die Sie auf eine bestehende IAM-Richtlinie anwenden (zum Aufheben und Einschränken bestehender Berechtigungen), oder auch als SCP, die global auf ein Konto, eine OE oder eine gesamte Organisation angewendet wird.
Die folgenden Richtlinien für RunInstances-Metadatenoptionen müssen in Verbindung mit einer Richtlinie verwendet werden, die dem Prinzipal das Recht gewährt, eine Instance mit RunInstances zu starten. Verfügt der Prinzipal nicht auch über Berechtigungen für RunInstances, kann er keine Instance starten. Weitere Informationen finden Sie in den Richtlinien unter Arbeiten mit Instances und Starten von Instances (RunInstances).
Wenn Sie Auto Scaling-Gruppen verwenden und für alle neuen Instances die Verwendung von IMDSv2 vorschreiben, müssen Ihre Auto Scaling-Gruppen Startvorlagen verwenden.
Wenn eine Auto Scaling-Gruppe eine Startvorlage verwendet, werden die ec2:RunInstances
-Berechtigungen des IAM-Prinzipals beim Erstellen einer neuen Auto Scaling-Gruppe
überprüft. Sie werden auch überprüft, wenn eine vorhandene Auto Scaling-Gruppe so
aktualisiert wird, dass eine neue Startvorlage oder eine neue Version einer Startvorlage
verwendet wird.
Einschränkungen für die Verwendung von IMDSv1 auf IAM-Prinzipalen für RunInstances
werden nur überprüft, wenn eine Auto Scaling-Gruppe erstellt oder aktualisiert wird,
die eine Startvorlage verwendet. Für eine Auto Scaling-Gruppe, die für die Verwendung
der Startvorlage Latest
oder Default
konfiguriert ist, werden die Berechtigungen nicht überprüft, wenn eine neue Version
der Startvorlage erstellt wird. Damit Berechtigungen überprüft werden können, müssen
Sie die Auto Scaling-Gruppe so konfigurieren, dass eine bestimmte Version der Startvorlage verwendet wird.
Um die Verwendung von IMDSv2 auf Instances zu erzwingen, die von Auto Scaling-Gruppen gestartet werden, sind die folgenden zusätzlichen Schritte erforderlich:
-
Deaktivieren Sie die Verwendung von Startkonfigurationen für alle Konten in Ihrer Organisation, indem Sie entweder Service-Kontrollrichtlinien (SCPs) oder IAM-Berechtigungsgrenzen für neue erstellte Prinzipale verwenden. Aktualisieren Sie für vorhandene IAM-Prinzipale mit Auto Scaling-Gruppenberechtigungen die zugehörigen Richtlinien mit diesem Bedingungsschlüssel. Um die Verwendung von Startkonfigurationen zu deaktivieren, erstellen oder ändern Sie den entsprechenden SCP, die Berechtigungsgrenze oder die IAM-Richtlinie mit dem Bedingungsschlüssel
"autoscaling:LaunchConfigurationName"
mit dem alsnull
angegebenen Wert. -
Konfigurieren Sie für neue Startvorlagen die Instance-Metadatenoptionen in der Startvorlage. Erstellen Sie für vorhandene Startvorlagen eine neue Version der Startvorlage und konfigurieren Sie die Instance-Metadatenoptionen in der neuen Version.
-
In der Richtlinie, die einen jeden Prinzipal zur Verwendung einer Startvorlage berechtigt, beschränken Sie die Zuordnung von
$latest
und$default
durch Angabe von"autoscaling:LaunchTemplateVersionSpecified": "true"
. Indem Sie die Verwendung auf eine bestimmte Version einer Startvorlage beschränken, können Sie sicherstellen, dass neue Instances mit der Version gestartet werden, in der die Instance-Metadatenoptionen konfiguriert sind. Weitere Informationen finden Sie unter LaunchTemplateSpecification im Amazon EC2 Auto Scaling-API-Referenz, insbesondere im ParameterVersion
. -
Ersetzen Sie bei einer Auto Scaling-Gruppe, die eine Startkonfiguration verwendet, die Startkonfiguration durch eine Startvorlage. Weitere Informationen finden Sie unter Ersetzen einer Startkonfiguration durch eine Startvorlage im Amazon EC2 Auto Scaling-Benutzerhandbuch.
-
Stellen Sie bei einer Auto Scaling-Gruppe, die eine Startvorlage verwendet, sicher, dass sie eine neue Startvorlage mit den konfigurierten Instance-Metadatenoptionen oder eine neue Version der aktuellen Startvorlage mit den konfigurierten Instance-Metadatenoptionen verwendet. Weitere Informationen finden Sie unter update-auto-scaling-group im AWS CLI Command Reference.
Beispiele
Erzwingen der Verwendung von IMDSv2
Die folgende Richtlinie legt fest, dass Sie die RunInstances-API nur aufrufen können,
wenn für die Instance ebenfalls die Verwendung von IMDSv2 (angegeben durch "ec2:MetadataHttpTokens": "required"
) erforderlich ist. Wenn Sie nicht angeben, dass die Instance IMDSv2 erfordert, erhalten
Sie beim Aufruf der RunInstances-API eine UnauthorizedOperation
-Fehlermeldung.
{ "Version": "2012-10-17", "Statement": [ { "Sid": "RequireImdsV2", "Effect": "Deny", "Action": "ec2:RunInstances", "Resource": "arn:aws:ec2:*:*:instance/*", "Condition": { "StringNotEquals": { "ec2:MetadataHttpTokens": "required" } } } ] }
Angeben des maximalen Hop-Limits
Die folgende Richtlinie legt fest, dass Sie die RunInstances-API nur aufrufen können,
wenn Sie auch ein Hop-Limit angeben, wobei das Hop-Limit nicht mehr als 3 betragen
darf. Unterlassen Sie dies, erhalten Sie beim Aufruf der Runinstances-API eine UnauthorizedOperation
-Fehlermeldung.
{ "Version": "2012-10-17", "Statement": [ { "Sid": "MaxImdsHopLimit", "Effect": "Deny", "Action": "ec2:RunInstances", "Resource": "arn:aws:ec2:*:*:instance/*", "Condition": { "NumericGreaterThan": { "ec2:MetadataHttpPutResponseHopLimit": "3" } } } ] }
Beschränken, wer die Instance-Metadatenoptionen ändern kann
Mit der folgenden Richtlinie wird die Möglichkeit für die Allgemeinheit von Administratoren
aufgehoben, die Optionen für Instance-Metadaten zu ändern, und es nur Benutzern mit
der Rolle ec2-imds-admins
erlaubt, Änderungen vorzunehmen. Wenn ein anderer Prinzipal als die ec2-imds-admins
-Rolle versucht, die API ModifyInstanceDataOptions aufzurufen, wird ihm ein UnauthorizedOperation
-Fehler angezeigt. Diese Anweisung könnte verwendet werden, um die Verwendung der
API ModifyInstanceDataOptions zu steuern. Derzeit sind keine differenzierten Zugriffskontrollen
(Bedingungen) für die API ModifyInstanceDataOptions vorhanden.
{ "Version": "2012-10-17", "Statement": [ { "Sid": "AllowOnlyImdsAdminsToModifySettings", "Effect": "Deny", "Action": "ec2:ModifyInstanceMetadataOptions", "Resource": "*", "Condition": { "StringNotLike": { "aws:PrincipalARN": "arn:aws:iam::*:role/ec2-imds-admins" } } } ] }
Erzwingen, dass Rollen-Anmeldeinformationen aus IMDSv2 abgerufen werden
Die folgende Richtlinie legt fest, dass wenn diese Richtlinie auf eine Rolle angewendet
wird und die Rolle vom EC2-Service übernommen wird und die daraus resultierenden Anmeldeinformationen
zum Signieren einer Anforderung verwendet werden, die Anforderung mit Anmeldeinformationen
für EC2-Rollen signiert werden muss, die von IMDSv2 abgerufen werden. Andernfalls
erhalten alle API-Aufrufe einen UnauthorizedOperation
-Fehler. Diese Anweisung/Richtlinie kann generell angewendet werden, da sie keine
Wirkung hat, wenn die Anforderung nicht mit Anmeldeinformationen für EC2-Rollen signiert
wird.
{ "Version": "2012-10-17", "Statement": [ { "Sid": "RequireAllEc2RolesToUseV2", "Effect": "Deny", "Action": "*", "Resource": "*", "Condition": { "NumericLessThan": { "ec2:RoleDelivery": "2.0" } } } ] }