Conditions
L'élément de conditions facultatives d'un énoncé de politique limite l'accès en fonction des attributs fournis dans le service IAM.
Une condition retourne des ressources en fonction des paramètres spécifiés. Par exemple, utilisez une condition pour retourner des ressources dont le nom contient certains caractères.
Syntaxe pour une seule condition : variable =|!= value
Syntaxe pour plusieurs conditions : any|all {<condition>,<condition>,...}
Pour créer un OU logique pour un jeu de conditions, utilisez any
. Pour créer un ET logique pour un jeu de conditions, utilisez all
.
La correspondance de condition ignore les noms sensibles à la casse. Par exemple, une condition pour un seau nommé "BucketA" correspond également à un seau nommé "bucketA".
- Chaîne :
'johnsmith@example.com'
'ocid1.compartment.oc1.exampleuniqueID'
(Des apostrophes doivent encadrer la valeur)
- Schéma :
-
/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 énoncés qui spécifient la condition ne permettent pas à GroupAdmins de lister tous les utilisateurs et les groupes. Des énoncés, y compris le verbe
inspect
, sont ajoutés à des fins d'exhaustivité. Voir Variables non applicables à un résultat de demande dans 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 tenancy
Condition unique pour de nombreux types de ressource (utilisateurs et groupes)
Allow group GroupAdmins to inspect users in tenancy
Allow group GroupAdmins to use users in tenancy where target.group.name != 'Administrators'
Allow group GroupAdmins to inspect groups in tenancy
Allow 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 politique suivante permet à GroupAdmins de créer, mettre à jour ou supprimer des groupes dont le nom commence par "
A-
", à l'exception du groupeA-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
Variables non applicables à un résultat de demande dans une demande refusée
Si la variable n'est pas applicable à la demande entrante, la condition évalue la demande comme false et la demande est refusée. Par exemple, voici quelques énoncés de base qui permettent d'ajouter ou de supprimer des utilisateurs dans tout groupe à l'exception 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 a tenté d'appeler une opération d'API générale pour les utilisateurs, telle que ListUsers
ou UpdateUser
(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'énoncé de politique pour use users
inclut une variable target.group.name
, mais la demande ListUsers
ou UpdateUser
ne spécifie pas de groupe. La demande est refusée, car aucune 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 un autre énoncé qui donne le niveau d'accès que vous souhaitez accorder, mais qui n'inclut pas la condition. Par exemple, pour accorder l'accès à ListUsers
, vous avez besoin d'un énoncé similaire à celui-ci :
Allow group GroupAdmins to inspect users in tenancy
Pour accorder l'accès à UpdateUser
, vous avez besoin de cet énoncé qui couvre également ListUsers
car le verbe use
inclut les capacités du verbe inspect
:
Allow group GroupAdmins to use users in tenancy
Ce concept général applique également tout autre type de ressource avec des variables cibles, par exemple ListGroups.
Contrôle d'accès basé sur des marqueurs
Utilisez des conditions et un jeu de variables de marqueur pour écrire des politiques qui définissent l'accès en fonction des marqueurs appliqués à une ressource. Vous pouvez contrôler l'accès en fonction d'un marqueur qui existe sur la ressource à l'origine de la demande (groupe ou groupe dynamique de la politique) ou sur la cible de la demande (ressource ou compartiment). Le contrôle d'accès basé sur des marqueurs offre une flexibilité aux politiques, ce qui vous permet de définir un accès qui couvre des compartiments, des groupes et des ressources. Pour plus de détails sur l'écriture de politiques permettant de définir la portée de l'accès en fonction de marqueurs, voir Utilisation de marqueurs pour gérer l'accès.