Bedingungen
Das optionale Bedingungselement einer Policy-Anweisung begrenzt den Zugriff auf Basis der in IAM bereitgestellten Attribute.
Eine Bedingung gibt Ressourcen basierend auf angegebenen Parametern zurück. Beispiel: Verwenden Sie eine Bedingung, um Ressourcen zurückzugeben, die bestimmte Zeichen in ihren Namen enthalten.
Syntax für eine einzelne Bedingung: variable =|!= value
Syntax für mehrere Bedingungen: any|all {<condition>,<condition>,...}
Um ein logisches ODER für eine Gruppe von Bedingungen zu erstellen, verwenden Sie any. Um ein logisches UND für eine Gruppe von Bedingungen zu erstellen, verwenden Sie all.
Beim Bedingungsabgleich werden Namen ignoriert, bei denen die Groß-/Kleinschreibung beachtet wird. Beispiel: Eine Bedingung für einen Bucket namens "BucketA" stimmt auch mit einem Bucket namens "bucketA" überein.
-
Zeichenfolge:
-
'johnsmith@example.com' -
'ocid1.compartment.oc1.exampleuniqueID'(Der Wert ist in einfache Anführungszeichen eingeschlossen)
-
-
Muster:
-
/hr*/(entspricht Zeichenfolgen, die mit "hr" beginnen) -
/*hr/(entspricht Zeichenfolgen, die mit "hr" enden) -
/*hr*/(entspricht Zeichenfolgen, die "hr" enthalten)
-
In den folgenden Beispielen können die Anweisungen, mit denen die Bedingung angegeben wird, nicht alle Benutzer und Gruppen in GroupAdmins auflisten. Aus Gründen der Vollständigkeit werden Anweisungen einschließlich des Verbes
inspect hinzugefügt. Siehe Variablen, die für eine Anforderung nicht anwendbar sind, führen zu einer abgelehnten Anforderung.Beispiele:
-
Einzelne Bedingung:
Einzelne Bedingung für einen Ressourcentyp (Gruppen)
Allow group GroupAdmins to manage groups in tenancy where target.group.name = /A-Users-*/ Allow group GroupAdmins to inspect groups in tenancyEinzelne Bedingung für viele Ressourcentypen (Benutzer und Gruppen)
Allow group GroupAdmins to inspect users in tenancyAllow group GroupAdmins to use users in tenancy where target.group.name != 'Administrators'Allow group GroupAdmins to inspect groups in tenancyAllow group GroupAdmins to use groups in tenancy where target.group.name != 'Administrators'Viele Bedingungen für eine Ressource (Gruppen)
Allow group NetworkAdmins to manage virtual-network-family in tenancy where target.compartment.id != 'ocid1.compartment.oc1.exampleuniqueID' -
Mehrere Bedingungen
Mit der folgenden Policy kann GroupAdmins Gruppen erstellen, aktualisieren oder löschen, deren Namen mit "
A-" beginnen, mit Ausnahme von der GruppeA-Adminsselbst:Allow group GroupAdmins to manage groups in tenancy where all {target.group.name=/A-*/,target.group.name!='A-Admins'} Allow group GroupAdmins to inspect groups in tenancy
Variablen, die für ein Anforderungsergebnis in einer abgelehnten Anforderung nicht anwendbar sind
Wenn die Variable auf die eingehende Anforderung nicht anwendbar ist, ergibt die Bedingung die Anforderung als false, und die Anforderung wird abgelehnt. Beispiel: Im Folgenden sind einige grundlegende Policy-Anweisungen aufgeführt, mit denen Benutzer für jede Gruppe außer Administrators hinzugefügt oder entfernt werden können:
Allow group GroupAdmins to use users in tenancy where target.group.name != 'Administrators'
Allow group GroupAdmins to use groups in tenancy where target.group.name != 'Administrators'
Wenn ein Benutzer in GroupAdmins versucht hat, einen allgemeinen API-Vorgang für Benutzer aufzurufen, wie ListUsers oder UpdateUser (mit dem Sie die Beschreibung des Benutzers ändern können), wird die Anforderung abgelehnt, obwohl diese API-Vorgänge von use users abgedeckt sind. Die Beispiel-Policy-Anweisung für use users enthält eine Variable target.group.name, aber die Anforderung ListUsers oder UpdateUser gibt keine Gruppe an. Die Anforderung wurde abgelehnt, weil keine target.group.name angegeben wurde.
Um einem allgemeinen Benutzer Zugriff zu erteilen, wenn ein API-Vorgang keine bestimmte Gruppe umfasst, müssen Sie eine weitere Anweisung hinzufügen, die die Zugriffsebene angibt, die Sie erteilen möchten, die Bedingung jedoch nicht enthält. Beispiel: Um Zugriff auf ListUsers zu erteilen, benötigen Sie eine Anweisung ähnlich der folgenden Anweisung:
Allow group GroupAdmins to inspect users in tenancy
Um Zugriff auf UpdateUser zu erteilen, benötigen Sie diese Anweisung (die auch ListUsers abdeckt, da das Verb use die Funktionen des Verbes inspect beinhaltet):
Allow group GroupAdmins to use users in tenancy
Dieses allgemeine Konzept wendet auch jeden anderen Ressourcentyp mit Zielvariablen an. Beispiel: ListGroups.
Tagbasierte Zugriffskontrolle
Verwenden Sie Bedingungen und eine Gruppe von Tagvariablen, um Policys zu schreiben, die den Zugriff basierend auf den Tags definieren, die auf eine Ressource angewendet werden. Sie können den Zugriff basierend auf einem Tag kontrollieren, das auf der anfordernden Ressource (der Gruppe oder dynamischen Gruppe in der Policy) oder dem Ziel der Anforderung (Ressource oder Compartment) vorhanden ist. Die tagbasierte Zugriffskontrolle bietet Flexibilität für Policys, sodass Sie den Zugriff definieren können, der sich über Compartments, Gruppen und Ressourcen erstreckt. Ausführliche Informationen zum Schreiben von Policys, um den Geltungsbereich des Zugriffs mithilfe von Tags einzuschränken, finden Sie unter Zugriff mit Tags verwalten.