Richtlinienstruktur - Amazon Elastic Compute Cloud

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.

Richtlinienstruktur

In den folgenden Themen wird die Struktur einer IAM-Richtlinie erläutert.

Richtliniensyntax

Eine IAM-Richtlinie ist ein JSON-Dokument, das eine oder mehrere Anweisungen enthält. Jede Anweisung ist folgendermaßen strukturiert.

{ "Statement":[{ "Effect":"effect", "Action":"action", "Resource":"arn", "Condition":{ "condition":{ "key":"value" } } } ] }

Eine Anweisung kann aus verschiedenen Elementen bestehen:

  • Effect: Der effect-Wert kann Allow oder Deny lauten. -Benutzer verfügen standardmäßig nicht über die Berechtigung zur Verwendung von Ressourcen und API-Aktionen. Daher werden alle Anfragen abgelehnt. Dieser Standardwert kann durch eine explizite Zugriffserlaubnis überschrieben werden. Eine explizite Zugriffsverweigerung überschreibt jedwede Zugriffserlaubnis.

  • Action: Mit action wird die API-Aktion spezifiziert, für die Sie Berechtigungen erteilen oder verweigern. Weitere Informationen zur Spezifizierung von action finden Sie unter Aktionen für Amazon EC2.

  • Resource: Die von einer Aktion betroffene Ressource. Bei einigen Amazon EC2-API-Aktionen lassen sich bestimmte Ressourcen, die mit der Aktion erstellt oder geändert werden können, in die Richtlinie einbinden. Sie legen eine Ressource unter Verwendung eines Amazon-Ressourcennamens (ARN) oder eines Platzhalters (*) fest, um anzugeben, dass die Anweisung für alle Ressourcen gilt. Weitere Informationen finden Sie unter Unterstützte Berechtigungen auf Ressourcenebene für Amazon EC2-API-Aktionen.

  • Condition: Bedingungen sind optional. Mit ihrer Hilfe können Sie bestimmen, wann Ihre Richtlinie wirksam ist. Weitere Informationen zur Angabe von Bedingungen für Amazon EC2 finden Sie unter Bedingungsschlüssel für Amazon EC2.

Weitere Informationen zu Richtlinienanforderungen finden Sie in der IAM-JSON-Richtlinienreferenz im IAM-Benutzerhandbuch. Beispiele mit IAM-Richtlinienanweisungen für Amazon EC2 finden Sie unter Beispielrichtlinien für die Arbeit mit dem AWS CLI oder einem AWS SDK.

Aktionen für Amazon EC2

In einer IAM-Richtlinienanweisung können Sie jede API-Aktion von jedem Service, der IAM unterstützt, angeben. Bei Amazon EC2 setzen Sie folgendes Präfix vor den Namen der API-Aktion: ec2:. Zum Beispiel ec2:RunInstances und ec2:CreateImage.

Um mehrere Aktionen in einer einzigen Anweisung anzugeben, trennen Sie sie folgendermaßen mit Kommas:

"Action": ["ec2:action1", "ec2:action2"]

Sie können auch mehrere Aktionen mittels Platzhaltern angeben. Beispielsweise können Sie alle Aktionen festlegen, deren Name mit dem Wort "Describe" beginnt:

"Action": "ec2:Describe*"
Anmerkung

Derzeit unterstützen die Amazon-EC2-Describe*-API-Aktionen Berechtigungen auf Ressourcenebene nicht. Weitere Informationen zu Berechtigungen auf Ressourcenebene für Amazon EC2 finden Sie unter IAM-Richtlinien für Amazon EC2.

Um alle Amazon EC2-API-Aktionen anzugeben, verwenden Sie den Platzhalter * folgendermaßen:

"Action": "ec2:*"

Eine Liste von Amazon-EC2-Aktionen finden Sie unter von Amazon EC2 definierte Aktionen in der Service-Autorisierungs-Referenz.

Unterstützte Berechtigungen auf Ressourcenebene für Amazon EC2-API-Aktionen

