IAMJSONéléments de politique : opérateurs de conditions - 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.

IAMJSONéléments de politique : opérateurs de conditions

Utilisez les opérateurs de condition de l'élément Condition pour faire correspondre la clé de condition et la valeur de la politique avec les valeurs du contexte de la demande. Pour en savoir plus sur l'élément Condition, consultez IAMJSONéléments de politique : Condition.

L'opérateur de condition que vous pouvez utiliser dans une politique dépend de la clé de condition que vous choisissez. Vous pouvez choisir une clé de condition globale ou une clé de condition spécifique au service. Pour savoir quel opérateur de condition vous pouvez utiliser pour une clé de condition globale, veuillez consulter AWS clés contextuelles de condition globale. Pour savoir quel opérateur de condition vous pouvez utiliser pour une clé de condition spécifique à un service, consultez Actions, ressources et clés de condition pour AWS Services et choisissez le service que vous souhaitez consulter.

Important

Si la clé que vous spécifiez dans une condition de stratégie n'est pas présente dans le contexte de la requête, les valeurs ne correspondent pas et la condition est fausse. Si la condition de stratégie requiert qu'il n'y ait aucune correspondance de clé, tels que StringNotLike ou ArnNotLike et la touche de droite n'est pas présente, la condition est vraie. Cette logique s'applique à tous les opérateurs de condition sauf... IfExistset Contrôle nul. Ces opérateurs testent si la clé est présente (existe) dans le contexte de demande.

Les opérateurs de condition peuvent être regroupés dans les catégories suivantes :

Opérateurs de condition de chaîne

Les opérateurs de condition de chaîne permettent de créer des éléments Condition qui limitent l'accès après comparaison d'une clé à une valeur de chaîne.

Opérateur de condition Description

StringEquals

Correspondance exacte, respect de la casse

StringNotEquals

Correspondance négative

StringEqualsIgnoreCase

Correspondance exacte, non respect de la casse

StringNotEqualsIgnoreCase

Correspondance négative, non respect de la casse

StringLike

Correspondance avec respect de la casse. Les valeurs peuvent inclure un caractère générique (*) correspondant à plusieurs caractères et un caractère générique (?) correspondant à un seul caractère n'importe où dans la chaîne. Vous devez spécifier des caractères génériques pour obtenir des correspondances de chaînes partielles.

Note

Si une clé contient plusieurs valeurs, StringLike peut être qualifié avec les opérateurs d'ensemble ForAllValues:StringLike et ForAnyValue:StringLike. Pour de plus amples informations, veuillez consulter Clés de contexte à valeurs multiples.

StringNotLike

Correspondance avec non respect de la casse. Les valeurs peuvent inclure un caractère générique (*) correspondant à plusieurs caractères ou un caractère générique (?) correspondant à un seul caractère n'importe où dans la chaîne.

Par exemple, l'instruction suivante contient un élément Condition qui utilise la clé aws:PrincipalTag pour spécifier que le principal qui fait la requête doit être balisé avec la catégorie de tâche iamuser-admin .

{ "Version": "2012-10-17", "Statement": { "Effect": "Allow", "Action": "iam:*AccessKey*", "Resource": "arn:aws:iam::account-id:user/*", "Condition": {"StringEquals": {"aws:PrincipalTag/job-category": "iamuser-admin"}} } }

Si la clé que vous spécifiez dans une condition de politique n'est pas présente dans le contexte de demande, les valeurs ne correspondent pas. Dans cet exemple, la aws:PrincipalTag/job-category clé est présente dans le contexte de la demande si le principal utilise un IAM utilisateur auquel sont attachées des balises. Il est également inclus pour un principal utilisant un IAM rôle auquel sont attachés des tags ou des tags de session. Si un utilisateur sans la balise tente d'afficher ou de modifier une clé d'accès, la condition renvoie false et la demande est implicitement refusée par cette instruction.

Vous pouvez utiliser une variable de politique avec l'opérateur de condition String.

