Conditions avec plusieurs clés ou valeurs de contexte - AWS Identity and Access Management

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

Conditions avec plusieurs clés ou valeurs de contexte

Vous pouvez utiliser l'élément Condition d'une politique pour tester plusieurs clés ou plusieurs valeurs de contexte pour une seule clé de contexte dans une demande. Lorsque vous faites une demande à AWS, soit par programmation, soit par le biais du AWS Management Console, votre demande inclut des informations sur votre principal, votre activité, vos tags, etc. Vous pouvez utiliser des clés de contexte pour tester les valeurs des clés de contexte correspondantes dans la demande, avec les clés de contexte spécifiées dans la condition de politique. Pour en savoir plus sur les informations et les données incluses dans une demande, consultez Contexte de la demande.

Logique d'évaluation pour plusieurs clés ou valeurs de contexte

Un élément Condition peut contenir plusieurs opérateurs de condition, et chaque opérateur de condition peut également inclure plusieurs paires clé-valeur de contexte. La plupart des clés de contexte prennent en charge l'utilisation de plusieurs valeurs, sauf indication contraire.

  • Si votre instruction de politique dispose de plusieurs opérateurs de condition, ils sont évalués à l'aide d'un opérateur logique AND.

  • Si votre instruction de politique dispose de plusieurs clés de contexte attachées à un même opérateur de condition, celles-ci sont évaluées à l'aide d'un opérateur logique AND.

  • Si un même opérateur de condition comprend plusieurs valeurs pour une clé de contexte, ces valeurs sont évaluées à l'aide d'un opérateur logique OR.

  • Si un même opérateur de condition de correspondance négative comprend plusieurs valeurs pour une clé de contexte, ces valeurs sont évaluées à l'aide d'un opérateur logique NOR.

Toutes les clés de contexte d'un bloc d'éléments de condition doivent être résolues sur true (vrai) pour invoquer l'effet Allow ou Deny souhaité. La figure suivante illustre la logique d'évaluation d'une condition comportant plusieurs opérateurs de condition et des paires clé-valeur de contexte.

Bloc de conditions indiquant comment AND et OR sont appliqués à plusieurs clés et valeurs de contexte

Par exemple, la politique de compartiment S3 suivante illustre la manière dont la figure précédente est représentée dans une politique. Le bloc de conditions comprend les opérateurs de condition StringEquals et ArnLike, et les clés de contexte aws:PrincipalTag et aws:PrincipalArn. Afin d'invoquer l'effet Allow ou Deny souhaité, toutes les clés de contexte du bloc de conditions doivent être résolues sur true (vrai). L'utilisateur qui fait la demande doit disposer des deux clés de balise du principal, department et role, qui incluent l'une des valeurs de clés de balise spécifiées dans la politique. En outre, le principal ARN de l'utilisateur qui fait la demande doit correspondre à l'une des aws:PrincipalArn valeurs spécifiées dans la politique pour être évalué comme vrai.

{ "Version": "2012-10-17", "Statement": [ { "Sid": "ExamplePolicy", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::222222222222:root" }, "Action": "s3:ListBucket", "Resource": "arn:aws:s3:::amzn-s3-demo-bucket", "Condition": { "StringEquals": { "aws:PrincipalTag/department": [ "finance", "hr", "legal" ], "aws:PrincipalTag/role": [ "audit", "security" ] }, "ArnLike": { "aws:PrincipalArn": [ "arn:aws:iam::222222222222:user/Ana", "arn:aws:iam::222222222222:user/Mary" ] } } } ] }

Logique d'évaluation des opérateurs de condition de correspondance négative

Certains opérateurs de condition, tels que StringNotEquals ou ArnNotLike, utilisent la correspondance négative pour comparer les paires clé-valeur de contexte de votre politique aux paires clé-valeur de contexte d'une demande. Lorsque plusieurs valeurs sont spécifiées pour une même clé de contexte dans une politique avec des opérateurs de condition de correspondance négative, les autorisations effectives fonctionnent comme un opérateur logique NOR. Dans le cas d'une correspondance négative, un opérateur logique NOR ou NOT OR renvoie la valeur true (vrai) uniquement si toutes les valeurs sont évaluées comme false (fausses).

La figure suivante illustre la logique d'évaluation d'une condition comportant plusieurs opérateurs de condition et des paires clé-valeur de contexte. La figure inclut un opérateur de condition de correspondance négative pour la clé de contexte 3.

Bloc de condition indiquant comment AND et OR sont appliqués à plusieurs clés et valeurs de contexte lorsqu'un opérateur de condition correspondant annulé est utilisé

Par exemple, la politique de compartiment S3 suivante illustre la manière dont la figure précédente est représentée dans une politique. Le bloc de conditions comprend les opérateurs de condition StringEquals et ArnNotLike, et les clés de contexte aws:PrincipalTag et aws:PrincipalArn. Afin d'invoquer l'effet Allow ou Deny souhaité, toutes les clés de contexte du bloc de conditions doivent être résolues sur true (vrai). L'utilisateur qui fait la demande doit disposer des deux clés de balise du principal, department et role, qui incluent l'une des valeurs de clés de balise spécifiées dans la politique. Étant donné que l'opérateur de ArnNotLike condition utilise une correspondance négative, le principal ARN de l'utilisateur qui fait la demande ne doit correspondre à aucune des aws:PrincipalArn valeurs spécifiées dans la politique pour être évalué comme vrai.

{ "Version": "2012-10-17", "Statement": [ { "Sid": "ExamplePolicy", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::222222222222:root" }, "Action": "s3:ListBucket", "Resource": "arn:aws:s3:::amzn-s3-demo-bucket", "Condition": { "StringEquals": { "aws:PrincipalTag/department": [ "finance", "hr", "legal" ], "aws:PrincipalTag/role": [ "audit", "security" ] }, "ArnNotLike": { "aws:PrincipalArn": [ "arn:aws:iam::222222222222:user/Ana", "arn:aws:iam::222222222222:user/Mary" ] } } } ] }