Berechtigungen auf Ressourcenebene bedeutet, dass Sie angeben können, für welche Ressourcen die Benutzer Aktionen ausführen dürfen. Amazon EC2 unterstützt teilweise Berechtigungen auf Ressourcenebene. Das heißt, Sie können bei bestimmten Amazon EC2-Aktionen kontrollieren, wann die Benutzer diese Aktionen verwenden dürfen. Dies basiert auf Bedingungen, die erfüllt sein müssen oder auf bestimmten Ressourcen, die von den Benutzern verwendet werden dürfen. Zum Beispiel können Sie Benutzern die Berechtigungen erteilen, Instances zu starten, aber nur für einen bestimmten Typ und nur mithilfe eines bestimmten AMI.

Um eine Ressource in einer IAM-Richtlinienanweisung anzugeben, verwenden Sie deren Amazon-Ressourcennamen (ARN). Mehr Informationen zur Angabe des ARN-Werts erhalten Sie unter Amazon-Ressourcennamen (ARNs) für Amazon EC2. Wenn eine API-Aktion einzelne ARNs nicht unterstützt, müssen Sie einen Platzhalter (*) verwenden, um anzugeben, dass alle Ressourcen von der Aktion betroffen sein können.

Tabellen, die identifizieren, welche Amazon EC2-API-Aktionen Berechtigungen auf Ressourcenebene unterstützen, und die ARNs und Bedingungsschlüssel, die Sie in einer Richtlinie verwenden können, finden Sie unter Aktionen, Ressourcen und Bedingungsschlüssel für Amazon EC2.

Beachten Sie, dass Sie Tag (Markierungen)-basierte Berechtigungen auf Ressourcenebene in den IAM-Richtlinien anwenden können, die Sie für Amazon EC2-API-Aktionen verwenden. Dies ermöglicht Ihnen eine bessere Kontrolle darüber, welche Ressourcen ein Benutzer erstellen, ändern oder verwenden kann. Weitere Informationen finden Sie unter Erteilen der Berechtigung zum Markieren von Ressourcen während der Erstellung.

Amazon-Ressourcennamen (ARNs) für Amazon EC2

Jede IAM-Richtlinienanweisung gilt für die Ressourcen, die Sie mithilfe ihrer ARNs angegeben haben.

Ein ARN weist die folgende generelle Syntax auf:

arn:aws:[service]:[region]:[account-id]:resourceType/resourcePath
Service nicht zulässig

Der Service (z. B. ec2)

Region

Die Region für die Ressource (z. B. us-east-1)

account-id

Die AWS Konto-ID ohne Bindestriche (z. B.123456789012).

RessourcenTyp

Der Typ der Ressource (z. B. instance)

resourcePath

Ein Pfad zur Identifizierung der Ressource. Sie können in den Pfaden das Platzhalterzeichen Sternchen (*) verwenden.

Verwenden Sie beispielsweise den ARN wie folgt, um eine bestimmte Instance (i-1234567890abcdef0) in der Anweisung anzugeben.

"Resource": "arn:aws:ec2:us-east-1:123456789012:instance/i-1234567890abcdef0"

Sie können auch alle Instances angeben, die zu einem bestimmten Konto gehören, indem Sie das Platzhalterzeichen (*) folgendermaßen hinzufügen.

"Resource": "arn:aws:ec2:us-east-1:123456789012:instance/*"

Sie können auch alle Amazon EC2-Ressourcen angeben, die zu einem bestimmten Konto gehören, indem Sie das Platzhalterzeichen (*) folgendermaßen hinzufügen.

"Resource": "arn:aws:ec2:us-east-1:123456789012:*"

Wenn Sie alle Ressourcen angeben möchten oder wenn eine bestimmte API-Aktion keine ARNs unterstützt, verwenden Sie das Platzhalterzeichen Sternchen (*) wie folgt im Resource-Element.

"Resource": "*"

Viele Amazon EC2-API-Aktionen umfassen mehrere Ressourcen. Beispielsweise fügt AttachVolume ein Amazon-EBS-Volume an eine Instance an, sodass ein Benutzer über Berechtigungen zum Verwenden des Volumes und der Instance verfügen muss. Um mehrere Ressourcen in nur einer Anweisung anzugeben, trennen Sie die ARNs wie folgt mit Kommas.

