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.

Important

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")

Note

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

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.