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.

Wichtig

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)

Hinweis

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 Gruppe A-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.