"Resource": ["arn1", "arn2"]

Eine Liste der ARNs für Amazon EC2-Ressourcen finden Sie unter Von Amazon EC2 definierte Ressourcentypen.

Bedingungsschlüssel für Amazon EC2

In einer Richtlinienanweisung können Sie optional Bedingungen angeben, mit denen gesteuert wird, wann die Richtlinie in Kraft tritt. Jede Bedingung enthält ein oder mehrere Schlüssel-Wert-Paare. Bei Bedingungsschlüsseln muss die Groß- und Kleinschreibung nicht beachtet werden. Wir haben AWS globale Bedingungsschlüssel sowie zusätzliche dienstspezifische Bedingungsschlüssel definiert.

Eine Liste der dienstspezifischen Bedingungsschlüssel für Amazon EC2 finden Sie unter Bedingungsschlüssel für Amazon EC2. Amazon EC2 implementiert auch die AWS globalen Bedingungsschlüssel. Für weitere Informationen vgl. In allen Anforderungen verfügbare Informationen im IAM-Benutzerhandbuch.

Verwenden Sie die Condition-Anweisung, um einen Bedingungsschlüssel in Ihrer IAM-Richtlinie zu verwenden. Die folgende Richtlinie gewährt Benutzern beispielsweise die Berechtigung, eingehende und ausgehende Regeln für jede Sicherheitsgruppe hinzuzufügen und zu entfernen. Der ec2:Vpc-Bedingungsschlüssel wird verwendet, um anzugeben, dass diese Aktionen nur für Sicherheitsgruppen in einer bestimmten VPC ausgeführt werden können.

{ "Version": "2012-10-17", "Statement":[{ "Effect":"Allow", "Action": [ "ec2:AuthorizeSecurityGroupIngress", "ec2:AuthorizeSecurityGroupEgress", "ec2:RevokeSecurityGroupIngress", "ec2:RevokeSecurityGroupEgress"], "Resource": "arn:aws:ec2:region:account:security-group/*", "Condition": { "StringEquals": { "ec2:Vpc": "arn:aws:ec2:region:account:vpc/vpc-11223344556677889" } } } ] }

Wenn Sie mehrere Bedingungen oder mehrere Schlüssel in einer einzelnen Bedingung angeben, werden diese mit einer logischen UND-Operation ausgewertet. Wenn Sie eine einzelne Bedingung mit mehreren Werten für einen Schlüssel angeben, wird die Bedingung mit einer logischen ODER-Operation ausgewertet. Damit die Berechtigungen erteilt werden, müssen alle Bedingungen erfüllt sein.

Bei der Angabe von Bedingungen können Sie auch Platzhalter verwenden. Weitere Informationen finden Sie unter IAM-Richtlinienelemente: Variablen und Tags (Markierungen) im IAM-Benutzerhandbuch.

Wichtig

Einige API-Aktionen verwenden mehrere Ressourcen. Viele Bedingungsschlüssel sind jedoch ressourcenspezifisch. Wenn Sie eine Richtlinie mit einem Bedingungsschlüssel schreiben, legen Sie über das Resource-Element der Anweisung fest, für welche Ressource der Bedingungsschlüssel gültig ist. Andernfalls verhindert die Richtlinie möglicherweise, dass Benutzer die Aktion überhaupt ausführen, da die Bedingungsprüfung für die Ressourcen fehlschlägt, auf die der Bedingungsschlüssel nicht zutrifft. Wenn Sie keine Ressource angeben möchten oder über das Action-Element Ihrer Richtlinie mehrere API-Aktionen hinzugefügt haben, müssen Sie mit dem ...IfExists-Bedingungstyp sicherstellen, dass der Bedingungsschlüssel für die Ressourcen, die ihn nicht verwenden, ignoriert wird. Weitere Informationen finden Sie unter... IfExists Bedingungen im IAM-Benutzerhandbuch.

