Grammatik der IAM-JSON-Richtliniensprache - AWS Identitäts- und Zugriffsverwaltung

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:

Beispiele für Richtlinien, die in anderen AWS Diensten verwendet werden, finden Sie in der Dokumentation zu diesen Diensten.

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 Validieren von IAM-Richtlinien. 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 und resource_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 IAM und 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 von id_block gefolgt werden. Ebenso können die Blöcke effect_block, principal_block und action_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 die CanonicalUser-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 in condition_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 Wert Sid andere Beschränkungen gelten. Bei einigen Diensten muss dieser Wert beispielsweise innerhalb eines eindeutig sein AWS-Konto, und bei einigen Diensten sind zusätzliche Zeichen wie Leerzeichen im Sid Wert zulässig.

"Sid":"1" "Sid": "ThisStatementProvidesPermissionsForConsoleAccess"
principal_id_string

Bietet eine Möglichkeit, einen Principal mithilfe des Amazon-Ressourcennamens (ARN) des IAM-Benutzers AWS-Konto, der IAM-Rolle, des Verbundbenutzers oder des Benutzers mit angenommener Rolle anzugeben. Für eine AWS-Konto können Sie auch die Kurzform AWS:accountnumber anstelle des vollständigen ARN verwenden. Informationen zu sämtlichen Optionen einschließlich AWS -Services, übernommenen Rollen usw. finden Sie unter Angeben eines Auftraggebers.

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:::examplebucket/*"
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 eine Reihe von Bedingungsschlüsseln, die in allen AWS Diensten verfügbar sindaws:PrincipalType, einschließlichaws:SecureTransport, undaws:userid.

Eine Liste der AWS Bedingungsschlüssel finden Sie unterAWS 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:

"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" ] } }