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 :
-
Amazon Resource Name (ARN) (disponible uniquement pour certains services.)
-
... IfExists(vérifie si la valeur clé existe dans le cadre d'une autre vérification)
-
Null check (vérifie si la valeur de clé existe en tant que vérification autonome)
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 |
---|---|
|
Correspondance exacte, respect de la casse |
|
Correspondance négative |
|
Correspondance exacte, non respect de la casse |
|
Correspondance négative, non respect de la casse |
|
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. NoteSi une clé contient plusieurs valeurs, |
|
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 |
---|---|
|
Correspondance |
|
Correspondance négative |
|
Correspondance « Inférieur à » |
|
Correspondance « Inférieur ou égal à » |
|
Correspondance « Supérieur à » |
|
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
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 |
---|---|
|
Correspondance à une date spécifique |
|
Correspondance négative |
|
Correspondance avant une date et heure spécifiques |
|
Correspondance à ou avant une date et heure spécifiques |
|
Correspondance après une date et heure spécifiques |
|
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 |
---|---|
|
Correspondance booléenne |
Par exemple, cette politique basée sur l'identité utilise l'opérateur de Bool
condition avec la aws:SecureTransport
clé 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
"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 |
---|---|
|
Adresse IP ou plage d'adresses IP spécifiée |
|
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 |
---|---|
|
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 |
|
Correspondance annulée pour. ARN Les opérateurs de condition |
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"}} } }