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.
Einwertige im Vergleich zu mehrwertige Kontextschlüssel
Der Unterschied zwischen einwertigen und mehrwertigen Kontextschlüsseln liegt in der Anzahl der Werte im Anforderungskontext, nicht in der Anzahl der Werte in der Richtlinienbedingung.
-
Einwertige Bedingungskontextschlüssel haben höchstens einen Wert im Anforderungskontext. Wenn Sie beispielsweise Ressourcen taggen, wird jedes Ressourcen-Tag als Schlüssel-Wert-Paar gespeichert. AWS Da ein Ressourcen-Tag-Schlüssel nur einen einzigen Tag-Wert haben kann, aws:ResourceTag/Tag-Taste handelt es sich um einen einwertigen Kontextschlüssel. Verwenden Sie keinen Bedingungssatzoperator mit einem einwertigen Kontextschlüssel.
-
Mehrwertige Bedingungskontextschlüssel können im Anforderungskontext mehrere Werte enthalten. Wenn Sie beispielsweise Ressourcen taggen AWS, können Sie mehrere Tag-Schlüssel-Wert-Paare in eine einzige Anfrage aufnehmen. Daher handelt es sich bei als: TagKeys um einen mehrwertigen Kontextschlüssel. Mehrwertige Kontextschlüssel erfordern einen Bedingungssatz-Operator.
Wichtig
Mehrwertige Kontextschlüssel erfordern einen Bedingungssatz-Operator. Verwenden Sie die Bedingungssatz-Operatoren ForAllValues
oder ForAnyValue
nicht mit einwertigen Kontextschlüsseln. Weitere Informationen zu Bedingungssatz-Operatoren finden Sie unter Mehrwertige Kontextschlüssel.
Die einwertigen und mehrwertigen Klassifizierungen sind in der Beschreibung jedes Bedingungskontextschlüssels als Werttyp im AWS Kontextschlüssel für globale Bedingungen-Thema enthalten. Die Service Authorization Reference verwendet eine andere Wertetypklassifizierung für mehrwertige Kontextschlüssel, wobei ein ArrayOf
Präfix verwendet wird, gefolgt vom Kategorietyp des Bedingungsoperators, z. B. oder. ArrayOfString
ArrayOfARN
Eine Anfrage kann beispielsweise von höchstens einem VPC Endpunkt stammen, ebenso wie ein als: SourceVpce einwertiger Kontextschlüssel. Da ein Service über mehr als einen Prinzipal verfügen kann, der zum Service gehört, handelt es sich bei aws: PrincipalServiceNamesList um einen mehrwertigen Kontextschlüssel.
Sie können jeden verfügbaren einwertigen Kontextschlüssel als Richtlinienvariable verwenden, aber Sie können keinen mehrwertigen Kontextschlüssel als Richtlinienvariable verwenden. Weitere Informationen zu Richtlinienvariablen finden Sie unter IAM-Richtlinienelemente: Variablen und Tags.
Bei der Verwendung von Kontextschlüsseln, die Schlüssel-Wert-Paare enthalten, ist es wichtig zu beachten, dass es zwar mehrere Tag-Schlüssel-Werte geben kann, aber jeder nur einen Wert haben kann.
Daher tag-key
aws:ResourceTag
handelt es sich bei beiden um aws:RequestTag
einwertige Kontextschlüssel. Die Verwendung von Bedingungssatzoperatoren mit einwertigen Kontextschlüsseln kann zu übermäßig zulässigen Richtlinien führen.
Mehrwertige Kontextschlüssel
Um Ihren Bedingungskontextschlüssel mit einem Anforderungskontext-Schlüssel mit mehreren Werten zu vergleichen, müssen Sie die Satzoperatoren ForAllValues
oder ForAnyValue
verwenden. Diese Satzoperatoren werden verwendet, um zwei Sätze von Werten zu vergleichen, z. B. den Satz von Tags in einer Anfrage und den Satz von Tags in einer Richtlinienbedingung.
Mit den ForAnyValue
Qualifizierern ForAllValues
und wird der Bedingungsoperator um die Funktionalität der Mengenoperation erweitert, sodass Sie Anforderungskontextschlüssel mit mehreren Werten anhand mehrerer Kontextschlüsselwerte in einer Richtlinienbedingung testen können. Wenn Sie außerdem einen mehrwertigen Zeichenfolgen-Kontextschlüssel mit einem Platzhalter oder einer Variablen in Ihre Richtlinie einschließen, müssen Sie auch den StringLike
-Bedingungsoperator verwenden. Mehrere Bedingungsschlüsselwerte müssen in Klammern eingeschlossen werden, wie z. B. ein Array. "Key2":["Value2A", "Value2B"]
-
ForAllValues
– Dieser Qualifikator prüft, ob der Wert jedes Elements des Anforderungssatzes eine Teilmenge des Bedingungskontextschlüsselsatzes ist. Die Bedingung wird zurückgegeben,true
wenn jeder Kontextschlüsselwert in der Anfrage mit mindestens einem Kontextschlüsselwert in der Richtlinie übereinstimmt. Sie gibt auch zurück,true
ob die Anforderung keine Kontextschlüssel enthält oder ob der Kontextschlüsselwert in einen Null-Datensatz aufgelöst wird, z. B. eine leere Zeichenfolge. Um zu verhindern, dass fehlende Kontextschlüssel oder Kontextschlüssel mit leeren Werten als ausgewertet werdentrue
, können Sie den NullBedingungsoperator mit einemfalse
Wert in Ihre Richtlinie aufnehmen, um zu überprüfen, ob der Kontextschlüssel existiert und sein Wert nicht Null ist.Wichtig
Seien Sie vorsichtig, wenn Sie einen
Allow
Effekt verwendenForAllValues
, da er zu freizügig sein kann, wenn das Vorhandensein fehlender Kontextschlüssel oder Kontextschlüssel mit leeren Werten im Anforderungskontext unerwartet ist. Sie können denNull
Bedingungsoperator mit einemfalse
Wert in Ihre Richtlinie aufnehmen, um zu überprüfen, ob der Kontextschlüssel existiert und sein Wert nicht Null ist. Ein Beispiel finden Sie unter Zugriffssteuerung auf der Grundlage von Tag-Schlüsseln. -
ForAnyValue
– Dieser Qualifikator prüft, ob mindestens ein Element des Satzes von Bedingungskontextschlüssel-Werten mit mindestens einem Element des Satzes von Bedingungskontextschlüssel-Werten in Ihrer Richtlinie übereinstimmt. Der Kontextschlüssel gibt zurück,true
ob einer der Kontextschlüsselwerte in der Anfrage mit einem der Kontextschlüsselwerte in der Richtlinie übereinstimmt. Wenn kein übereinstimmender Kontextschlüssel oder ein Null-Datensatz vorhanden ist, wird die Bedingung zurückgegebenfalse
.
Anmerkung
Der Unterschied zwischen einwertigen und mehrwertigen Kontextschlüsseln hängt von der Anzahl der Werte im Anforderungskontext ab, nicht von der Anzahl der Werte in der Richtlinienbedingung.