Alle Amazon EC2-Aktionen unterstützen die Bedingungsschlüssel aws:RequestedRegion und ec2:Region. Weitere Informationen finden Sie unter Beispiel: Beschränken des Zugriffs auf eine bestimmte Region.

ec2:SourceInstanceARN-Bedingungsschlüssel

Der ec2:SourceInstanceARN-Bedingungsschlüssel kann für Bedingungen verwendet werden, die den ARN der Instance angeben, von der aus eine Anfrage getätigt wird. Dies ist ein AWS globaler Bedingungsschlüssel und nicht dienstspezifisch. Für Beispiele für Richtlinien vgl. Amazon EC2: Volumes an EC2-Instances anfügen oder trennen und Beispiel: Erlauben Sie einer bestimmten Instanz, Ressourcen in anderen AWS Diensten anzuzeigen. Der ec2:SourceInstanceARN-Schlüssel kann nicht als Variable zur Angabe des ARN für das Resource-Element in einer Anweisung verwendet werden.

Beispiele mit Richtlinienanweisungen für Amazon EC2 finden Sie unter Beispielrichtlinien für die Arbeit mit dem AWS CLI oder einem AWS SDK.

ec2:Attribute-Bedingungsschlüssel

Der ec2:Attribute-Bedingungsschlüssel kann für Bedingungen verwendet werden, die den Zugriff nach einem Attribut einer Ressource filtern. Der Bedingungsschlüssel unterstützt nur Eigenschaften eines primitiven Datentyps (z. B. eine Zeichenfolge oder Ganzzahl) oder komplexe AttributeValueObjekte, die nur eine Value-Eigenschaft haben (wie die Beschreibung oder ImdsSupportObjekte der ModifyImageAttributeAPI-Aktion).

Wichtig

Der Bedingungsschlüssel kann nicht für komplexe Objekte verwendet werden, die mehrere Eigenschaften haben, wie z. B. das LaunchPermissionObjekt der ModifyImageAttributeAPI-Aktion.

Die folgende Richtlinie verwendet beispielsweise den ec2:Attribute/Description Bedingungsschlüssel, um den Zugriff nach dem komplexen Description-Objekt der ModifyImageAttributeAPI-Aktion zu filtern. Der Bedingungsschlüssel lässt nur Anforderungen zu, die die Beschreibung eines Images entweder in Production oder Development ändern.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "ec2:ModifyImageAttribute", "Resource": "arn:aws:ec2:us-east-1::image/ami-*", "Condition": { "StringEquals": { "ec2:Attribute/Description": [ "Production", "Development" ] } } } ] }

Die folgende Beispielrichtlinie verwendet den ec2:Attribute Bedingungsschlüssel, um den Zugriff nach der primitiven Attributeigenschaft der ModifyImageAttributeAPI-Aktion zu filtern. Der Bedingungsschlüssel lehnt alle Anforderungen ab, die versuchen, die Beschreibung eines Images zu ändern.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Deny", "Action": "ec2:ModifyImageAttribute", "Resource": "arn:aws:ec2:us-east-1::image/ami-*", "Condition": { "StringEquals": { "ec2:Attribute": "Description" } } } ] }

ec2:ResourceID-Bedingungsschlüssel

