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.
Grammatik der IAM-JSON-Richtliniensprache
Auf dieser Seite wird eine formelle Grammatik der Sprache vorgestellt, die zum Erstellen von JSON-Richtlinien in IAM verwendet wird. Sie müssen diese Grammatik beherrschen, um Richtlinien erstellen und validieren zu können.
Beispielrichtlinien finden Sie in den folgenden Themen:
-
Richtlinien und Berechtigungen in AWS Identity and Access Management
-
Beispielrichtlinien für die Arbeit in der Amazon-EC2-Konsole und Beispielrichtlinien für die Arbeit mit der AWS-CLI, der Amazon EC2 CLI oder einem AWS-SDK im Amazon-EC2-Benutzerhandbuch.
-
Beispiele für Bucket-Richtlinien und Nutzer-Richtlinien finden Sie im Benutzerhandbuch für Amazon Simple Storage Service.
Beispielrichtlinien für andere AWS-Services können Sie der Dokumentation des jeweiligen Services entnehmen.
Themen
Die Richtliniensprache und JSON
Richtlinien werden in JSON ausgedrückt. Wenn Sie eine JSON-Richtlinie erstellen oder bearbeiten, kann IAM eine Richtlinienvalidierung durchführen, um Ihnen beim Erstellen einer effektiven Richtlinie zu helfen. IAM identifiziert JSON-Syntaxfehler, während IAM Access Analyzer zusätzliche Richtlinienüberprüfungen mit Empfehlungen zur weiteren Verfeinerung Ihrer Richtlinien bietet. Weitere Informationen zur Richtlinienvalidierung finden Sie unter IAM-Richtlinien-Validierung. Weitere Informationen zu IAM Access Analyzer Richtlinienvalidierungen und umsetzbaren Empfehlungen finden Sie unter IAM Access Analyzer-Richtlinienvalidierung.
Dieses Dokument enthält keine umfassende Beschreibung gültiger JSON. Nachfolgend finden Sie jedoch einige grundlegende JSON-Regeln:
-
Leerzeichen zwischen einzelnen Einheiten sind zulässig.
-
Werte müssen in Anführungszeichen stehen. Anführungszeichen sind für nummerische und boolesche Werte optional.
-
Viele Elemente wie z. B.
action_string_list
undresource_string_list
können ein JSON-Array als Wert enthalten. Arrays können einen oder mehrere Werte enthalten. Wenn ein Array mehrere Werte enthält, steht es in eckigen Klammern ([
und]
), die einzelnen Werte sind durch Komma voneinander getrennt. Beispiel:"Action" : ["ec2:Describe*","ec2:List*"]
-
Die grundlegenden JSON-Datentypen (Boolescher Wert, Zahl und Zeichenfolge) sind in RFC 7159
definiert.
In dieser Grammatik verwendete Konventionen
In dieser Grammatik werden folgende Konventionen verwendet:
-
Die folgenden Zeichen sind JSON-Token und sind in Richtlinien enthalten:
{ } [ ] " , :
-
Die folgenden Zeichen sind Sonderzeichen in der Grammatik und sind nicht in Richtlinien enthalten:
= < > ( ) |
-
Wenn für ein Element mehrere Werte zulässig sind, wird dies durch wiederholte Werte, ein Komma als Trennzeichen und eine Ellipse (
...
) dargestellt. Beispiele:[<action_string>, <action_string>, ...]
<principal_map> = { <principal_map_entry>, <principal_map_entry>, ... }
Wenn mehrere Werte zulässig sind, ist es auch zulässig, nur einen Wert anzugeben. Wenn nur ein Wert angegeben wird, muss das anschließende Komma weggelassen werden. Wenn ein Element ein Array (durch [ und ] gekennzeichnet) enthalten kann, das jedoch nur einen Wert enthält, können die Klammern weggelassen werden. Beispiele:
"Action": [<action_string>]
"Action": <action_string>
-
Ein Fragezeichen (
?
) nach einem Element gibt an, dass das Element optional ist. Beispiel:<
version_block?>
Weitere Informationen zu optionalen Elementen können Sie den Hinweisen nach jedem Grammatikelement entnehmen.
-
Eine vertikale Linie (
|
) zwischen Elemente gibt Alternativen an. Runde Klammern geben den Umfang der Alternativen an. Beispiel:("Principal" | "NotPrincipal")
-
Elemente, bei denen es sich um Zeichenfolgen handelt, müssen von doppelten Anführungszeichen (
"
) umschlossen sein. Beispiel:<version_block> = "Version" : ("2008-10-17" | "2012-10-17")
Weitere Hinweise finden Sie unter Hinweise zur Richtliniengrammatik in der Grammatikauflistung.
Grammatik
Die folgende Liste beschreibt die Grammatik der Richtliniensprache. Die in der Liste verwendeten Konventionen wurden im vorherigen Abschnitt beschrieben. Zusätzliche Informationen finden Sie in den nachfolgenden Hinweisen.
Anmerkung
Diese Grammatik beschreibt Richtlinien der Versionen 2008-10-17
und 2012-10-17
. Das Richtlinienelement Version
unterscheidet sich von einer Richtlinienversion. Das Richtlinienelement Version
wird innerhalb einer Richtlinie verwendet und gibt die Version der Richtliniensprache an. Andererseits wird eine Richtlinienversion erstellt, wenn Sie in IAM eine benutzerdefinierte, verwaltete Richtlinie bearbeiten. Die vorhandene Richtlinie wird von der geänderten Richtlinie nicht überschrieben. IAM erstellt stattdessen eine neue Version der verwalteten Richtlinie. Weitere Informationen zum Richtlinienelement Version
finden Sie unter IAM-JSON-Richtlinienelemente: Version. Weitere Informationen zu den Richtlinienversionen finden Sie unter Versioning von IAM-Richtlinien.
policy = {
<version_block?>
<id_block?>
<statement_block>
}
<version_block> = "Version" : ("2008-10-17" | "2012-10-17")
<id_block> = "Id" : <policy_id_string>
<statement_block> = "Statement" : [ <statement>, <statement>, ... ]
<statement> = {
<sid_block?>,
<principal_block?>,
<effect_block>,
<action_block>,
<resource_block>,
<condition_block?>
}
<sid_block> = "Sid" : <sid_string>
<effect_block> = "Effect" : ("Allow" | "Deny")
<principal_block> = ("Principal" | "NotPrincipal") : ("*" | <principal_map>)
<principal_map> = { <principal_map_entry>, <principal_map_entry>, ... }
<principal_map_entry> = ("AWS" | "Federated" | "Service" | "CanonicalUser") :
[<principal_id_string>, <principal_id_string>, ...]
<action_block> = ("Action" | "NotAction") :
("*" | [<action_string>, <action_string>, ...])
<resource_block> = ("Resource" | "NotResource") :
: ("*" | <resource_string> | [<resource_string>, <resource_string>, ...])
<condition_block> = "Condition" : { <condition_map> }
<condition_map> = {
<condition_type_string> : { <condition_key_string> : <condition_value_list> },
<condition_type_string> : { <condition_key_string> : <condition_value_list> }, ...
}
<condition_value_list> = [<condition_value>, <condition_value>, ...]
<condition_value> = (<condition_value_string> | <condition_value_string> | <condition_value_string>)
Hinweise zur Richtliniengrammatik
-
Eine einzelne Richtlinie kann eine Reihe von Anweisungen enthalten.
-
Die maximale Größe für Richtlinien beträgt je nach der Entität, der die Richtlinie zugeordnet ist, zwischen 2.048 und 10.240 Zeichen. Weitere Informationen finden Sie unter IAMund AWS STS Kontingente. Bei der Berechnung der Richtliniengröße werden Leerzeichen nicht mitgezählt.
-
Einzelne Elemente dürfen nicht mehrere Instances desselben Schlüssels enthalten. Sie können beispielsweise den Block
Effect
nicht zweimal innerhalb derselben Anweisung verwenden. -
Blöcke können in beliebiger Reihenfolge angegeben werden.
version_block
kann beispielsweise in einer Richtlinie vonid_block
gefolgt werden. Ebenso können die Blöckeeffect_block
,principal_block
undaction_block
in einer Anweisung in beliebiger Reihenfolge angegeben werden. -
Der Block
id_block
ist in ressourcenbasierten Richtlinien optional. Er darf nicht in identitätsbasierten Richtlinien enthalten sein. -
Das Element
principal_block
muss in ressourcenbasierten Richtlinien (z. B. in Amazon S3-Bucket-Richtlinien) sowie in Vertrauensrichtlinien für IAM-Rollen enthalten sein. Er darf nicht in identitätsbasierten Richtlinien enthalten sein. -
Das
principal_map
-Element in Amazon S3-Bucket-Richtlinien kann dieCanonicalUser
-ID enthalten. Der Großtteil der ressourcenbasierten Richtlinien unterstützt dieses Mapping nicht. Weitere Informationen zur Verwendung der kanonischen Benutzer-ID in einer Bucket-Richtlinie finden Sie unter Angeben eines Auftraggebers in einer Richtlinie im Benutzerhandbuch für Amazon Simple Storage Service. -
Für Zeichenfolgewerte (
policy_id_string
,sid_string
,principal_id_string
,action_string
,resource_string
,condition_type_string
,condition_key_string
sowie die Zeichenfolgenversion incondition_value
) kann es jeweils eigene Mindest- und Höchstlängen, bestimmte zulässige Werte oder ein erforderliches internes Format geben.
Hinweise zu Zeichenfolgewerten
In diesem Abschnitt werden Zeichenfolgewerte, die in verschiedenen Elementen von Richtlinien verwendet werden, detailliert beschrieben.
action_string
-
Besteht aus einem Service-Namespace, einem Doppelpunkt und dem Namen einer Aktion. Aktionsnamen können Platzhalterzeichen enthalten. Beispiele:
"Action":"ec2:StartInstances" "Action":[ "ec2:StartInstances", "ec2:StopInstances" ] "Action":"cloudformation:*" "Action":"*" "Action":[ "s3:Get*", "s3:List*" ]
policy_id_string
-
Bietet eine Möglichkeit, Informationen zur Richtlinie im Ganzen bereitzustellen. Einige Services wie Amazon SQS und Amazon SNS verwenden das reservierte Element
Id
. Sofern policy_id_string nicht von einzelnen Services anderweitig beschränkt ist, sind Leerzeichen zulässig. Für einige Services muss dieser Wert innerhalb eines AWS-Kontos eindeutig sein.Anmerkung
Der Block
id_block
ist in ressourcenbasierten Richtlinien, nicht jedoch in identitätsbasierten Richtlinien zulässig.Es gibt keine Längenbeschränkung, allerdings trägt diese Zeichenfolge zur Gesamtlänge der Richtlinie bei, die wiederum beschränkt ist.
"Id":"Admin_Policy" "Id":"cd3ad3d9-2776-4ef1-a904-4c229d1642ee"
sid_string
-
Bietet eine Möglichkeit, Informationen zu einzelnen Anweisungen bereitzustellen. In IAM-Richtlinien sind für den Wert
Sid
nur die grundlegenden alphanummerischen Zeichen (A-Z, a-z und 0-9). Für andere AWS-Services, die ressourcenbasierte Richtlinien unterstützen, können für den WertSid
andere Beschränkungen gelten. Für einige Services muss dieser Wert beispielsweise innerhalb eines AWS-Konto eindeutig sein, in anderen Services sind zusätzliche Zeichen wie Leerzeichen für den WertSid
zulässig."Sid":"1" "Sid": "ThisStatementProvidesPermissionsForConsoleAccess"
principal_id_string
-
Bietet eine Möglichkeit, über den Amazon-Ressourcennamen (ARN) von AWS-Konto, IAM-Benutzern, IAM-Rollen, Verbundbenutzern oder Benutzern mit einer übernommenen Rolle ein Prinzipal festzulegen. Für AWS-Konto können Sie außerdem anstelle des vollständigen ARN auch die Kurzform
AWS:
verwenden. Informationen zu sämtlichen Optionen einschließlich AWS-Services, übernommenen Rollen usw. finden Sie unter So legen Sie einen Prinzipal fest.accountnumber
Sie können das Sternchen (*) nur verwenden, um "alle/anonym" festzulegen. Es ist nicht möglich, damit einen Teil eines Namens oder ARN anzugeben.
resource_string
-
Besteht in den meisten Fällen aus einem Amazon-Ressourcennamen (ARN).
"Resource":"arn:aws:iam::123456789012:user/Bob" "Resource":"arn:aws:s3:::amzn-s3-demo-bucket/*"
condition_type_string
-
Gibt den zu testenden Bedingungstyp an, z. B.
StringEquals
,StringLike
,NumericLessThan
,DateGreaterThanEquals
,Bool
,BinaryEquals
,IpAddress
,ArnEquals
usw. Eine vollständige Liste der Bedingungstypen finden Sie unter IAM-JSON-Richtlinienelemente: Bedingungsoperatoren."Condition": { "NumericLessThanEquals": { "s3:max-keys": "10" } } "Condition": { "Bool": { "aws:SecureTransport": "true" } } "Condition": { "StringEquals": { "s3:x-amz-server-side-encryption": "AES256" } }
condition_key_string
-
Identifiziert den Bedingungsschlüssel, dessen Wert getestet wird, um festzustellen, ob die Bedingung erfüllt ist. AWS definiert einen Satz von Bedingungsschlüsseln, die in allen AWS-Diensten verfügbar sind, einschließlich
aws:PrincipalType
,aws:SecureTransport
undaws:userid
.Eine Liste der AWS -Bedingungsschlüssel finden Sie unter AWS Kontextschlüssel für globale Bedingungen. Informationen zu Bedingungsschlüsseln, die für einen Service spezifisch sind, finden Sie in der Dokumentation des betreffenden Service, wie z. B. in den folgenden Abschnitten:
-
Angeben von Bedingungen in einer Richtlinie im Benutzerhandbuch für Amazon Simple Storage Service
-
IAM-Richtlinien für Amazon EC2 im Amazon-EC2-Benutzerhandbuch.
"Condition":{ "Bool": { "aws:SecureTransport": "true" } } "Condition": { "StringNotEquals": { "s3:x-amz-server-side-encryption": "AES256" } } "Condition": { "StringEquals": { "aws:ResourceTag/purpose": "test" } }
-
condition_value_string
-
Identifiziert den Wert von „condition_key_string“, der bestimmt, ob die Bedingung erfüllt ist. Eine vollständige Liste der gültigen Werte für einen Bedingungstyp finden Sie unter IAM-JSON-Richtlinienelemente: Bedingungsoperatoren.
"Condition":{ "ForAnyValue:StringEquals": { "dynamodb:Attributes": [ "
ID
", "PostDateTime
" ] } }