Bedingungen
Das optionale Bedingungselement einer Policy-Anweisung begrenzt den Zugriff auf Basis der in IAM angegebenen 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 mit dem Namen "BucketA" stimmt auch mit einem Bucket mit dem Namen "bucketA" überein.
- Zeichenfolge:
'johnsmith@example.com'
'ocid1.compartment.oc1.exampleuniqueID'
(Der Wert muss in einfache Anführungszeichen eingeschlossen sein)
- 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 lassen die Anweisungen zur Angabe der Bedingung nicht zu, dass GroupAdmins alle Benutzer und Gruppen auflistet. Anweisungen einschließlich des Verbs
inspect
werden zur Vollständigkeit hinzugefügt. Informationen hierzu finden Sie unter Variablen, die nicht auf ein Anforderungsergebnis in einer abgelehnten Anforderung anwendbar sind.Beispiele:
- Eine 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 tenancy
Einzelne Bedingung für viele Ressourcentypen (Benutzer und Gruppen)
Allow group GroupAdmins to inspect users in tenancy
Allow group GroupAdmins to use users in tenancy where target.group.name != 'Administrators'
Allow group GroupAdmins to inspect groups in tenancy
Allow 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 der GruppeA-Admins
selbst: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 nicht auf ein Anforderungsergebnis in einer abgelehnten Anforderung anwendbar sind
Wenn die Variable auf die eingehende Anforderung nicht anwendbar ist, wertet die Bedingung die Anforderung als false aus, und die Anforderung wird abgelehnt. Beispiel: Dies sind einige grundlegende Policy-Anweisungen, mit denen Sie Benutzer für eine beliebige Gruppe hinzufügen oder entfernen können, außer Administrators:
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 wie ListUsers
oder UpdateUser
aufzurufen (mit dem Sie die Beschreibung des Benutzers ändern können), wird die Anforderung abgelehnt, obwohl diese API-Vorgänge von use users
abgedeckt werden. Die Policy-Beispielanweisung für use users
enthält eine Variable target.group.name
, die Anforderung ListUsers
oder UpdateUser
gibt jedoch 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 den Zugriff gewährt, den Sie erteilen möchten, die Bedingung jedoch nicht enthält. Beispiel: Um Zugriff auf ListUsers
zu erteilen, benötigen Sie eine Anweisung ähnlich dieser Anweisung:
Allow group GroupAdmins to inspect users in tenancy
Um den Zugriff auf UpdateUser
zu erteilen, benötigen Sie diese Anweisung (die auch ListUsers
abdeckt, da das Verb use
die Funktionen des Verbs inspect
enthält):
Allow group GroupAdmins to use users in tenancy
Dieses allgemeine Konzept gilt auch für alle anderen Ressourcentypen mit Zielvariablen, z.B. 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 in der anfordernden Ressource (der Gruppe oder dynamischen Gruppe in der Policy) vorhanden ist, oder auf dem Ziel der Anforderung (Ressource oder Compartment). Tagbasierte Zugriffskontrolle bietet Flexibilität für Policys, mit denen Sie den Zugriff über Compartments, Gruppen und Ressourcen hinweg definieren können. Ausführliche Informationen zum Schreiben von Policys, um den Geltungsbereich des Zugriffs mithilfe von Tags einzuschränken, finden Sie unter Zugriff mit Tags verwalten.