

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.

# Éléments de politique JSON IAM : Condition
<a name="reference_policies_elements_condition"></a>

L'élément `Condition` (ou *bloc* `Condition`) vous permet de spécifier des conditions lorsqu'une politique est appliquée. L’élément `Condition` est facultatif. Dans l'élément `Condition`, vous créez des expressions dans lesquelles vous utilisez des [opérateurs de condition](reference_policies_elements_condition_operators.md) (égal, inférieur à, etc.) pour faire correspondre les clés et valeurs de contexte de la politique avec les clés et valeurs du contexte de la demande. Pour de plus amples informations sur le contexte de la demande, veuillez consulter [Composants d’une requête](intro-structure.md#intro-structure-request).

```
"Condition" : { "{{{condition-operator}}}" : { "{{{condition-key}}}" : "{{{condition-value}}}" }}
```

La clé de contexte que vous spécifiez dans une condition de politique peut être une [clé de contexte de condition globale](reference_policies_condition-keys.md) ou une clé de contexte spécifique au service. Les clés de contexte de condition globale possèdent le préfixe `aws:`. Les clés de contexte spécifiques au service possèdent le préfixe du service. Par exemple, Amazon EC2 vous permet d'écrire une condition à l'aide de la clé de contexte `ec2:InstanceType`, qui est propre à ce service. Pour connaître les clés de contexte IAM spécifiques au service ayant le préfixe `iam:`, veuillez consulter la rubrique [Clés de contexte IAM et de AWS STS condition](reference_policies_iam-condition-keys.md).

Les *noms* de clé de contexte ne sont pas sensibles à la casse. Par exemple, inclure la clé de contexte `aws:SourceIP` revient à tester `AWS:SourceIp`. La sensibilité à la casse des *valeurs* des clés de contexte dépend de l'[opérateur de condition](reference_policies_elements_condition_operators.md) que vous utilisez. Par exemple, la condition suivante inclut l'opérateur `StringEquals` pour garantir que seules les demandes effectuées par `john` correspondent. Les utilisateurs nommés `John` se voient refuser l'accès.

```
"Condition" : { "StringEquals" : { "aws:username" : "john" }}
```

La condition suivante utilise l'opérateur [`StringEqualsIgnoreCase`](reference_policies_elements_condition_operators.md#Conditions_String) pour la correspondance avec les utilisateurs nommés `john` ou `John`.

```
"Condition" : { "StringEqualsIgnoreCase" : { "aws:username" : "john" }}
```