L'exemple suivant utilise l'opérateur de StringLike condition pour effectuer une correspondance de chaînes avec une variable de politique afin de créer une politique qui permet à un IAM utilisateur d'utiliser la console Amazon S3 pour gérer son propre « répertoire personnel » dans un compartiment Amazon S3. La politique autorise les actions spécifiées dans un compartiment S3 si l'élément s3:prefix correspond à l'un des modèles spécifiés.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "s3:ListAllMyBuckets", "s3:GetBucketLocation" ], "Resource": "arn:aws:s3:::*" }, { "Effect": "Allow", "Action": "s3:ListBucket", "Resource": "arn:aws:s3:::amzn-s3-demo-bucket", "Condition": {"StringLike": {"s3:prefix": [ "", "home/", "home/${aws:username}/" ]}} }, { "Effect": "Allow", "Action": "s3:*", "Resource": [ "arn:aws:s3:::amzn-s3-demo-bucket/home/${aws:username}", "arn:aws:s3:::amzn-s3-demo-bucket/home/${aws:username}/*" ] } ] }

Pour un exemple de politique qui montre comment utiliser l'Conditionélément pour restreindre l'accès aux ressources en fonction d'un ID d'application et d'un ID utilisateur pour OIDC la fédération, voirAmazon S3 : permet aux utilisateurs Amazon Cognito d'accéder aux objets dans leur compartiment.

Correspondance des caractères génériques

Les opérateurs de condition de chaîne réalisent une correspondance sans modèle qui n'applique pas de format prédéfini. ARNet les opérateurs de condition de date sont un sous-ensemble d'opérateurs de chaîne qui appliquent une structure à la valeur de la clé de condition. Lorsque vous utilisez des StringNotLike opérateurs StringLike or pour des correspondances de chaîne partielles avec une date ARN ou, la correspondance ignore quelle partie de la structure est associée à un caractère générique.

Par exemple, les conditions suivantes recherchent une correspondance partielle à un ARN en utilisant différents opérateurs de condition.

Lorsqu'elle ArnLike est utilisée, les parties partition, service, identifiant de compte, type de ressource et identifiant de ressource partiel ARN doivent correspondre exactement à celles du contexte de la demande. ARN Seuls la région et le chemin de ressource permettent une correspondance partielle.

"Condition": {"ArnLike": {"aws:SourceArn": "arn:aws:cloudtrail:*:111122223333:trail/*"}}

Lorsqu'elle StringLike est utilisée à la place de ArnLike, la mise en correspondance ignore la ARN structure et permet une correspondance partielle, quelle que soit la partie associée au caractère générique.

"Condition": {"StringLike": {"aws:SourceArn": "arn:aws:cloudtrail:*:111122223333:trail/*"}}
ARN ArnLike StringLike

arn:aws:cloudtrail:us-west-2:111122223333:trail/finance

Correspondance

Correspondance

arn:aws:cloudtrail:us-east-2:111122223333:trail/finance/archive

Correspondance

Correspondance

arn:aws:cloudtrail:us-east-2:444455556666:user/111122223333:trail/finance

Aucune correspondance

Correspondance

Opérateurs de condition numériques

Les opérateurs de condition numériques permettent de créer des éléments Condition qui limitent l'accès après comparaison d'une clé à un entier ou une valeur décimale.

Opérateur de condition Description

NumericEquals

Correspondance

NumericNotEquals

Correspondance négative

NumericLessThan

Correspondance « Inférieur à »

NumericLessThanEquals

Correspondance « Inférieur ou égal à »

NumericGreaterThan

Correspondance « Supérieur à »

NumericGreaterThanEquals

Correspondance « Supérieur ou égal à »

Par exemple, l'instruction suivante contient un élément Condition qui utilise l'opérateur de condition NumericLessThanEquals avec la clé s3:max-keys pour spécifier que le demandeur peut répertorier jusqu'à 10 objets dans amzn-s3-demo-bucket à la fois.

