Policy-Syntax

Die allgemein Syntax einer Policy-Anweisung lautet wie folgt:

Allow <subject> to <verb> <resource-type> in <location> where <conditions>

Überflüssige Leerzeichen oder Zeilenumbrüche in der Anweisung haben keine Auswirkung.

Informationen zu den Grenzwerten für die Anzahl von Policys und Anweisungen finden Sie unter Servicelimits.

Subject

Geben Sie eine oder mehrere durch Komma getrennte Gruppen nach Namen oder OCID an. Sie können auch any-group angeben, um alle Benutzer, Instanz-Principals und Ressourcen-Principals im Mandanten abzudecken.

Syntax:{{ group <group_name> | group id <group_ocid> | dynamic-group <dynamic-group_name> | dynamic-group id <dynamic-group_ocid>| any-group | any-user}}

Hinweis

Jeder Benutzer erteilt allen Benutzern, Resource Principals und Instanz-Principals in Ihrem Mandanten und Service-Principal Zugriff. Wir empfehlen, any-user zu verwenden und stattdessen any-group zu verwenden. Alternativ können Sie den Ressourcentyp angeben, um zu verhindern, dass unnötige Principals Zugriff haben. Beispiel: {request.principal.type='disworkspace'}.

Beispiele:

  • So geben Sie eine einzelne Gruppe nach Namen an:
    Allow 
    
    group A-Admins
    
     to manage all-resources in compartment Project-A
  • So geben Sie mehrere Gruppen nach Namen an (ein Leerzeichen nach dem Komma ist optional):
    Allow 
    
    group A-Admins, B-Admins
    
     to manage all-resources in compartment Projects-A-and-B
  • So geben Sie eine einzelne Gruppe nach OCID an (die OCID wird aus Gründen der Übersichtlichkeit gekürzt):
    Allow group 
    
     id ocid1.group.oc1..aaaaaaaaqjihfhvxmum...awuc7i5xwe6s7qmnsbc6a 
    
    to manage all-resources in compartment Project-A
  • So geben Sie mehrere Gruppen nach OCID an (die OCIDs werden aus Gründen der Übersichtlichkeit gekürzt):
    Allow group 
    
     id ocid1.group.oc1..aaaaaaaaqjihfhvxmumrl...wuc7i5xwe6s7qmnsbc6a,
     id ocid1.group.oc1..aaaaaaaavhea5mellwzb...66yfxvl462tdgx2oecyq 
    
    to manage all-resources in compartment Projects-A-and-B
  • So geben Sie einen Gruppen- oder Instanz-Principal im Mandanten an oder geben eine beliebige Gruppe an, um Benutzer in einem Mandanten zu prüfen:
    Allow any-group to inspect users in tenancy

Verb

Geben Sie ein einzelnes Verb an. Eine Liste der Verben finden Sie unter Verben. Beispiel:

Allow group A-Admins to manage all-resources in compartment Project-A

Ressourcentyp

Geben Sie einen einzelnen Ressourcentyp an. Folgende Werte sind möglich:

  • Ein individueller Ressourcentyp (z.B. vcns, subnets, instances, volumes usw.)
  • Ein Familienressourcentyp (z.B. virtual-network-family, instance-family, volume-family usw.)
  • all-resources: Umfasst alle Ressourcen im Compartment (oder Mandanten).

Ein Familienressourcentyp umfasst verschiedene Komponenten, die normalerweise zusammen verwendet werden. Dadurch wird das Schreiben einer Policy vereinfacht, die einem Benutzer Zugriff auf verschiedene Aspekte Ihres Cloud-Netzwerks erteilt.

Eine Liste der verfügbaren Ressourcentypen finden Sie unter Ressourcentypen.

Syntax: <resource_type> | all-resources

Beispiele:

  • So geben Sie einen einzelnen Ressourcentyp an:
    Allow group HelpDesk to manage users in tenancy
  • Um mehrere Ressourcentypen anzugeben, verwenden Sie separate Anweisungen:
    Allow group A-Users to manage instance-family in compartment Project-A
    
    Allow group A-Users to manage volume-family in compartment Project-A
    
  • So geben Sie alle Ressourcen im Compartment (oder Mandanten) an:
    Allow group A-Admins to manage all-resources in compartment Project-A

Standort

Geben Sie ein einzelnes Compartment oder einen Compartment-Pfad nach Namen oder OCID an. Sie können auch einfach tenancy angeben, um den gesamten Mandanten abzudecken. Beachten Sie, dass sich Benutzer, Gruppen und Compartments im Mandanten befinden. Policys können sich im Mandanten oder in einem untergeordneten Compartment befinden (d.h. diesem zugeordnet sein).

Hinweis

Zugriff auf bestimmte Regionen oder Availability-Domains erteilen

Um eine Policy zu erstellen, die Zugriff auf eine bestimmte Region oder Availability-Domain erteilt, verwenden Sie die Variable request.region oder request.ad mit einer Bedingung. Siehe Bedingungen.