Certaines clés de contexte prennent en charge des paires clé-valeur qui vous permettent de spécifier une partie du nom de clé. Les exemples incluent la clé de [`aws:RequestTag/{{tag-key}}`](reference_policies_condition-keys.md#condition-keys-requesttag)contexte AWS KMS [https://docs.aws.amazon.com/kms/latest/developerguide/policy-conditions.html#conditions-kms-encryption-context](https://docs.aws.amazon.com/kms/latest/developerguide/policy-conditions.html#conditions-kms-encryption-context), la clé de contexte et la clé de [`ResourceTag/{{tag-key}}`](reference_policies_condition-keys.md#condition-keys-resourcetag)contexte prises en charge par plusieurs services.
+ Si vous utilisez la clé de contexte `ResourceTag/{{tag-key}}` pour un service comme [Amazon EC2](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/iam-policy-structure.html#amazon-ec2-keys), vous devez spécifier un nom de clé pour `tag-key`. 
+ **Les noms de clé ne sont pas sensibles à la casse.** Cela signifie que si vous spécifiez `"aws:ResourceTag/TagKey1": "Value1"` dans l'élément de condition de votre politique, la condition correspond à une clé de balise de ressource nommée `TagKey1` ou `tagkey1`, mais pas aux deux.
+ AWS les services qui prennent en charge ces attributs peuvent vous permettre de créer plusieurs noms de clés qui ne diffèrent qu'au cas par cas. Par exemple, vous pouvez baliser une instance Amazon EC2 avec les interfaces `ec2=test1` et `EC2=test2`. Lorsque vous utilisez une condition comme `"aws:ResourceTag/EC2": "test1"` pour autoriser l'accès à cette ressource, le nom de clé correspond aux deux balises, mais une seule valeur correspond. Cela peut entraîner des échecs de condition inattendus.

**Important**  
En tant que bonne pratique, assurez-vous que les membres de votre compte suivent une convention de dénomination cohérente pour les attributs avec paire clé-valeur. Les exemples incluent les balises ou les contextes de chiffrement AWS KMS . Vous pouvez l'appliquer en utilisant la clé de [`aws:TagKeys`](reference_policies_condition-keys.md#condition-keys-tagkeys)contexte pour le balisage ou [https://docs.aws.amazon.com/kms/latest/developerguide/policy-conditions.html#conditions-kms-encryption-context-keys](https://docs.aws.amazon.com/kms/latest/developerguide/policy-conditions.html#conditions-kms-encryption-context-keys)pour le contexte de AWS KMS chiffrement.
+ Pour obtenir une liste de tous les opérateurs de condition et une description de leur fonctionnement, veuillez consulter la rubrique [Opérateurs de condition](reference_policies_elements_condition_operators.md).
+ Sauf indication contraire, toutes les clés de contexte peuvent comporter plusieurs valeurs. Pour savoir comment traiter des clés de contexte qui ont plusieurs valeurs, veuillez consulter la rubrique [Définir les opérateurs pour les clés de contexte à valeurs multiples](reference_policies_condition-single-vs-multi-valued-context-keys.md#reference_policies_condition-multi-valued-context-keys).
+ Pour obtenir la liste de l'ensemble des clés de contexte disponibles dans le monde entier, veuillez consulter la rubrique [AWS clés contextuelles de condition globale](reference_policies_condition-keys.md).
+ Pour les clés de contexte de condition définies par chaque service, voir [Actions, ressources et clés de condition pour les AWS services](reference_policies_actions-resources-contextkeys.html).

## Contexte de la demande
<a name="AccessPolicyLanguage_RequestContext"></a>

Lorsqu'un [principal](https://docs.aws.amazon.com/glossary/latest/reference/glos-chap.html?icmpid=docs_homepage_addtlrcs#principal) fait une [demande](intro-structure.md#intro-structure-request) à AWS, AWS rassemble les informations de la demande dans un contexte de demande. Le contexte de la demande comprend des informations sur le principal, les ressources, les actions et d’autres propriétés environnementales. L’évaluation de la politique fait correspondre les propriétés de la politique aux propriétés envoyées dans la demande afin d’évaluer et d’autoriser les actions que vous pouvez effectuer dans AWS.

Vous pouvez utiliser l'élément `Condition` d'une politique JSON pour tester des clés de contexte spécifiques par rapport au contexte de la demande. Par exemple, vous pouvez créer une politique qui utilise la clé de CurrentTime contexte [aws :](reference_policies_condition-keys.md#condition-keys-currenttime) pour [permettre à un utilisateur d'effectuer des actions dans un intervalle de dates spécifique uniquement](reference_policies_examples_aws-dates.md).

L’exemple suivant montre une représentation du contexte de la demande lorsque Martha Rivera envoie une demande pour désactiver son dispositif MFA.

```
Principal: AROA123456789EXAMPLE
Action: iam:DeactivateMFADevice
Resource: arn:aws:iam::user/martha
Context:
  – aws:UserId=AROA123456789EXAMPLE:martha
  – aws:PrincipalAccount=1123456789012
  – aws:PrincipalOrgId=o-example
  – aws:PrincipalARN=arn:aws:iam::1123456789012:assumed-role/TestAR
  – aws:MultiFactorAuthPresent=true
  – aws:MultiFactorAuthAge={{2800}}
  – aws:CurrentTime=...
  – aws:EpochTime=...
  – aws:SourceIp=...
```

Le contexte de la demande est mis en correspondance avec une politique qui autorise les utilisateurs à supprimer leur propre dispositif authentification multifactorielle (MFA), mais uniquement s’ils se sont connectés à l’aide de la MFA au cours de la dernière heure (3 600 secondes).

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": {
        "Sid": "AllowRemoveMfaOnlyIfRecentMfa",
        "Effect": "Allow",
        "Action": [
            "iam:DeactivateMFADevice"
        ],
        "Resource": "arn:aws:iam::*:user/${aws:username}",
        "Condition": {
            "NumericLessThanEquals": {"aws:MultiFactorAuthAge": "{{3600}}"}
        }
    }
}
```

------

Dans cet exemple, la politique correspond au contexte de la demande : l’action est la même, la ressource correspond au caractère générique « \* » et la valeur pour `aws:MultiFactorAuthAge` est 2 800, qui est inférieure à 3 600. La politique autorise donc cette demande d’autorisation.

AWS évalue chaque clé de contexte de la politique et renvoie une valeur *vraie* ou *fausse*. L'absence de clé de contexte dans la demande est considérée comme une absence de correspondance.

Le contexte de la demande peut renvoyer les valeurs suivantes :
+ **True** : si le demandeur s'est connecté avec MFA au cours de la dernière heure ou moins, la condition renvoie la valeur *true*.
+ **False** : si le demandeur s'est connecté avec MFA il y a plus d'une heure, la condition renvoie la valeur *false*.
  + **Absence : si le demandeur a fait une demande à l'aide de ses clés d'accès utilisateur IAM dans l' AWS API AWS CLI or, la clé n'est pas présente**. Dans ce cas, la clé est manquante et il n'y a pas de correspondance.

**Note**  
Dans certains cas, lorsque la valeur de la clé de condition n’est pas présente, la condition peut toujours retourner vraie. Par exemple, si vous ajoutez le qualificateur `ForAllValues`, la demande renvoie vrai si la clé de contexte ne figure pas dans la demande. Pour éviter que des clés de contexte manquantes ou des clés de contexte contenant des valeurs vides ne soient considérées comme vraies, vous pouvez inclure l’[opérateur de condition Null](reference_policies_elements_condition_operators.md#Conditions_Null) dans votre politique avec une valeur `false` pour vérifier si la clé de contexte existe et si sa valeur n’est pas nulle.

## Bloc Condition
<a name="AccessPolicyLanguage_ConditionBlock"></a>

L'exemple suivant illustre le format de base d'un élément `Condition` :

```
"Condition": {"StringLike": {"s3:prefix": ["jane/*"]}}
```

Une valeur de la demande est représentée par une clé de contexte. Dans ce cas, il s'agit de `s3:prefix`. La valeur clé de contexte est comparée à une valeur que vous spécifiez comme valeur littérale, par exemple `jane/*`. Le type de comparaison à effectuer est spécifié par l'[opérateur de condition](reference_policies_elements_condition_operators.md) (ici, `StringLike`). Vous pouvez créer des conditions qui comparent des chaînes, des dates, des numéros et autres à l'aide d'opérateurs de comparaison booléens standard comme est égal à, supérieur à ou inférieur à. Lorsque vous utilisez des [opérateurs de chaîne](reference_policies_elements_condition_operators.md#Conditions_String) ou des [opérateurs ARN](reference_policies_elements_condition_operators.md#Conditions_ARN), vous pouvez également utiliser une [variable de politique](reference_policies_variables.md) dans la valeur de clé de contexte. L'exemple suivant inclut la variable `aws:username`. 

```
"Condition": {"StringLike": {"s3:prefix": ["${aws:username}/*"]}}
```

Dans certains cas, les clés de contexte peuvent contenir plusieurs valeurs. Par exemple, une demande à Amazon DynamoDB peut retourner ou mettre à jour plusieurs attributs d'une table. Une politique d'accès aux tables DynamoDB peut inclure la clé de contexte `dynamodb:Attributes`, qui contient tous les attributs spécifiés dans la demande. Vous pouvez tester les divers attributs de la demande par rapport à une liste d'attributs autorisés dans une politique à l'aide d'opérateurs de définition dans l'élément `Condition`. Pour de plus amples informations, veuillez consulter [Définir les opérateurs pour les clés de contexte à valeurs multiples](reference_policies_condition-single-vs-multi-valued-context-keys.md#reference_policies_condition-multi-valued-context-keys). 

Lorsque la politique est évaluée lors d'une demande, AWS remplace la clé par la valeur correspondante de la demande. (Dans cet exemple, AWS utiliserait la date et l'heure de la demande.) L'évaluation de la condition retourne True ou False, ce qui est pris en compte pour déterminer si la politique dans sa totalité autorise ou refuse la demande. 

### Plusieurs valeurs dans un élément Condition
<a name="Condition-multiple-conditions"></a>

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. L'illustration suivante décrit ce scénario. 

![diagrammes de deux blocs de l’opérateur à conditions. Le premier bloc inclut deux espaces réservés aux clés contextuelles, chacun contenant plusieurs valeurs. Le second bloc de conditions inclut une clé de contexte à valeurs multiples.](http://docs.aws.amazon.com/fr_fr/IAM/latest/UserGuide/images/AccessPolicyLanguage_Condition_Block.diagram.png)


Pour de plus amples informations, veuillez consulter [Définir les opérateurs pour les clés de contexte à valeurs multiples](reference_policies_condition-single-vs-multi-valued-context-keys.md#reference_policies_condition-multi-valued-context-keys). 