{ "Version": "2012-10-17", "Statement": { "Effect": "Allow", "Action": "s3:ListBucket", "Resource": "arn:aws:s3:::amzn-s3-demo-bucket", "Condition": {"NumericLessThanEquals": {"s3:max-keys": "10"}} } }

Si la clé que vous spécifiez dans une condition de politique n'est pas présente dans le contexte de demande, les valeurs ne correspondent pas. Dans cet exemple, la clé s3:max-keys est toujours présente dans la demande lorsque vous effectuez l'opération ListBucket. Si cette politique autorisait toutes les opérations Amazon S3, seules les opérations incluant la clé de contexte max-keys avec une valeur inférieure ou égale à 10 seraient autorisées.

Vous ne pouvez pas utiliser une variable de politique avec l'opérateur de condition Numeric.

Opérateurs de condition de date

Les opérateurs de condition de date permettent de créer des éléments Condition qui limitent l'accès après comparaison d'une clé à une valeur date/heure. Vous pouvez utiliser ces opérateurs de condition avec la clé aws:CurrentTime ou aws:EpochTime. Vous devez spécifier les valeurs de date/heure avec l'une des implémentations du W3C des formats de date ISO 8601 ou dans epoch () time. UNIX

Note

Les caractères génériques ne sont pas autorisés dans les opérateurs de condition de date.

Opérateur de condition Description

DateEquals

Correspondance à une date spécifique

DateNotEquals

Correspondance négative

DateLessThan

Correspondance avant une date et heure spécifiques

DateLessThanEquals

Correspondance à ou avant une date et heure spécifiques

DateGreaterThan

Correspondance après une date et heure spécifiques

DateGreaterThanEquals

Correspondance à ou après une date et heure spécifiques

Par exemple, l'instruction suivante contient un élément Condition qui utilise l'opérateur de condition DateGreaterThan avec la clé aws:TokenIssueTime. Cette condition spécifie que les informations d'identification de sécurité temporaires utilisées pour effectuer la demande ont été publiées en 2020. Cette politique peut être mise à jour par programme tous les jours pour s'assurer que les membres du compte utilisent de nouvelles informations d'identification.

{ "Version": "2012-10-17", "Statement": { "Effect": "Allow", "Action": "iam:*AccessKey*", "Resource": "arn:aws:iam::account-id:user/*", "Condition": {"DateGreaterThan": {"aws:TokenIssueTime": "2020-01-01T00:00:01Z"}} } }

Si la clé que vous spécifiez dans une condition de politique n'est pas présente dans le contexte de demande, les valeurs ne correspondent pas. La clé aws:TokenIssueTime n'est présente dans le contexte de demande que lorsque le principal utilise des informations d'identification temporaires pour effectuer la demande. La clé n'est pas présente dans AWS CLI, AWS API, ou AWS SDKdemandes effectuées à l'aide de clés d'accès. Dans cet exemple, si un IAM utilisateur tente de consulter ou de modifier une clé d'accès, la demande est refusée.

Vous ne pouvez pas utiliser une variable de politique avec l'opérateur de condition Date.

Opérateurs de condition booléens

Les opérateurs de condition booléens permettent de créer des éléments Condition qui limitent l'accès après comparaison d'une clé à « true » ou « false ».

Opérateur de condition Description

Bool

Correspondance booléenne

Par exemple, cette politique basée sur l'identité utilise l'opérateur de Bool condition avec la aws:SecureTransportclé pour refuser la réplication d'objets et de balises d'objets vers le compartiment de destination et son contenu si la demande n'est pas terminée. SSL

Important

Cette politique ne permet aucune action. Utilisez cette stratégie conjointement à d'autres stratégies qui autorisent des actions spécifiques.

{ "Version": "2012-10-17", "Statement": [ { "Sid": "BooleanExample", "Action": "s3:ReplicateObject", "Effect": "Deny", "Resource": [ "arn:aws:s3:::amzn-s3-demo-bucket", "arn:aws:s3:::amzn-s3-demo-bucket/*" ], "Condition": { "Bool": { "aws:SecureTransport": "false" } } } ] }

