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 zur Zugangskontrolle im Amazon EC2 API
Sie können IAM Richtlinien verwenden, um Benutzern die für die Arbeit mit Amazon erforderlichen Berechtigungen zu gewährenEC2. step-by-step Anweisungen finden Sie im IAMBenutzerhandbuch unter IAMRichtlinien erstellen.
Die folgenden Beispiele zeigen Richtlinienerklärungen, mit denen Sie Benutzern Berechtigungen zur Nutzung von Amazon gewähren könnenEC2. Diese Richtlinien sind für Anfragen konzipiert, die unter Verwendung von AWS CLI oder an gestellt werden AWS SDK. Ersetzen Sie in den folgenden Beispielen jedes user input placeholder
mit Ihren eigenen Informationen.
Beispiele
- Schreibgeschützter Zugriff
- Beschränken des Zugriffs auf eine bestimmte Region
- Arbeiten mit Instances
- Instanzen starten (RunInstances)
- Arbeiten mit Spot-Instances
- Arbeiten mit Reserved Instances
- Markieren von Ressourcen
- Arbeiten mit IAM-Rollen
- Arbeiten mit Routing-Tabellen
- Erlauben Sie einer bestimmten Instanz, Ressourcen in anderen AWS Diensten anzuzeigen
- Arbeiten mit Startvorlagen
- Arbeiten mit Instance-Metadaten
- Arbeiten Sie mit EBS Amazon-Volumes und -Snapshots
Richtlinien für die Arbeit in der EC2 Amazon-Konsole finden Sie beispielsweise unterBeispielrichtlinien zur Steuerung des Zugriffs auf die EC2 Amazon-Konsole.
Beispiel: schreibgeschützter Zugriff
Die folgende Richtlinie gewährt Benutzern die Erlaubnis, alle EC2 API Amazon-Aktionen zu verwenden, deren Namen mit beginnenDescribe
. Das Resource
Element verwendet einen Platzhalter, um anzuzeigen, dass Benutzer alle Ressourcen mit diesen API Aktionen angeben können. Der Platzhalter „*“ ist auch in Fällen erforderlich, in denen die API Aktion keine Berechtigungen auf Ressourcenebene unterstützt. Weitere Informationen darüber, welche Aktionen ARNs Sie mit welchen EC2 API Amazon-Aktionen verwenden können, finden Sie unter Aktionen, Ressourcen und Bedingungsschlüssel für Amazon EC2.
Benutzer sind nicht berechtigt, Aktionen an den Ressourcen durchzuführen (es sei denn, eine andere Erklärung erteilt ihnen die Erlaubnis dazu), da ihnen standardmäßig die Erlaubnis zur Verwendung von API Aktionen 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 Erlaubnis, alle EC2 API Amazon-Aktionen zu nutzen, es sei denn, die Region ist Europa (Frankfurt). Es verwendet den globalen Bedingungsschlüsselaws:RequestedRegion
, der von allen EC2 API Amazon-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 verwendenec2:Region
, der für Amazon spezifisch ist EC2 und von allen EC2 API Amazon-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
Die folgende Richtlinie gewährt Benutzern die Erlaubnis, die im Action
Element angegebenen API Aktionen zu verwenden. Das Resource
Element verwendet einen Platzhalter „*“, um anzuzeigen, dass Benutzer alle Ressourcen mit diesen API Aktionen angeben können. Der Platzhalter „*“ ist auch in Fällen erforderlich, in denen die API Aktion keine Berechtigungen auf Ressourcenebene unterstützt. Weitere Informationen darüber, welche Aktionen ARNs Sie mit welchen EC2 API Amazon-Aktionen verwenden können, finden Sie unter Aktionen, Ressourcen und Bedingungsschlüssel für Amazon EC2.
Die Benutzer sind nicht berechtigt, andere API Aktionen zu verwenden (es sei denn, eine andere Erklärung erteilt ihnen die Erlaubnis dazu), da Benutzern standardmäßig die Erlaubnis verweigert wird, API Aktionen zu verwenden.
{ "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 (Markierung) 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. Der Platzhalter „*“ ist auch in Fällen erforderlich, in denen die API Aktion keine Berechtigungen auf Ressourcenebene unterstützt (in diesem Fall). ec2:DescribeInstances
Weitere Informationen darüber, welche Aktionen ARNs Sie mit welchen EC2 API Amazon-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 spezifischen Instanzen werden durch ihre ARNs im Resource
Element enthaltenen Werte gekennzeichnet.
Die dritte Anweisung ermöglicht es Benutzern, alle Instances in der Region USA Ost (Nord-Virginia) (us-east-1
) zu beenden, die zu dem angegebenen AWS Konto gehören, aber nur dort, wo die Instance das Tag hat"purpose=test"
. 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:
account-id
:instance/i-1234567890abcdef0", "arn:aws:ec2:us-east-1:account-id
:instance/i-0598c7d356eba48d7" ] }, { "Effect": "Allow", "Action": "ec2:TerminateInstances", "Resource": "arn:aws:ec2:us-east-1:account-id
:instance/*", "Condition": { "StringEquals": { "aws:ResourceTag/purpose": "test" } } } ] }
Instanzen starten (RunInstances)
Die RunInstancesAPIAktion startet eine oder mehrere On-Demand-Instances oder eine oder mehrere Spot-Instances. RunInstances
benötigt eine AMI und erstellt eine Instanz. Benutzer können in der Anforderung ein Schlüsselpaar und eine Sicherheitsgruppe angeben. Für den Start in ein VPC ist ein Subnetz erforderlich, und es wird eine Netzwerkschnittstelle erstellt. Wenn Sie von einem von Amazon EBS unterstützten System aus starten, AMI entsteht ein Volumen. Daher muss der Benutzer über Berechtigungen zur Nutzung dieser EC2 Amazon-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 den 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 Tags (Markierung) für jede Instance und eine Anweisung zu erstellen, welche dazu dient, die Instances mit diesem Tag (Markierung) zu verwalten. Weitere Informationen finden Sie unter Arbeiten mit Instances.
Ressourcen
AMIs
Die folgende Richtlinie ermöglicht es Benutzern, Instances nur mit den angegebenenAMIs, ami-9e1670f7
und zu starten. ami-45cf5c3c
Die Benutzer können eine Instance nicht mit anderen starten AMIs (es sei denn, eine andere Anweisung erteilt den Benutzern die Erlaubnis dazu).
{ "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-id
:instance/*", "arn:aws:ec2:region
:account-id
:volume/*", "arn:aws:ec2:region
:account-id
:key-pair/*", "arn:aws:ec2:region
:account-id
:security-group/*", "arn:aws:ec2:region
:account-id
:subnet/*", "arn:aws:ec2:region
:account-id
:network-interface/*" ] } ] }
Alternativ ermöglicht die folgende Richtlinie Benutzern, Instances von allen Anbietern von AMIs Amazon oder bestimmten vertrauenswürdigen und verifizierten Partnern aus zu starten. Das Condition
-Element in der ersten Anweisung überprüft, ob ec2:Owner
amazon
ist. Die Benutzer können eine Instance nicht mit anderen starten AMIs (es sei denn, eine andere Erklärung erteilt den Benutzern die Erlaubnis dazu).
{ "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-id
:instance/*", "arn:aws:ec2:region
:account-id
:subnet/*", "arn:aws:ec2:region
:account-id
:volume/*", "arn:aws:ec2:region
:account-id
:network-interface/*", "arn:aws:ec2:region
:account-id
:key-pair/*", "arn:aws:ec2:region
:account-id
: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-id
: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-id
:subnet/*", "arn:aws:ec2:region
:account-id
:network-interface/*", "arn:aws:ec2:region
:account-id
:volume/*", "arn:aws:ec2:region
:account-id
:key-pair/*", "arn:aws:ec2:region
:account-id
: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-id
: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-id
:network-interface/*", "arn:aws:ec2:region
:account-id
:instance/*", "arn:aws:ec2:region
:account-id
:subnet/*", "arn:aws:ec2:region
:account-id
:volume/*", "arn:aws:ec2:region
:account-id
:key-pair/*", "arn:aws:ec2:region
:account-id
:security-group/*" ] } ] }
Subnetze
Die folgende Richtlinie erlaubt den Benutzern, Instances ausschließlich im angegebenen Subnetz, subnet-
, 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).12345678
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "ec2:RunInstances", "Resource": [ "arn:aws:ec2:
region
:account-id
:subnet/subnet-12345678
", "arn:aws:ec2:region
:account-id
:network-interface/*", "arn:aws:ec2:region
:account-id
:instance/*", "arn:aws:ec2:region
:account-id
:volume/*", "arn:aws:ec2:region
::image/ami-*", "arn:aws:ec2:region
:account-id
:key-pair/*", "arn:aws:ec2:region
:account-id
: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-
-Subnetz festgelegt wird. Diese Verweigerung setzt alle anderen Richtlinien außer Kraft, die erstellt werden, um zu gestatten, Instances in anderen Subnetzen zu starten.12345678
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Deny", "Action": "ec2:RunInstances", "Resource": [ "arn:aws:ec2:
region
:account-id
:network-interface/*" ], "Condition": { "ArnNotEquals": { "ec2:Subnet": "arn:aws:ec2:region
:account-id
:subnet/subnet-12345678
" } } }, { "Effect": "Allow", "Action": "ec2:RunInstances", "Resource": [ "arn:aws:ec2:region
::image/ami-*", "arn:aws:ec2:region
:account-id
:network-interface/*", "arn:aws:ec2:region
:account-id
:instance/*", "arn:aws:ec2:region
:account-id
:subnet/*", "arn:aws:ec2:region
:account-id
:volume/*", "arn:aws:ec2:region
:account-id
:key-pair/*", "arn:aws:ec2:region
:account-id
:security-group/*" ] } ] }
EBS-Volumes
Die folgende Richtlinie erlaubt es Benutzern, Instances nur zu starten, wenn die EBS Volumes für die Instance verschlüsselt sind. Der Benutzer muss eine Instance von einer aus startenAMI, die mit verschlüsselten Snapshots erstellt wurde, um sicherzustellen, dass das Root-Volume verschlüsselt ist. 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 Berechtigung zum Markieren von EC2 Amazon-Ressourcen während der Erstellung gewähren.
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "ec2:RunInstances" ], "Resource": "*" }, { "Effect": "Allow", "Action": [ "ec2:CreateTags" ], "Resource": "arn:aws:ec2:us-east-1:
account-id
: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. Werden nicht genau diese Tags (Markierungen) übergeben oder überhaupt keine Tags (Markierungen) angegeben, 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-id
:subnet/*", "arn:aws:ec2:region
:account-id
:network-interface/*", "arn:aws:ec2:region
:account-id
:security-group/*", "arn:aws:ec2:region
:account-id
:key-pair/*" ] }, { "Effect": "Allow", "Action": [ "ec2:RunInstances" ], "Resource": [ "arn:aws:ec2:region
:account-id
:volume/*", "arn:aws:ec2:region
:account-id
:instance/*" ], "Condition": { "StringEquals": { "aws:RequestTag/environment": "production" , "aws:RequestTag/purpose": "webserver" } } }, { "Effect": "Allow", "Action": [ "ec2:CreateTags" ], "Resource": "arn:aws:ec2:region
:account-id
:*/*", "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 (Markierung) in der Anforderung angegeben werden muss und der environment
- oder webserver
-Schlüssel enthalten sein muss. Das Tag (Markierung) muss sowohl auf Instances als auch auf Volumes angewendet werden. In der Anforderung können beliebige Tags (Markierungen)-Werte angegeben werden.
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "ec2:RunInstances" ], "Resource": [ "arn:aws:ec2:
region
::image/*", "arn:aws:ec2:region
:account-id
:subnet/*", "arn:aws:ec2:region
:account-id
:network-interface/*", "arn:aws:ec2:region
:account-id
:security-group/*", "arn:aws:ec2:region
:account-id
:key-pair/*" ] }, { "Effect": "Allow", "Action": [ "ec2:RunInstances" ], "Resource": [ "arn:aws:ec2:region
:account-id
:volume/*", "arn:aws:ec2:region
:account-id
:instance/*" ], "Condition": { "ForAnyValue:StringEquals": { "aws:TagKeys": ["environment","webserver"] } } }, { "Effect": "Allow", "Action": [ "ec2:CreateTags" ], "Resource": "arn:aws:ec2:region
:account-id
:*/*", "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 (Markierungen) angeben, aber wenn sie dies tun, muss es das Tag (Markierungen) purpose=test
sein. Andere Tags (Markierungen) 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-id
:*/*", "Condition": { "StringEquals": { "aws:RequestTag/purpose": "test", "ec2:CreateAction" : "RunInstances" }, "ForAllValues:StringEquals": { "aws:TagKeys": "purpose" } } } ] }
Um jeden Benutzer, der Tag bei create for aufgerufen hat, nicht zuzulassen RunInstances
{ "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": "*" } ] }
Erlaube nur bestimmte Tags für spot-instances-request. Hier kommt die überraschende Inkonsistenz Nr. 2 ins Spiel. Unter normalen Umständen führt das Angeben von keinen Tags (Markierungen) zu „Unauthenticated (Nicht authentifiziert)“. Im Fall von wird diese Richtlinie nicht ausgewertet spot-instances-request, wenn keine spot-instances-request Tags vorhanden sind, sodass eine Spot-on-Run-Anfrage 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 (Markierungen) 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 Tags (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-id
:launch-template/lt-09477bcd97b0d310e" }, "Bool": { "ec2:IsLaunchTemplateResource": "true" } } }, { "Effect": "Allow", "Action": [ "ec2:CreateTags" ], "Resource": "arn:aws:ec2:region
:account-id
:instance/*", "Condition": { "StringEquals": { "ec2:CreateAction" : "RunInstances" } } } ] }
Elastisch GPUs
In der folgenden Richtlinie können Benutzer eine Instance starten und ein Elastic GPU angeben, das an die Instance angehängt werden soll. Benutzer können Instances in jeder Region starten, aber sie können ein Elastic nur GPU während eines Starts in der us-east-2
Region anhängen.
Der ec2:ElasticGpuType
Bedingungsschlüssel stellt sicher, dass Instances entweder den Typ eg1.medium
oder den eg1.large
GPU Elastic-Typ verwenden.
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "ec2:RunInstances" ], "Resource": [ "arn:aws:ec2:*:
account-id
:elastic-gpu/*" ], "Condition": { "StringEquals": { "ec2:Region": "us-east-2", "ec2:ElasticGpuType": [ "eg1.medium", "eg1.large" ] } } }, { "Effect": "Allow", "Action": "ec2:RunInstances", "Resource": [ "arn:aws:ec2:*::image/ami-*", "arn:aws:ec2:*:account-id
:network-interface/*", "arn:aws:ec2:*:account-id
:instance/*", "arn:aws:ec2:*:account-id
:subnet/*", "arn:aws:ec2:*:account-id
:volume/*", "arn:aws:ec2:*:account-id
:key-pair/*", "arn:aws:ec2:*:account-id
: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-id
:launch-template/lt-09477bcd97b0d310e" } } } ] }
In diesem Beispiel können Benutzer Instances nur starten, wenn sie eine Startvorlage verwenden. Die Richtlinie verwendet den ec2:IsLaunchTemplateResource
Bedingungsschlüssel, um zu verhindern, dass Benutzer bereits ARNs in der Startvorlage vorhandene Werte überschreiben.
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "ec2:RunInstances", "Resource": "*", "Condition": { "ArnLike": { "ec2:LaunchTemplate": "arn:aws:ec2:
region
:account-id
: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. Im ersten Teil der Anweisung wird das NotResourceElement verwendet, um alle anderen Ressourcen außer Subnetzen und Netzwerkschnittstellen zuzulassen. 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-id
:subnet/*", "arn:aws:ec2:region
:account-id
:network-interface/*" ], "Condition": { "ArnLike": { "ec2:LaunchTemplate": "arn:aws:ec2:region
:account-id
:launch-template/*" } } }, { "Effect": "Allow", "Action": "ec2:RunInstances", "Resource": ["arn:aws:ec2:region
:account-id
:subnet/*", "arn:aws:ec2:region
:account-id
:network-interface/*" ], "Condition": { "ArnLike": { "ec2:LaunchTemplate": "arn:aws:ec2:region
:account-id
: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 (Markierungen) 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-id
:launch-template/*", "Condition": { "ArnLike": { "ec2:LaunchTemplate": "arn:aws:ec2:region
:account-id
:launch-template/*" }, "Bool": { "ec2:IsLaunchTemplateResource": "true" } } }, { "Effect": "Allow", "Action": "ec2:RunInstances", "Resource": "arn:aws:ec2:region
:account-id
:launch-template/*", "Condition": { "StringEquals": { "aws:ResourceTag/Purpose": "Webservers" } } } ] }
Arbeiten mit Spot-Instances
Sie können die RunInstances Aktion verwenden, um Spot-Instance-Anfragen zu erstellen und die Spot-Instance-Anfragen bei der Erstellung mit einem Tag zu versehen. Die Ressource, für die Sie angeben müssen, RunInstances istspot-instances-request
.
Die spot-instances-request
Ressource wird in der IAM Richtlinie wie folgt bewertet:
-
Wenn Sie eine Spot-Instance-Anfrage bei der Erstellung EC2 nicht taggen, bewertet Amazon die
spot-instances-request
Ressource in der RunInstances Abrechnung nicht. -
Wenn Sie eine Spot-Instance-Anfrage bei der Erstellung taggen, EC2 bewertet Amazon die
spot-instances-request
Ressource in der RunInstances Abrechnung.
Daher gelten für die spot-instances-request
Ressource die folgenden Regeln für die IAM Richtlinie:
-
Wenn Sie RunInstances eine Spot-Instance-Anfrage erstellen und nicht beabsichtigen, die Spot-Instance-Anfrage bei der Erstellung zu taggen, müssen Sie die
spot-instances-request
Ressource nicht explizit zulassen. Der Aufruf ist erfolgreich. -
Wenn Sie RunInstances eine Spot-Instance-Anfrage erstellen und beabsichtigen, die Spot-Instance-Anfrage bei der Erstellung zu taggen, müssen Sie die
spot-instances-request
Ressource in die RunInstances Allow-Anweisung aufnehmen, andernfalls schlägt der Aufruf fehl. -
Wenn Sie RunInstances eine Spot-Instance-Anfrage erstellen und beabsichtigen, die Spot-Instance-Anfrage bei der Erstellung zu taggen, müssen Sie die
spot-instances-request
Ressource oder den*
Platzhalter in der Allow-Anweisung CreateTags angeben, andernfalls schlägt der Aufruf fehl.
Sie können Spot-Instances mit RunInstances oder RequestSpotInstances anfordern. Die folgenden IAM Beispielrichtlinien gelten nur für die Anforderung von Spot-Instances über RunInstances.
Beispiel: Spot-Instances anfordern mit RunInstances
Die folgende Richtlinie ermöglicht es Benutzern, Spot-Instances mithilfe der RunInstances Aktion anzufordern. Die spot-instances-request
Ressource, die von erstellt wurde RunInstances, fordert Spot-Instances an.
Anmerkung
Um Spot-Instance-Anfragen RunInstances zu erstellen, können Sie sie spot-instances-request
aus der Resource
Liste streichen, wenn Sie nicht beabsichtigen, die Spot-Instance-Anfragen bei der Erstellung zu taggen. Dies liegt daran, dass Amazon die spot-instances-request
Ressource in der RunInstances Anweisung EC2 nicht bewertet, wenn die Spot-Instance-Anfrage bei create nicht markiert 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/*", "arn:aws:ec2:us-east-1:*:spot-instances-request/*" ] } ] }
Warnung
NOTSUPPORTED— Beispiel: Benutzern die Erlaubnis verweigern, Spot-Instances anzufordern mit RunInstances
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 erstellt wurde RunInstances, 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 die spot-instances-request
Ressource in der RunInstances Anweisung EC2 nicht bewertet, wenn die Spot-Instance-Anfrage bei create nicht markiert 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": "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-Anforderungen beim Erstellen
Die folgende Richtlinie ermöglicht es Benutzern, alle Ressourcen zu markieren, 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 erstellt wurde RunInstances, 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.
Anmerkung
Wenn Sie eine Spot-Instance-Anfrage bei der Erstellung taggen, EC2 bewertet Amazon die spot-instances-request
Ressource in der RunInstances Abrechnung. Daher müssen Sie die spot-instances-request
Ressource für die RunInstances Aktion ausdrücklich 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 von Spot-Instance-Anforderungen 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 erstellt wurde RunInstances, 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 bei create markiert ist, schlägt der RunInstances 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": "DenyTagResources", "Effect": "Deny", "Action": "ec2:CreateTags", "Resource": "*" } ] }
Warnung
NOTSUPPORTED— Beispiel: Erlaube die Erstellung einer Spot-Instance-Anfrage nur, wenn ihr ein bestimmtes Tag zugewiesen wurde
Die folgende Richtlinie wird für die spot-instances-request
-Ressource nicht unterstützt.
Die folgende Richtlinie soll nur dann RunInstances die Erlaubnis zum Erstellen einer Spot-Instance-Anfrage gewähren, wenn die Anfrage mit einem bestimmten Tag gekennzeichnet 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 den Tag (Markierung) environment=production
enthält. Wenn diese Bedingung auf andere Ressourcen angewendet wird, die von erstellt wurden RunInstances, führt die Angabe keiner Tags zu einem Unauthenticated
Fehler. Wenn jedoch keine Tags für die Spot-Instance-Anfrage angegeben sind, bewertet Amazon die spot-instances-request
Ressource in der RunInstances Abrechnung EC2 nicht, was dazu führt, dass Spot-Instance-Anfragen ohne Tags von RunInstances erstellt werden.
Beachten Sie, dass die Angabe eines anderen Tags als zu einem Unauthenticated
Fehler environment=production
führt, denn wenn ein Benutzer eine Spot-Instance-Anfrage taggt, EC2 bewertet Amazon die spot-instances-request
Ressource in der RunInstances Anweisung.
{
"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: Erstellen einer Spot-Instance-Anforderung verweigern, wenn ihr ein bestimmtes Tag (Markierung) zugewiesen ist
Die folgende Richtlinie verweigert RunInstances die Erlaubnis, eine Spot-Instance-Anfrage zu erstellen, wenn die Anfrage mit gekennzeichnet ist. environment=production
Die erste Anweisung ermöglicht RunInstances das Erstellen der aufgelisteten Ressourcen.
Die zweite Anweisung verweigert Benutzern die Berechtigung, eine Spot-Instance-Anforderung zu erstellen, wenn die Anforderung den Tag (Markierung) environment=production
enthält. Die Angabe von environment=production
als Tag führt zu einem Unauthenticated
-Fehler. Wenn Sie andere oder keine Tags (Markierungen) 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. Der Platzhalter „*“ ist auch in Fällen erforderlich, in denen 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. Es sind keine anderen Tags erlaubt und der Benutzer kann keine anderen Ressourcentypen markieren.
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "ec2:CreateTags" ], "Resource": "arn:aws:ec2:
region
:account-id
:instance/*", "Condition": { "StringEquals": { "aws:RequestTag/environment": "production" } } } ] }
Die Richtlinie unten ermöglicht es den Benutzern, jede markierbare Ressource, die bereits ein Tag mit dem owner
-Schlüssel und einen Benutzernamen als Wert aufweist, mit Tags zu versehen. Zudem müssen die Benutzer ein Tag (Markierung) mit dem anycompany:environment-type
-Schlüssel und dem Wert test
oder prod
in der Anforderung festlegen. Die Benutzer können zusätzliche Tags (Markierungen) in der Anforderung angeben.
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "ec2:CreateTags" ], "Resource": "arn:aws:ec2:
region
:account-id
:*/*", "Condition": { "StringEquals": { "aws:RequestTag/anycompany:environment-type": ["test","prod"], "aws:ResourceTag/owner": "${aws:username}" } } } ] }
Sie können eine IAM Richtlinie erstellen, die es Benutzern ermöglicht, 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 (Markierung) kann ein beliebiger Wert angegeben werden, aber der Tag (Markierung)-Schlüssel muss einem der genannten Schlüssel entsprechen.
Anmerkung
Wenn Sie eine Ressource löschen, werden alle der Ressource zugeordneten Tags (Markierungen) 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:
account-id
: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 Benutzernamen als Wert aufweist. 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-id
:*/*", "Condition": { "StringEquals": { "aws:RequestTag/environment": "prod", "aws:ResourceTag/owner": "${aws:username}" }, "ForAllValues:StringEquals": { "aws:TagKeys": ["environment"] } } } ] }
Beispiel: Arbeiten mit IAM-Rollen
Die folgende Richtlinie ermöglicht es Benutzern, Instanzen, die über das Tag department=test
verfügen, IAM Rollen zuzuweisen, zu ersetzen und zu trennen. Für das Ersetzen oder Trennen einer IAM Rolle ist eine Zuordnungs-ID erforderlich. Daher gewährt die Richtlinie Benutzern auch die Erlaubnis, die ec2:DescribeIamInstanceProfileAssociations
Aktion zu verwenden.
Die 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:us-east-1:
account-id
:instance/*", "Condition": { "StringEquals": { "aws:ResourceTag/department":"test" } } }, { "Effect": "Allow", "Action": "ec2:DescribeIamInstanceProfileAssociations", "Resource": "*" }, { "Effect": "Allow", "Action": "iam:PassRole", "Resource": "arn:aws:iam::account-id
:role/DevTeam*" } ] }
Die folgende Richtlinie ermöglicht es Benutzern, eine IAM Rolle für jede Instanz hinzuzufügen oder zu ersetzen. Benutzer können nur IAM Rollen anhängen oder ersetzen, deren Namen mit beginnenTestRole-
. Stellen Sie für die iam:PassRole
Aktion sicher, dass Sie den Namen der IAM Rolle und nicht das Instanzprofil angeben (falls die Namen unterschiedlich sind). 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-id
:role/TestRole-*" } ] }
Beispiel: Arbeiten mit Routing-Tabellen
Die folgende Richtlinie ermöglicht es Benutzern, Routen für Routing-Tabellen hinzuzufügen, zu entfernen und zu ersetzen, die VPC vpc-ec43eb89
nur mit verknüpft sind. Um a VPC für den ec2:Vpc
Bedingungsschlüssel anzugeben, müssen Sie den vollständigen Wert ARN von angebenVPC.
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "ec2:DeleteRoute", "ec2:CreateRoute", "ec2:ReplaceRoute" ], "Resource": [ "arn:aws:ec2:
region
:account-id
:route-table/*" ], "Condition": { "StringEquals": { "ec2:Vpc": "arn:aws:ec2:region
:account-id
:vpc/vpc-ec43eb89" } } } ] }
Beispiel: Erlauben Sie einer bestimmten Instanz, Ressourcen in anderen AWS Diensten anzuzeigen
Im Folgenden finden Sie ein Beispiel für eine Richtlinie, die Sie einer IAM Rolle zuordnen könnten. Die Richtlinie ermöglicht es einer Instanz, Ressourcen in verschiedenen AWS Diensten anzuzeigen. Sie verwendet den ec2:SourceInstanceARN
globalen Bedingungsschlüssel, um anzugeben, dass es sich bei der Instanz, von der aus die Anfrage gestellt wird, um eine Instanz handeln mussi-093452212644b0dd6
. Wenn dieselbe IAM Rolle einer anderen Instanz zugeordnet ist, kann die andere Instanz keine dieser Aktionen ausführen.
{ "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-id
: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-
). Benutzer können nicht mit anderen Startvorlagen arbeiten.09477bcd97b0d3abc
{ "Version": "2012-10-17", "Statement": [ { "Action": [ "ec2:CreateLaunchTemplateVersion", "ec2:ModifyLaunchTemplate" ], "Effect": "Allow", "Resource": "arn:aws:ec2:
region
:account-id
:launch-template/lt-09477bcd97b0d3abc
" } ] }
Die folgende Richtlinie erlaubt Benutzern, eine Startvorlage und Startvorlagenversion zu löschen, vorausgesetzt, dass die Startvorlage den Tag (Markierungen) Purpose
=Testing
aufweist.
{ "Version": "2012-10-17", "Statement": [ { "Action": [ "ec2:DeleteLaunchTemplate", "ec2:DeleteLaunchTemplateVersions" ], "Effect": "Allow", "Resource": "arn:aws:ec2:
region
:account-id
:launch-template/*", "Condition": { "StringEquals": { "aws:ResourceTag/Purpose": "Testing" } } } ] }
Arbeiten mit Instance-Metadaten
Die folgenden Richtlinien stellen sicher, dass Benutzer Instanz-Metadaten nur mithilfe des Instanz-Metadatendienstes Version 2 (IMDSv2) abrufen können. Sie können die folgenden vier Richtlinien zu einer Richtlinie mit vier Anweisungen zusammenfassen. Wenn sie als eine Richtlinie kombiniert werden, können Sie die Richtlinie als Dienststeuerungsrichtlinie verwenden (SCP). Sie kann genauso gut funktionieren wie eine Ablehnungsrichtlinie, die Sie auf eine bestehende IAM Richtlinie anwenden (Entzug und Einschränkung vorhandener Berechtigungen), oder als Richtlinie, SCP die global auf ein Konto, eine Organisationseinheit (OU) oder eine gesamte Organisation angewendet wird.
Anmerkung
Die folgenden Richtlinien für RunInstances Metadatenoptionen müssen in Verbindung mit einer Richtlinie verwendet werden, die dem Prinzipal Berechtigungen zum Starten einer Instance erteilt RunInstances. Wenn der Prinzipal nicht auch über RunInstances Berechtigungen verfügt, kann er keine Instance starten. Weitere Informationen finden Sie in den Richtlinien unter Arbeiten mit Instances und Instanzen starten (RunInstances).
Wichtig
Wenn Sie Auto Scaling Scaling-Gruppen verwenden und die Verwendung von für alle neuen Instances IMDSv2 vorschreiben müssen, müssen Ihre Auto Scaling Scaling-Gruppen Startvorlagen verwenden.
Wenn eine Auto Scaling Scaling-Gruppe eine Startvorlage verwendet, werden die ec2:RunInstances
Berechtigungen des IAM Prinzipals überprüft, wenn eine neue Auto Scaling Scaling-Gruppe erstellt wird. 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 bei der Verwendung von IMDSv1 on IAM Principals for RunInstances
werden nur überprüft, wenn eine Auto Scaling Scaling-Gruppe, die eine Startvorlage verwendet, erstellt oder aktualisiert wird. 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 On-Instances IMDSv2 zu erzwingen, die von Auto Scaling Scaling-Gruppen gestartet wurden, sind die folgenden zusätzlichen Schritte erforderlich:
-
Deaktivieren Sie die Verwendung von Startkonfigurationen für alle Konten in Ihrer Organisation, indem Sie entweder Dienststeuerungsrichtlinien (SCPs) oder IAM Berechtigungsgrenzen für neu erstellte Prinzipale verwenden. Aktualisieren Sie für bestehende IAM Principals mit Auto Scaling Scaling-Gruppenberechtigungen die zugehörigen Richtlinien mit diesem Bedingungsschlüssel. Um die Verwendung von Startkonfigurationen zu deaktivieren, erstellen oder ändern Sie die entsprechende SCP Berechtigungsgrenze oder IAM Richtlinie mit dem
"autoscaling:LaunchConfigurationName"
Bedingungsschlüssel mit dem angegebenen Wert alsnull
. -
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 LaunchTemplateSpecificationin der Amazon EC2 Auto Scaling API Scaling-Referenz, insbesondere unter demVersion
Parameter. -
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 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 update-auto-scaling-group in der AWS CLI Befehlsreferenz.
Beispiele
Erzwingen der Verwendung von IMDSv2
Die folgende Richtlinie legt fest, dass Sie die RunInstances API nur aufrufen können, wenn für die Instanz auch die Verwendung von aktiviert wurde IMDSv2 (angegeben durch"ec2:MetadataHttpTokens": "required"
). Wenn Sie nicht angeben, dass die Instanz dies erfordertIMDSv2, erhalten Sie beim Aufrufen von eine UnauthorizedOperation
Fehlermeldung RunInstances API.
{ "Version": "2012-10-17", "Statement": [ { "Sid": "RequireImdsV2", "Effect": "Deny", "Action": "ec2:RunInstances", "Resource": "arn:aws:ec2:*:*:instance/*", "Condition": { "StringNotEquals": { "ec2:MetadataHttpTokens": "required" } } } ] }
Abmeldung verweigern von IMDSv2
Die folgende Richtlinie legt fest, dass Sie die Option IMDSv1 oder nicht aufrufen ModifyInstanceMetadataOptions
API und gleichzeitig zulassen dürfenIMDSv2. Wenn Sie das aufrufen ModifyInstanceMetadataOptions
API, muss das HttpTokens
Attribut auf gesetzt seinrequired
.
{ "Version": "2012-10-17", "Statement": [{ "Sid": "DenyIMDSv1HttpTokensModification", "Effect": "Deny", "Action": "ec2:ModifyInstanceMetadataOptions", "Resource": "arn:aws:ec2:*:*:instance/*", "Condition": { "StringNotEquals": { "ec2:Attribute/HttpTokens": "required" }, "Null": { "ec2:Attribute/HttpTokens": false } } }] }
Angeben des maximalen Hop-Limits
Die folgende Richtlinie legt fest, dass Sie das RunInstances API nur aufrufen können, wenn Sie auch ein Hop-Limit angeben. Das Hop-Limit darf nicht mehr als 3 betragen. Wenn Sie das nicht tun, erhalten Sie eine UnauthorizedOperation
Fehlermeldung, wenn Sie den aufrufen RunInstances API.
{ "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
Die folgende Richtlinie erlaubt es nur Benutzern mit der ec2-imds-admins
-Rolle, Änderungen an den Optionen für die Instance-Metadaten vorzunehmen. Wenn ein anderer Principal als die ec2-imds-admins
Rolle versucht ModifyInstanceMetadataOptions API, das aufzurufen, wird eine UnauthorizedOperation
Fehlermeldung angezeigt. Diese Anweisung könnte verwendet werden, um die Verwendung von zu steuern ModifyInstanceMetadataOptions API; derzeit gibt es keine detaillierten Zugriffskontrollen (Bedingungen) für. ModifyInstanceMetadataOptions API
{ "Version": "2012-10-17", "Statement": [ { "Sid": "AllowOnlyImdsAdminsToModifySettings", "Effect": "Deny", "Action": "ec2:ModifyInstanceMetadataOptions", "Resource": "*", "Condition": { "StringNotLike": { "aws:PrincipalARN": "arn:aws:iam::*:role/ec2-imds-admins" } } } ] }
Erfordert das Abrufen von Rollenanmeldedaten IMDSv2
Die folgende Richtlinie legt fest, dass, wenn diese Richtlinie auf eine Rolle angewendet wird und die Rolle vom EC2 Dienst übernommen wird und die resultierenden Anmeldeinformationen zum Signieren einer Anfrage verwendet werden, die Anfrage mit den EC2 Rollenanmeldeinformationen signiert werden muss, von der abgerufen wurdeIMDSv2. Andernfalls wird bei allen API Aufrufen eine UnauthorizedOperation
Fehlermeldung angezeigt. Diese Anweisung/Richtlinie kann allgemein angewendet werden, denn wenn die Anfrage nicht mit EC2 Rollenanmeldedaten signiert ist, hat sie keine Wirkung.
{ "Version": "2012-10-17", "Statement": [ { "Sid": "RequireAllEc2RolesToUseV2", "Effect": "Deny", "Action": "*", "Resource": "*", "Condition": { "NumericLessThan": { "ec2:RoleDelivery": "2.0" } } } ] }
Arbeiten Sie mit EBS Amazon-Volumes und -Snapshots
Beispielrichtlinien für die Arbeit mit EBS Amazon-Volumes und -Snapshots finden Sie unter Beispiele für identitätsbasierte Richtlinien für Amazon. EBS