Wenn Sie die folgenden ec2:ResourceID-Bedingungsschlüssel mit den angegebenen API-Aktionen verwenden, wird der Bedingungsschlüsselwert verwendet, um die resultierende Ressource anzugeben, die von der API-Aktion erstellt wird. ec2:ResourceID-Bedingungsschlüssel können nicht zum Angeben einer Quellressource verwendet werden, die in der API-Anfrage angegeben ist. Wenn Sie einen der folgenden ec2:ResourceID-Bedingungsschlüssel mit einer angegebenen API verwenden, müssen Sie immer den Platzhalter (*) angeben. Wenn Sie einen anderen Wert angeben, wird die Bedingung zur Laufzeit immer in * aufgelöst. Um beispielsweise den ec2:ImageId Bedingungsschlüssel mit der CopyImageAPI zu verwenden, müssen Sie den Bedingungsschlüssel wie folgt angeben:

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "ec2:CopyImage", "Resource": "arn:aws:ec2:us-east-1::image/ami-*", "Condition": { "StringEquals": { ec2:ImageID": "*" } } } ] }
Bedingungsschlüssel API-Aktion
ec2:DhcpOptionsID
  • CreateDhcpOptions

ec2:ImageID
  • CopyImage

  • CreateImage

  • ImportImage

  • RegisterImage

ec2:InstanceID
  • RunInstances

  • ImportInstance

ec2:InternetGatewayID
  • CreateInternetGateway

ec2:NetworkAclID
  • CreateNetworkAcl

ec2:NetworkInterfaceID
  • CreateNetworkInterface

ec2:PlacementGroupName
  • CreatePlacementGroup

ec2:RouteTableID
  • CreateRouteTable

ec2:SecurityGroupID
  • CreateSecurityGroup

ec2:SnapshotID
  • CopySnapshot

  • CreateSnapshot

  • CreateSnapshots

  • ImportSnapshots

ec2:SubnetID
  • CreateSubnet

ec2:VolumeID
  • CreateVolume

  • ImportVolume

ec2:VpcID
  • CreateVpc

ec2:VpcPeeringConnectionID
  • CreateVpcPeeringConnection

Es wird empfohlen, die Verwendung von ec2:ResourceID-Bedingungsschlüsseln bei diesen API-Aktionen zu vermeiden. Wenn Sie den Zugriff stattdessen basierend auf bestimmten Ressourcen-IDs filtern müssen, wird empfohlen, dies mithilfe des Resource-Richtlinienelements wie folgt zu tun:

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "ec2:CopyImage", "Resource": "arn:aws:ec2:us-east-1::image/ami-01234567890abcdef" } ] }

Prüfen, ob Benutzer über die erforderlichen Berechtigungen verfügen

Nach der Erstellung einer IAM-Richtlinie sollten Sie zunächst überprüfen, ob damit den Benutzern die benötigten Berechtigungen zur Verwendung bestimmter API-Aktionen und Ressourcen erteilt werden. Anschließend können Sie die Richtlinie anwenden.

Erstellen Sie zunächst einen Benutzer zu Testzwecken und fügen Sie dann die von Ihnen erstellte IAM-Richtlinie dem Testbenutzer an. Anschließend initiieren Sie mit dem Testbenutzer eine Anforderung.

Wenn durch die getestete Amazon-EC2-Aktion eine Ressource erstellt oder geändert wird, sollten Sie die Anforderung mit dem Parameter DryRun (oder über den AWS CLI -Befehl mit der Option --dry-run) ausführen. In diesem Fall schließt der Aufruf zwar die Autorisierungsprüfung, aber nicht die Operation ab. Beispielsweise können Sie prüfen, ob ein Benutzer eine bestimmte Instance beenden kann, ohne sie tatsächlich abzuschließen. Sofern der Testbenutzer über die erforderlichen Berechtigungen verfügt, gibt die Anforderung DryRunOperation zurück. Andernfalls wird UnauthorizedOperation zurückgegeben.

Falls die Richtlinie dem Benutzer nicht die erwarteten Berechtigungen erteilt oder zu viele Berechtigungen gewährt, können Sie die Richtlinie entsprechend anpassen und erneut testen, bis Sie die gewünschten Ergebnisse erhalten.

Wichtig

Es kann einige Minuten dauern, bis Richtlinienänderungen wirksam werden. Daher wird empfohlen, fünf Minuten verstreichen zu lassen, bevor Sie die aktualisierte Richtlinie testen.

Bei einer fehlgeschlagenen Autorisierungsprüfung gibt die Anforderung eine codierte Nachricht mit Diagnoseinformationen zurück. Sie können die Nachricht mit der Aktion DecodeAuthorizationMessage decodieren. Weitere Informationen finden Sie DecodeAuthorizationMessagein der AWS Security Token Service API-Referenz und decode-authorization-messagein der AWS CLI Befehlsreferenz.