Si la clé que vous spécifiez dans une condition de politique n'est pas présente dans le contexte de demande, les valeurs ne correspondent pas. Le contexte de la demande aws:SecureTransport renvoie true ou false.

Vous pouvez utiliser une variable de politique avec l'opérateur de condition Boolean.

Opérateurs de condition binaires

L'opérateur de condition BinaryEquals permet de créer des éléments Condition qui analysent les valeurs de clé qui utilisent un format binaire. Il compare la valeur de la clé spécifiée, octet par octet, à une représentation encodée au format Base64 de la valeur binaire dans la politique.

"Condition" : { "BinaryEquals": { "key" : "QmluYXJ5VmFsdWVJbkJhc2U2NA==" } }

Si la clé que vous spécifiez dans une condition de politique n'est pas présente dans le contexte de demande, les valeurs ne correspondent pas.

Vous ne pouvez pas utiliser une variable de politique avec l'opérateur de condition Binary.

Opérateurs de condition d'adresse IP

Les opérateurs de condition d'adresse IP vous permettent de créer Condition des éléments qui limitent l'accès en comparant une clé à une IPv6 adresse IPv4 ou à une plage d'adresses IP. Vous utilisez ces opérateurs avec la clé aws:SourceIp. La valeur doit être au CIDR format standard (par exemple, 203.0.113.0/24 ou 2001 : : 1234:5678 : DB8 :/64). Si vous spécifiez une adresse IP sans le préfixe de routage associé, IAM utilise la valeur de préfixe par défaut de. /32

Momentanée AWS support des servicesIPv6, en utilisant : : pour représenter une plage de 0. Pour savoir si un service est compatibleIPv6, consultez sa documentation.

Opérateur de condition Description

IpAddress

Adresse IP ou plage d'adresses IP spécifiée

NotIpAddress

Toutes les adresses IP à l'exception de l'adresse IP ou de la plage d'adresse IP spécifiée

Par exemple, l'instruction suivante utilise l'opérateur de condition IpAddress avec la clé aws:SourceIp pour spécifier que la demande doit provenir d'une adresse IP comprise dans la plage 203.0.113.0 à 203.0.113.255.

{ "Version": "2012-10-17", "Statement": { "Effect": "Allow", "Action": "iam:*AccessKey*", "Resource": "arn:aws:iam::account-id:user/*", "Condition": {"IpAddress": {"aws:SourceIp": "203.0.113.0/24"}} } }

La clé de condition aws:SourceIp est résolue à l'aide de l'adresse IP d'où provient la demande. Si les demandes proviennent d'une EC2 instance Amazon, elles sont aws:SourceIp évaluées selon l'adresse IP publique de l'instance.

Si la clé que vous spécifiez dans une condition de politique n'est pas présente dans le contexte de demande, les valeurs ne correspondent pas. La aws:SourceIp clé est toujours présente dans le contexte de la demande, sauf lorsque le demandeur utilise un VPC point de terminaison pour effectuer la demande. Dans ce cas, la condition renvoie false et la demande est implicitement refusée par cette instruction.

Vous ne pouvez pas utiliser une variable de politique avec l'opérateur de condition IpAddress.

L'exemple suivant montre comment combiner IPv4 les IPv6 adresses afin de couvrir toutes les adresses IP valides de votre organisation. Nous vous recommandons de mettre à jour les politiques de votre organisation avec vos plages d'IPv6adresses en plus des IPv4 plages dont vous disposez déjà afin de vous assurer que les politiques continuent de fonctionner pendant votre transitionIPv6.

{ "Version": "2012-10-17", "Statement": { "Effect": "Allow", "Action": "someservice:*", "Resource": "*", "Condition": { "IpAddress": { "aws:SourceIp": [ "203.0.113.0/24", "2001:DB8:1234:5678::/64" ] } } } }

