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}}

Note

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.

Note

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.

Important

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

'johnsmith@example.com'

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

(Des guillemets simples doivent encadrer la valeur)

Modèle

/HR*/ (correspond aux chaînes qui commencent par "HR")

/*HR/ (correspond aux chaînes qui se terminent par "HR")

/*HR*/ (correspond aux chaînes qui contiennent "HR")

Exemples :

Note

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