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}}
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).
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.
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 |
(Der Wert muss in einfache Anführungszeichen eingeschlossen sein) |
Muster |
|
Beispiele:
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