La clé de aws:SourceIp condition ne fonctionne dans une JSON politique que si vous appelez le testé API directement en tant qu'utilisateur. En revanche, si vous utilisez un service pour appeler le service cible en votre nom, ce service voit l'adresse IP du service appelant plutôt que celle de l'utilisateur d'origine. Cela peut se produire, par exemple, si vous utilisez AWS CloudFormation pour appeler Amazon EC2 afin de créer des instances pour vous. Il n'existe actuellement aucun moyen de transmettre l'adresse IP d'origine via un service d'appel au service cible à des fins d'évaluation dans le cadre d'une JSON politique. Pour ces types d'APIappels de service, n'utilisez pas la clé de aws:SourceIp condition.

Opérateurs de condition Amazon Resource Name (ARN)

Les opérateurs de condition Amazon Resource Name (ARN) vous permettent de créer Condition des éléments qui limitent l'accès en comparant une clé à unARN. Le ARN est considéré comme une chaîne.

Opérateur de condition Description

ArnEquals, ArnLike

Correspondance entre majuscules et minuscules des. ARN Chacun des six composants séparés par des points ARN est vérifié séparément et chacun peut inclure des caractères génériques à plusieurs caractères (*) ou des caractères génériques à caractère unique (?). Les opérateurs de condition ArnEquals et ArnLike se comportent de manière identique.

ArnNotEquals, ArnNotLike

Correspondance annulée pour. ARN Les opérateurs de condition ArnNotEquals et ArnNotLike se comportent de manière identique.

Vous pouvez utiliser une variable de politique avec l'opérateur de condition ARN.

