Richtlinienstruktur - Amazon Elastic Compute Cloud

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. IAM-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 Beispiel-IAM-Richtlinienanweisungen für Amazon EC2 erhalten Sie unter Beispielrichtlinien für das Arbeiten mit der 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*"

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 (Markierung)-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]:resourceType/resourcePath
Service nicht zulässig

Der Service (z. , ec2).

region

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

Konto

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

resourceType

Der Typ der Ressource (z. , 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. Zum Beispiel wird mit AttachVolume einer Instance ein Amazon EBS-Volume angefügt, sodass der IAM-Benutzer über Berechtigungen zur Verwendung 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-weite Bedingungsschlüssel sowie zusätzliche servicespezifische 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-weiten Bedingungsschlüssel. Weitere Informationen finden Sie unter 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. Sie können z. B. einem IAM-Benutzer die Berechtigung zum Verwenden von Ressourcen durch ein Tag (Markierung) erteilen, das den entsprechenden IAM-Benutzernamen angibt. 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 zur Verwendung von ...IfExists-Bedingungen finden Sie 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.

Der ec2:SourceInstanceARN-Schlüssel kann für Bedingungen verwendet werden, die den ARN der Instance angeben, von der aus eine Anfrage getätigt wird. Dieser Bedingungsschlüssel ist AWS-weit verfügbar und nicht servicespezifisch. Beispiele für Richtlinien finden Sie unter Amazon EC2: Anfügen oder Trennen von Volumes an eine EC2-Instance und Beispiel: Zulassen, dass eine bestimmte Instance Ressourcen in anderen AWS-Services anzeigt. 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 das Arbeiten mit der AWS CLI oder einem AWS SDK.

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.

Legen Sie zuerst zu Testzwecken einen IAM-Benutzer an und ordnen Sie diesem Testbenutzer dann die erstellte IAM-Richtlinie zu. 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 unter DecodeAuthorizationMessage in der AWS Security Token Service-API-Referenz und unter decode-authorization-message in der AWS CLI-Befehlsreferenz.