Conditions
L'élément de conditions facultatives d'une instruction de stratégie limite l'accès en fonction des attributs fournis dans IAM.
Une condition renvoie les ressources en fonction des paramètres spécifiés. Par exemple, utilisez une condition pour renvoyer les ressources dont le nom contient certains caractères.
Syntaxe pour une condition unique : variable =|!= value
Syntaxe pour des conditions multiples : any|all {<condition>,<condition>,...}
Pour créer un OU logique pour un ensemble de conditions, utilisez any. Pour créer un ET logique pour un ensemble de conditions, utilisez all.
La mise en correspondance de condition ignore les noms sensibles à la casse. Par exemple, une condition pour un bucket nommé "BucketA" correspond également à un bucket nommé "bucketA".
-
Chaîne:
-
'johnsmith@example.com' -
'ocid1.compartment.oc1.exampleuniqueID'(des 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")
-
Dans les exemples suivants, les instructions qui indiquent la condition ne permettent pas à GroupAdmins de répertorier tous les utilisateurs et groupes. Des instructions incluant le verbe
inspect sont ajoutées pour être complètes. Reportez-vous à la section Variables non applicables à une demande résultant en une demande refusée.Exemples :
-
Condition unique :
Condition unique pour un type de ressource (groupes)
Allow group GroupAdmins to manage groups in tenancy where target.group.name = /A-Users-*/ Allow group GroupAdmins to inspect groups in tenancyCondition unique pour de nombreux types de ressource (utilisateurs et groupes)
Allow group GroupAdmins to inspect users in tenancyAllow group GroupAdmins to use users in tenancy where target.group.name != 'Administrators'Allow group GroupAdmins to inspect groups in tenancyAllow group GroupAdmins to use groups in tenancy where target.group.name != 'Administrators'Plusieurs conditions pour une ressource (groupes)
Allow group NetworkAdmins to manage virtual-network-family in tenancy where target.compartment.id != 'ocid1.compartment.oc1.exampleuniqueID' -
Plusieurs conditions
La stratégie suivante permet à GroupAdmins de créer, mettre à jour ou supprimer tous les groupes dont la dénomination commence par "
A-", à l'exception du groupeA-Adminslui-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
Variables non applicables à une demande Résultat d'une demande refusée
Si la variable n'est pas applicable à la demande entrante, la condition renvoie la valeur false pour la demande et la demande est refusée. Par exemple, voici les instructions des stratégies de base qui, ensemble, permettent à quelqu'un d'ajouter des utilisateurs à n'importe quel groupe, à l'exclusion de Administrators :
Allow group GroupAdmins to use users in tenancy where target.group.name != 'Administrators'
Allow group GroupAdmins to use groups in tenancy where target.group.name != 'Administrators'
Si un utilisateur dans GroupAdmins tente d'appeler une opération d'API générale pour les utilisateurs, telle que ListUsers ou UpdateUser (ce qui vous permet de modifier la description de l'utilisateur), la demande est refusée, même si ces opérations d'API sont couvertes par use users. L'exemple d'instruction de stratégie pour use users inclut une variable target.group.name, mais la demande ListUsers ou UpdateUser n'indique pas de groupe. La demande est refusée car aucune valeur target.group.name n'a été fournie.
Pour accorder l'accès à un utilisateur général lorsqu'une opération d'API n'implique pas un groupe particulier, vous devez ajouter une autre instruction qui donne le niveau d'accès que vous voulez accorder mais n'inclut pas la condition. Par exemple, pour accorder l'accès à ListUsers, vous avez besoin d'une instruction similaire à cette instruction :
Allow group GroupAdmins to inspect users in tenancy
Pour octroyer l'accès à UpdateUser, vous devez disposer de l'instruction suivante (qui couvre également ListUsers car le verbe use inclut les capacités du verbeinspect) :
Allow group GroupAdmins to use users in tenancy
Ce concept général applique également tout autre type de ressource avec des variables cible, par exemple, ListGroups.
Contrôle d'accès basé sur des balises
Utilisez des conditions et un ensemble de variables de balise pour écrire des stratégies qui définissent l'accès en fonction des balises appliquées à une ressource. Vous pouvez contrôler l'accès à l'aide d'une balise qui existe sur la ressource demandant (groupe ou groupe dynamique dans la stratégie) ou sur la cible de la demande (ressource ou compartiment). Le contrôle d'accès basé sur les balises offre une flexibilité aux stratégies, ce qui vous permet de définir un accès couvrant les compartiments, les groupes et les ressources. Pour plus d'informations sur l'écriture de stratégies destinées à attribuer l'accès en fonction des balises, reportez-vous à Utilisation des balises pour gérer l'accès.