L'exemple de politique basée sur les ressources suivant montre une politique attachée à une SQS file d'attente Amazon à laquelle vous souhaitez envoyer SNS des messages. Cela SNS autorise Amazon à envoyer des messages à la file (ou aux files d'attente) de votre choix, mais uniquement si le service envoie les messages au nom d'un ou de plusieurs SNS sujets Amazon en particulier. Vous spécifiez la file d'attente dans le Resource champ et le SNS sujet Amazon comme valeur de la SourceArn clé.

{ "Version": "2012-10-17", "Statement": { "Effect": "Allow", "Principal": {"AWS": "123456789012"}, "Action": "SQS:SendMessage", "Resource": "arn:aws:sqs:REGION:123456789012:QUEUE-ID", "Condition": {"ArnEquals": {"aws:SourceArn": "arn:aws:sns:REGION:123456789012:TOPIC-ID"}} } }

Si la clé que vous spécifiez dans une condition de politique n'est pas présente dans le contexte de demande, les valeurs ne correspondent pas. La clé aws:SourceArn figure dans le contexte de demande uniquement si une ressource déclenche un service pour appeler un autre service au nom du propriétaire de la ressource. Si un IAM utilisateur tente d'effectuer cette opération directement, la condition est renvoyée false et la demande est implicitement refusée par cette instruction.

... IfExists opérateurs de conditions

Vous pouvez ajouter IfExists à la fin de n'importe quel nom d'opérateur de condition, à l'exception de la condition Null, par exemple,StringLikeIfExists. Vous faites cela pour dire « Si la clé de condition est présente dans le contexte de la demande, traitez la clé comme indiqué dans la politique. Si la clé n'est pas présente, la condition évalue l'élément de condition comme vrai. » Les autres éléments de condition dans l'instruction peuvent toujours se traduire par une absence de correspondance, mais pas par une clé manquante lors de la vérification avec ...IfExists. Si vous utilisez un "Effect": "Deny" élément avec un opérateur de condition annuléStringNotEqualsIfExists, la demande est toujours refusée même si la clé de condition n'est pas présente.

Exemple d'utilisation de IfExists

De nombreuses clés de condition contiennent des informations se rapportant à un type spécifique de ressources et elles ne sont présentes que lorsque vous accédez à ce type de ressources. Ces clés de condition n'existent pas pour les autres types de ressources. Le fait que l'instruction ne s'applique qu'à un type spécifique de ressources ne pose pas problème. Toutefois, dans certains scénarios, une même instruction peut s'appliquer à plusieurs types de ressources, par exemple lorsque l'instruction de politique référence les actions de plusieurs services ou lorsqu'une action donnée d'un service accède à différents types de ressources dans un même service. Dans ce cas, l'inclusion d'une clé de condition applicable uniquement à une des ressources dans l'instruction de politique peut provoquer l'échec de l'élément Condition et de ce fait, l'élément "Effect" ne s'applique pas.

Prenons l'exemple de politique suivant :

{ "Version": "2012-10-17", "Statement": { "Sid": "THISPOLICYDOESNOTWORK", "Effect": "Allow", "Action": "ec2:RunInstances", "Resource": "*", "Condition": {"StringLike": {"ec2:InstanceType": [ "t1.*", "t2.*", "m3.*" ]}} } }

L'intention de la politique précédente est de permettre à l'utilisateur de lancer n'importe quelle instance de type t1, t2 ou m3. Toutefois, le lancement d'une instance requiert non seulement l'accès à l'instance proprement dite, mais également à de nombreuses ressources telles que des images, des paires de clés, des groupes de sécurité, etc. L'ensemble de l'instruction est évalué par rapport à chaque ressource requise pour le lancement de l'instance. Ces ressources supplémentaires n'ont pas la clé de condition ec2:InstanceType et, par conséquent, la vérification StringLike échoue et l'utilisateur n'est autorisé à lancer aucun type d'instance.

Pour éviter ce problème, utilisez l'opérateur de condition StringLikeIfExists à la place. De cette façon, le test n'est effectué que si la clé de condition existe. Cela peut être interprété comme suit : « Si la ressource en cours de vérification est dotée d'une clé de condition ec2:InstanceType, l'action peut uniquement être autorisée si la valeur de la clé commence par t1., t2. ou m3.. Si la ressource en cours de vérification n'est pas dotée de cette clé de condition, peu importe. » L'astérisque (*) figurant dans les valeurs des clés de condition, lorsqu'il est utilisé avec l'opérateur de condition StringLikeIfExists, est interprété comme un caractère générique pour obtenir des correspondances de chaînes partielles. L'instruction DescribeActions inclut les actions requises pour afficher l'instance dans la console.

{ "Version": "2012-10-17", "Statement": [ { "Sid": "RunInstance", "Effect": "Allow", "Action": "ec2:RunInstances", "Resource": "*", "Condition": { "StringLikeIfExists": { "ec2:InstanceType": [ "t1.*", "t2.*", "m3.*" ]}} }, { "Sid": "DescribeActions", "Effect": "Allow", "Action": [ "ec2:DescribeImages", "ec2:DescribeInstances", "ec2:DescribeVpcs", "ec2:DescribeKeyPairs", "ec2:DescribeSubnets", "ec2:DescribeSecurityGroups" ], "Resource": "*" }] }

Opérateur de condition pour vérifier l'existence de clés de condition

Utilisez un opérateur de condition Null pour vérifier si une clé de condition est absente au moment de l'autorisation. Dans l'instruction de politique, utilisez true (la clé n'existe pas ; elle est nulle) ou false (la clé existe et sa valeur n'est pas nulle).

Vous ne pouvez pas utiliser une variable de politique avec l'opérateur de condition Null.

Par exemple, vous pouvez utiliser cet opérateur de condition pour déterminer si un utilisateur effectue l'opération à l'aide de ses propres informations d'identification ou d'informations d'identification temporaires. S'il utilise des informations d'identification temporaires, la clé aws:TokenIssueTime existe et elle est dotée d'une valeur. L'exemple suivant montre une condition selon laquelle l'utilisateur ne doit pas utiliser d'informations d'identification temporaires (la clé ne doit pas exister) pour qu'il puisse utiliser Amazon EC2API.

{ "Version": "2012-10-17", "Statement":{ "Action":"ec2:*", "Effect":"Allow", "Resource":"*", "Condition":{"Null":{"aws:TokenIssueTime":"true"}} } }