Syntaxe de politique
La syntaxe globale d'un énoncé de politique se présente comme suit :
Allow <subject> to <verb> <resource-type> in <location> where <conditions>
Les espaces vides ou les sauts de ligne dans l'énoncé n'ont aucune incidence.
Pour les limites concernant le nombre de politiques et d'énoncés, voir Limites de service.
Sujet
Spécifiez un ou plusieurs groupes séparés par des virgules, par leur nom ou leur OCID. Ou spécifiez any-group
pour couvrir tous les utilisateurs, principaux d'instance et principaux de ressource de la location.
Syntaxe : {{ group <group_name> | group id <group_ocid> | dynamic-group <dynamic-group_name> | dynamic-group id <dynamic-group_ocid>| any-group
| any-user}}
Tout utilisateur accorde l'accès à tous les utilisateurs, principaux de ressource et principaux d'instance de votre location et principal de service. Nous vous recommandons de ne pas utiliser
any-user
et d'utiliser plutôt any-group
. Vous pouvez également spécifier le type de ressource pour empêcher les imprimeurs inutiles d'y accéder. Par exemple, {request.principal.type='disworkspace'}
.Exemples :
- Pour spécifier un seul groupe par son nom :
Allow group A-Admins to manage all-resources in compartment Project-A
-
Pour spécifier plusieurs groupes par leur nom (l'espace après la virgule est facultatif) :
Allow group A-Admins, B-Admins to manage all-resources in compartment Projects-A-and-B
- Pour spécifier un seul groupe par son OCID (l'OCID est raccourci à des fins de concision) :
Allow group id ocid1.group.oc1..aaaaaaaaqjihfhvxmum...awuc7i5xwe6s7qmnsbc6a to manage all-resources in compartment Project-A
- Pour spécifier plusieurs groupes par leur OCID (les OCID sont raccourcis à des fins de concision) :
Allow group id ocid1.group.oc1..aaaaaaaaqjihfhvxmumrl...wuc7i5xwe6s7qmnsbc6a, id ocid1.group.oc1..aaaaaaaavhea5mellwzb...66yfxvl462tdgx2oecyq to manage all-resources in compartment Projects-A-and-B
- Pour spécifier un groupe ou un principal d'instance dans la location, ou spécifiez un groupe pour inspecter les utilisateurs d'une location :
Allow any-group to inspect users in tenancy
Verbe
Indiquez un verbe unique. Pour une liste des verbes, voir Verbes. Exemple :
Allow group A-Admins to manage all-resources in compartment Project-A
Type de ressource
Indiquez un seul type de ressource individuelle parmi les suivants :
- Type de ressource individuelle (par exemple,
vcns
,subnets
,instances
,volumes
, etc.) - Type de ressource familiale (par exemple,
virtual-network-family
,instance-family
,volume-family
, etc.) all-resources
: Couvre toutes les ressources du compartiment (ou de la location).
Un type de ressource familiale couvre divers composants, généralement utilisés ensemble. Cela facilite l'écriture d'une politique qui permet à un utilisateur d'accéder à divers aspects de votre réseau en nuage.
Pour une liste des types de ressource disponibles, voir Types de ressource.
Syntaxe : <resource_type> | all-resources
Exemples :
- Pour spécifier un seul type de ressource :
Allow group HelpDesk to manage users in tenancy
- Pour spécifier plusieurs types de ressource, utilisez des énoncés distincts :
Allow group A-Users to manage instance-family in compartment Project-A Allow group A-Users to manage volume-family in compartment Project-A
- Pour spécifier toutes les ressources dans le compartiment (ou la location) :
Allow group A-Admins to manage all-resources in compartment Project-A
Emplacement
Spécifiez un compartiment unique ou un chemin d'accès au compartiment par son nom ou son OCID. Ou spécifiez tenancy
pour couvrir l'ensemble de la location. N'oubliez pas que les utilisateurs, les groupes et les compartiments se trouvent dans la location. Les politiques peuvent résider (association) dans la location ou un compartiment enfant.
Octroi de l'accès à des régions ou à des domaines de disponibilité spécifiques
Pour créer une politique qui donne accès à une région ou à un domaine de disponibilité spécifique, utilisez la variable request.region
ou request.ad
avec une condition. Voir Conditions.
L'emplacement est obligatoire dans l'énoncé. Si vous voulez associer une politique à un compartiment, vous devez être dans ce compartiment lorsque vous créez la politique. Pour plus d'informations, voir Association de politique.
Pour spécifier un compartiment qui n'est pas un enfant direct du compartiment auquel vous associez la politique, spécifiez le chemin d'accès de ce compartiment, en utilisant les deux-points (:) comme séparateur. Pour plus d'informations, voir Politiques et hiérarchies de compartiments.
Syntaxe : [ tenancy | compartment <compartment_name> | compartment id <compartment_ocid>
]
Exemples :
- Pour spécifier un compartiment par son nom :
Allow group A-Admins to manage all-resources in compartment Project-A
- Pour spécifier un compartiment par son OCID :
Allow group id ocid1.group.oc1..aaaaaaaaexampleocid to manage all-resources in compartment id ocid1.compartment.oc1..aaaaaaaaexampleocid
- Pour spécifier plusieurs compartiments, utilisez des énoncés distincts :
Allow group InstanceAdmins to manage instance-family in compartment Project-A Allow group InstanceAdmins to manage instance-family in compartment Project-B
- Pour spécifier plusieurs compartiments par leur OCID, utilisez des énoncés distincts :
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
-
Pour spécifier un compartiment qui n'est pas un enfant direct du compartiment auquel vous associez la politique, spécifiez son chemin d'accès :
Allow group InstanceAdmins to manage instance-family in compartment Project-A:Project-A2
Conditions
Spécifiez une ou plusieurs conditions. Utilisez any
ou all
avec plusieurs conditions pour un opérateur logique OR ou AND, respectivement.
Syntaxe pour une seule condition : variable =|!= value
Syntaxe pour plusieurs conditions : any|all {<condition>,<condition>,...}
Des opérateurs supplémentaires peuvent être utilisés avec des variables basées sur le temps. Voir Restriction de l'accès aux ressources par période.
La correspondance des conditions n'est pas sensible à la casse. Il est important de s'en rappeler lors de l'écriture de conditions pour des types de ressource qui permettent une attribution de nom sensible à la casse. Par exemple, le service Stockage d'objets permet de créer à la fois un seau nommé "BucketA" et un seau nommé "bucketA" dans le même compartiment. Si vous écrivez une condition qui spécifie "BucketA", elle s'appliquera également à "bucketA" car la correspondance de condition n'est pas sensible à la casse.
Pour une liste des variables prises en charge par tous les services, voir Variables générales pour toutes les demandes. Voir aussi les informations détaillées pour chaque service sous Informations de référence sur les politiques. Voici les types de valeur que vous pouvez utiliser dans des conditions :
Type | Exemples |
---|---|
Chaîne |
(Des guillemets simples doivent encadrer la valeur) |
Modèle |
|
Exemples :
Dans les exemples suivants, comme les énoncés qui spécifient la condition ne permettent pas à GroupAdmins de lister réellement tous les utilisateurs et les groupes, les énoncés qui incluent le verbe
inspect
sont ajoutés à des fins d'exhaustivité. Pour comprendre pourquoi ces énoncés sont requis, voir Variables qui ne s'appliquent pas aux résultats d'une demande refusée. - Une seule condition.
La politique suivante permet au groupe GroupAdmins de créer, de mettre à jour ou de supprimer les groupes dont le nom commence par "A-Users-" :
Allow group GroupAdmins to manage groups in tenancy where target.group.name = /A-Users-*/ Allow group GroupAdmins to inspect groups in tenancy
La politique suivante permet au groupe NetworkAdmins de gérer les réseaux en nuage dans n'importe quel compartiment, sauf celui spécifié :Allow group NetworkAdmins to manage virtual-network-family in tenancy where target.compartment.id != 'ocid1.compartment.oc1..aaaaaaaaexampleocid'
- Conditions multiples.
La politique suivante permet à GroupAdmins de créer, mettre à jour ou supprimer des groupes dont le nom commence par "A-", à l'exception du groupe A-Admins lui-même :
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