Der Standort ist in der Anweisung erforderlich. Wenn Sie eine Policy einem Compartment zuordnen möchten, müssen Sie sich bei Erstellung der Policy in diesem Compartment befinden. Weitere Informationen finden Sie unter Policy-Zuordnung.

Um ein Compartment anzugeben, das kein direktes untergeordnetes Element des Compartments ist, dem Sie die Policy zuordnen, geben Sie den Pfad zu dem Compartment mit dem Doppelpunkt (:) als Trennzeichen an. Weitere Informationen finden Sie unter Policys und Compartment-Hierarchien.

Syntax: [ tenancy | compartment <compartment_name> | compartment id <compartment_ocid> ]

Beispiele:

  • So geben Sie ein Compartment nach Namen an:
    Allow group A-Admins to manage all-resources in compartment Project-A
  • So geben Sie ein Compartment nach OCID an:
    Allow group
     id ocid1.group.oc1..aaaaaaaaexampleocid to manage all-resources in compartment id ocid1.compartment.oc1..aaaaaaaaexampleocid
  • Um mehrere Compartments anzugeben, verwenden Sie separate Anweisungen:
    Allow group InstanceAdmins to manage instance-family in compartment Project-A
    
    Allow group InstanceAdmins to manage instance-family in compartment Project-B
    
    
  • Um mehrere Compartments nach OCID anzugeben, verwenden Sie separate Anweisungen:
    Allow group id ocd1.group.oc1..aaaaaaaavheexampleocid to manage all-resources in compartment id ocid1.compartment.oc1..aaaaaaaayzexampleocid
    
    Allow group id ocd1.group.oc1..aaaaaaaaexampleocid to manage all-resources in compartment id ocid1.compartment.oc1..aaaaaexampledocid
  • Um ein Compartment anzugeben, das kein direktes untergeordnetes Element des Compartments ist, dem Sie die Policy zuordnen, geben Sie den Pfad an:

    Allow group InstanceAdmins to manage instance-family in compartment Project-A:Project-A2

Bedingungen

Geben Sie eine oder mehrere Bedingungen an. Verwenden Sie any oder all mit mehreren Bedingungen für ein logisches ODER bzw. UND.

Syntax für eine einzelne Bedingung: variable =|!= value

Syntax für mehrere Bedingungen: any|all {<condition>,<condition>,...}

Weitere Operatoren können mit zeitbasierten Variablen verwendet werden. Informationen hierzu finden Sie unter Zugriff auf Ressourcen basierend auf Zeitrahmen einschränken.

Wichtig

Beim Bedingungsabgleich wird die Groß-/Kleinschreibung nicht beachtet. Dies ist wichtig, wenn Sie Bedingungen für Ressourcentypen schreiben, bei deren Namen die Groß-/Kleinschreibung beachtet wird. Mit dem Object Storage-Service können Sie beispielsweise einen Bucket mit dem Namen "BucketA" und einen Bucket mit dem Namen "bucketA" in demselben Compartment erstellen. Wenn Sie eine Bedingung schreiben, in der "BucketA" angegeben ist, wird sie auch auf "bucketA" angewendet, weil beim Bedingungsabgleich die Groß-/Kleinschreibung nicht beachtet wird.

Eine Liste der von allen Services unterstützten Variablen finden Sie unter Allgemeine Variablen für alle Anforderungen. Außerdem finden Sie die Details für jeden Service im Überblick über IAM-Policys. Im Folgenden werden die Werttypen aufgeführt, die Sie in Bedingungen verwenden können:

Typ Beispiele
Zeichenfolge

'johnsmith@example.com'

'ocid1.compartment.oc1..aaaaaaaaph...ctehnqg756a'

(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)

Beispiele:

Hinweis

In den folgenden Beispielen erhält die Gruppe "GroupAdmins" mit den Anweisungen, die die Bedingung angeben, nicht die Möglichkeit, alle Benutzer und Gruppen aufzulisten. Daher werden der Vollständigkeit halber Anweisungen mit dem Verb inspect hinzugefügt. Informationen dazu, warum dies erforderlich ist, finden Sie unter Variablen, die nicht auf ein Anforderungsergebnis in einer abgelehnten Anforderung anwendbar sind.
  • Eine einzelne Bedingung.

    Mit der folgenden Policy kann die Gruppe "GroupAdmins" Gruppen erstellen, aktualisieren oder löschen, deren Namen mit "A-Users-" beginnen:

    Allow group GroupAdmins to manage groups in tenancy where target.group.name = /A-Users-*/
    Allow group GroupAdmins to inspect groups in tenancy
    Mit der folgenden Policy kann die Gruppe "NetworkAdmins" Cloud-Netzwerke in allen Compartments außer dem angegebenen Compartment verwalten:
    Allow group NetworkAdmins to manage virtual-network-family in tenancy where target.compartment.id != 'ocid1.compartment.oc1..aaaaaaaaexampleocid'
  • Mehrere Bedingungen.

    Mit der folgenden Policy kann die Gruppe "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