Syntaxe de stratégie

La syntaxe générale d'une instruction de stratégie se présente comme suit :

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

Les espaces supplémentaires ou les sauts de ligne dans l'instruction n'ont aucun effet.

Pour connaître le nombre maximal de stratégies et d'instructions, reportez-vous à Limites de service.

Objet

Indiquez des groupes avec leur nom ou leur OCID séparés par une virgule. Vous pouvez également indiquer 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}}

Remarque

Tout utilisateur accorde l'accès à tous les utilisateurs, principaux de ressource et principaux d'instance de votre location et de votre principal de service. Nous vous recommandons d'éviter d'utiliser any-user et d'utiliser any-group à la place. Vous pouvez également spécifier le type de ressource pour empêcher les imprimantes inutiles d'y accéder. Par exemple, {request.principal.type='disworkspace'}.

Exemples :

  • Pour indiquer un seul groupe avec son nom, suivez l'exemple ci-après :
    Allow 
    
    group A-Admins
    
     to manage all-resources in compartment Project-A
  • Pour indiquer plusieurs groupes avec leur nom (l'espace après la virgule est facultatif), suivez l'exemple ci-après :
    Allow 
    
    group A-Admins, B-Admins
    
     to manage all-resources in compartment Projects-A-and-B
  • Pour indiquer un seul groupe avec son OCID (l'OCID est raccourci pour des raisons de concision), suivez l'exemple ci-après :
    Allow group 
    
     id ocid1.group.oc1..aaaaaaaaqjihfhvxmum...awuc7i5xwe6s7qmnsbc6a 
    
    to manage all-resources in compartment Project-A
  • Pour indiquer plusieurs groupes avec leur OCID (les OCID sont raccourcis pour des raisons de concision), suivez l'exemple ci-après :
    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 indiquer un groupe ou un principal d'instance dans la location, ou indiquer un groupe quelconque pour inspecter les utilisateurs d'une location, procédez comme suit :
    Allow any-group to inspect users in tenancy

Verbe

Indiquez un seul verbe. Pour obtenir la liste des verbes, reportez-vous à Verbes. Exemple :

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

Type de ressource

Spécifiez un seul type de ressource, qui peut être l'un des suivants :

  • Type de ressource individuel (par exemple, vcns, subnets, instances, volumes, etc.).
  • Type de ressource de famille (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 de famille couvre différents composants généralement utilisés ensemble. Cela facilite l'écriture d'une stratégie permettant à une personne d'utiliser différents aspects de votre réseau cloud.

Pour obtenir la liste des types de ressource disponibles, reportez-vous à Types de ressource.

Syntaxe : <resource_type> | all-resources

Exemples :

  • Pour indiquer un seul type de ressource, suivez l'exemple ci-après :
    Allow group HelpDesk to manage users in tenancy
  • Pour indiquer plusieurs types de ressource, utilisez des instructions distinctes comme suit :
    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 indiquer toutes les ressources dans le compartiment (ou la location), suivez l'exemple ci-après :
    Allow group A-Admins to manage all-resources in compartment Project-A

Emplacement

Indiquez un chemin de compartiment ou un compartiment unique avec son nom ou son OCID. Sinon, indiquez simplement tenancy pour couvrir l'ensemble de la location. N'oubliez pas que les utilisateurs, les groupes et les compartiments résident dans la location. Les stratégies peuvent résider dans la location ou dans un compartiment enfant (c'est-à-dire, y être attachées).

Remarque

Octroi d'un accès à des régions ou à des domaines de disponibilité spécifiques

Pour créer une stratégie permettant d'accéder à une région ou à un domaine de disponibilité spécifique, utilisez la variable request.region ou request.ad avec une condition. Reportez-vous à Conditions.

L'emplacement doit figurer dans l'instruction. Si vous voulez attacher une stratégie à un compartiment, vous devez vous trouver dans ce compartiment lorsque vous créez la stratégie. Pour plus d'informations, reportez-vous à Attachement de stratégie.

Pour indiquer un compartiment qui n'est pas un enfant direct du compartiment auquel vous attachez la stratégie, indiquez le chemin du compartiment en utilisant le signe deux-points (:) comme séparateur. Pour plus d'informations, reportez-vous à Stratégies et hiérarchies de compartiments.

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

Exemples :

  • Pour indiquer un compartiment avec son nom, suivez l'exemple ci-après :
    Allow group A-Admins to manage all-resources in compartment Project-A
  • Pour indiquer un compartiment avec son OCID, suivez l'exemple ci-après :
    Allow group
     id ocid1.group.oc1..aaaaaaaaexampleocid to manage all-resources in compartment id ocid1.compartment.oc1..aaaaaaaaexampleocid
  • Pour indiquer plusieurs compartiments, utilisez des instructions distinctes comme suit :
    Allow group InstanceAdmins to manage instance-family in compartment Project-A
    
    Allow group InstanceAdmins to manage instance-family in compartment Project-B
    
    
  • Pour indiquer plusieurs compartiments avec leur OCID, utilisez des instructions distinctes comme suit :
    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 indiquer un compartiment qui n'est pas un enfant direct du compartiment auquel vous attachez la stratégie, indiquez le chemin :

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

Conditions

Indiquez des conditions. Utilisez any ou all avec les conditions multiples pour un opérateur logique OR ou AND, respectivement.

Syntaxe pour une condition unique : variable =|!= value

Syntaxe pour des conditions multiples : any|all {<condition>,<condition>,...}

Vous pouvez utiliser des opérateurs supplémentaires avec les variables temporelles. Reportez-vous à Restriction de l'accès aux ressources en fonction d'une période.

Important

La mise en correspondance de conditions ne tient pas compte de la casse. Gardez ce point à l'esprit lorsque vous écrivez des conditions pour les types de ressource qui utilisent la dénomination avec respect de la casse. Par exemple, le service Object Storage permet de créer un bucket nommé "BucketA" et un bucket nommé "bucketA" dans le même compartiment. Si vous écrivez une condition indiquant "BucketA", elle s'appliquera également à "bucketA" car la mise en correspondance de conditions ne fait pas la distinction entre les majuscules et les minuscules.

Pour obtenir la liste des variables prises en charge par tous les services, reportez-vous à Variables générales pour toutes les demandes. Reportez-vous également aux détails de chaque service dans la référence de stratégie. Voici les types de valeur que vous pouvez utiliser dans les conditions :

Type Exemples
Chaîne

'johnsmith@example.com'

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

(les apostrophes sont requises autour de 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 :

Remarque

Dans les exemples suivants, les instructions qui indiquent la condition ne permettent pas à GroupAdmins de répertorier l'ensemble des utilisateurs et des groupes. Par conséquent, les instructions comprenant le verbe inspect sont ajoutées à des fins d'exhaustivité. Pour comprendre pourquoi cela est requis, reportez-vous à Variables non applicables à une demande donnant lieu au refus de la demande.
  • Une seule condition.

    La stratégie suivante permet au groupe GroupAdmins de créer, de mettre à jour ou de supprimer des 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 stratégie suivante permet au groupe NetworkAdmins de gérer les réseaux cloud dans n'importe quel compartiment, à l'exception de celui indiqué :
    Allow group NetworkAdmins to manage virtual-network-family in tenancy where target.compartment.id != 'ocid1.compartment.oc1..aaaaaaaaexampleocid'
  • Plusieurs conditions.

    La stratégie suivante permet à GroupAdmins de créer, de mettre à jour ou de supprimer tous les groupes dont le nom commence par "A-", à l'exception du groupe A-Admins :

    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