Utilisation de clés de condition - Amazon ElastiCache

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.

Utilisation de clés de condition

Vous pouvez spécifier des conditions pour déterminer comment une politique IAM prend effet. Dans ElastiCache, vous pouvez utiliser l'Conditionélément d'une politique JSON pour comparer les clés dans le contexte de la demande avec les valeurs clés que vous spécifiez dans votre politique. Pour plus d'informations, consultez Éléments de politique JSON IAM : condition.

Pour consulter la liste des clés de ElastiCache condition, consultez la section Clés de condition pour Amazon ElastiCache dans la référence d'autorisation de service.

Pour obtenir la liste de toutes les clés de condition globales, veuillez consulter Clés de contexte de condition globales AWS.

Spécification de conditions : Utilisation de clés de condition

Pour mettre en place un contrôle détaillé, vous écrivez une politique d'autorisations IAM qui spécifie les conditions pour contrôler un ensemble de paramètres individuels sur certaines demandes. Vous appliquez la politique aux utilisateurs, groupes ou rôles IAM que vous créez à l'aide de la console IAM.

Pour appliquer une condition, vous ajoutez les informations de condition à la déclaration de politique IAM. Dans l’exemple suivant, vous spécifiez la condition selon laquelle tout cluster de cache auto-conçu créé sera de type nœud cache.r5.large.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "elasticache:CreateCacheCluster" ], "Resource": [ "arn:aws:elasticache:*:*:parametergroup:*", "arn:aws:elasticache:*:*:subnetgroup:*" ] }, { "Effect": "Allow", "Action": [ "elasticache:CreateCacheCluster" ], "Resource": [ "arn:aws:elasticache:*:*:cluster:*" ], "Condition": { "StringEquals": { "elasticache:CacheNodeType": [ "cache.r5.large" ] } } } ] }

Pour de plus amples informations, veuillez consulter Tag-Based access control policy examples.

Pour plus d'informations sur l'utilisation d'opérateurs de condition de politique, veuillez consulter ElastiCache Autorisations d'API : référence aux actions, aux ressources et aux conditions.

Exemples de politique : Utilisation de conditions pour un contrôle de paramètre détaillé

Cette section présente des exemples de politiques permettant de mettre en œuvre un contrôle d'accès précis sur les paramètres listés ElastiCache précédemment.

  1. elasticache : MaximumDataStorage : Spécifiez le stockage de données maximal d'un cache sans serveur. En utilisant les conditions fournies, le client ne peut pas créer de caches pouvant stocker une quantité de données supérieure à la quantité spécifiée.

    { "Version": "2012-10-17", "Statement": [ { "Sid": "AllowDependentResources", "Effect": "Allow", "Action": [ "elasticache:CreateServerlessCache" ], "Resource": [ "arn:aws:elasticache:*:*:serverlesscachesnapshot:*", "arn:aws:elasticache:*:*:snapshot:*", "arn:aws:elasticache:*:*:usergroup:*" ] }, { "Effect": "Allow", "Action": [ "elasticache:CreateServerlessCache" ], "Resource": [ "arn:aws:elasticache:*:*:serverlesscache:*" ], "Condition": { "NumericLessThanEquals": { "elasticache:MaximumDataStorage": "30" }, "StringEquals": { "elasticache:DataStorageUnit": "GB" } } } ] }
  2. ElastiCache:MaximumeCPU PerSecond : Spécifiez la valeur maximale d'ECPU par seconde d'un cache sans serveur. En utilisant les conditions fournies, le client ne peut pas créer de caches pouvant exécuter un nombre d’ECPU par seconde supérieur au nombre spécifié.

    { "Version": "2012-10-17", "Statement": [ { "Sid": "AllowDependentResources", "Effect": "Allow", "Action": [ "elasticache:CreateServerlessCache" ], "Resource": [ "arn:aws:elasticache:*:*:serverlesscachesnapshot:*", "arn:aws:elasticache:*:*:snapshot:*", "arn:aws:elasticache:*:*:usergroup:*" ] }, { "Effect": "Allow", "Action": [ "elasticache:CreateServerlessCache" ], "Resource": [ "arn:aws:elasticache:*:*:serverlesscache:*" ], "Condition": { "NumericLessThanEquals": { "elasticache:MaximumECPUPerSecond": "100000" } } } ] }
  3. elasticache : CacheNodeType : Spécifiez ce NodeType qu'un utilisateur peut créer. En utilisant les conditions fournies, le client peut spécifier une valeur unique ou une plage pour un type de nœud.

    { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "elasticache:CreateCacheCluster" ], "Resource": [ "arn:aws:elasticache:*:*:parametergroup:*", "arn:aws:elasticache:*:*:subnetgroup:*" ] }, { "Effect": "Allow", "Action": [ "elasticache:CreateCacheCluster" ], "Resource": [ "arn:aws:elasticache:*:*:cluster:*" ], "Condition": { "StringEquals": { "elasticache:CacheNodeType": [ "cache.t2.micro", "cache.t2.medium" ] } } } ] }
  4. elasticache : EngineVersion : Spécifie l'utilisation de la version 1.6.6 du moteur

    { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "elasticache:CreateCacheCluster" ], "Resource": [ "arn:aws:elasticache:*:*:parametergroup:*", "arn:aws:elasticache:*:*:subnetgroup:*" ] }, { "Effect": "Allow", "Action": [ "elasticache:CreateCacheCluster" ], "Resource": [ "arn:aws:elasticache:*:*:cluster:*" ], "Condition": { "StringEquals": { "elasticache:EngineVersion": "1.6.6" } } } ] }
  5. elasticache : KmsKeyId : Spécifiez l'utilisation des clés AWS KMS gérées par le client.

    { "Version": "2012-10-17", "Statement": [ { "Sid": "AllowDependentResources", "Effect": "Allow", "Action": [ "elasticache:CreateServerlessCache" ], "Resource": [ "arn:aws:elasticache:*:*:serverlesscachesnapshot:*", "arn:aws:elasticache:*:*:snapshot:*", "arn:aws:elasticache:*:*:usergroup:*" ] }, { "Effect": "Allow", "Action": [ "elasticache:CreateServerlessCache" ], "Resource": [ "arn:aws:elasticache:*:*:serverlesscache:*" ], "Condition": { "StringEquals": { "elasticache:KmsKeyId": "my-key" } } } ] }
  6. elasticache : CacheParameterGroupName : Spécifiez un groupe de paramètres autre que celui par défaut avec des paramètres spécifiques d'une organisation sur vos clusters. Vous pouvez également spécifier un modèle de dénomination pour vos groupes de paramètres ou supprimer un bloc sur un nom de groupe de paramètres spécifique. Voici un exemple limitant l'utilisation de « my-org-param-group » uniquement.

    { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "elasticache:CreateCacheCluster" ], "Resource": [ "arn:aws:elasticache:*:*:parametergroup:*", "arn:aws:elasticache:*:*:subnetgroup:*" ] }, { "Effect": "Allow", "Action": [ "elasticache:CreateCacheCluster" ], "Resource": [ "arn:aws:elasticache:*:*:cluster:*" ], "Condition": { "StringEquals": { "elasticache:CacheParameterGroupName": "my-org-param-group" } } } ] }
  7. elasticache : CreateCacheCluster : Refus d'CreateCacheClusteraction si la balise de requête Project est absente ou n'est pas égale àDev, QA ou. Prod

    { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "elasticache:CreateCacheCluster" ], "Resource": [ "arn:aws:elasticache:*:*:parametergroup:*", "arn:aws:elasticache:*:*:subnetgroup:*", "arn:aws:elasticache:*:*:securitygroup:*", "arn:aws:elasticache:*:*:replicationgroup:*" ] }, { "Effect": "Deny", "Action": [ "elasticache:CreateCacheCluster" ], "Resource": [ "arn:aws:elasticache:*:*:cluster:*" ], "Condition": { "Null": { "aws:RequestTag/Project": "true" } } }, { "Effect": "Allow", "Action": [ "elasticache:CreateCacheCluster", "elasticache:AddTagsToResource" ], "Resource": "arn:aws:elasticache:*:*:cluster:*", "Condition": { "StringEquals": { "aws:RequestTag/Project": [ "Dev", "Prod", "QA" ] } } } ] }
  8. elasticache : CacheNodeType : Autoriser CreateCacheCluster avec cacheNodeType cache.r5.large ou cache.r6g.4xlarge et tag. Project=XYZ

    { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "elasticache:CreateCacheCluster" ], "Resource": [ "arn:aws:elasticache:*:*:parametergroup:*", "arn:aws:elasticache:*:*:subnetgroup:*" ] }, { "Effect": "Allow", "Action": [ "elasticache:CreateCacheCluster" ], "Resource": [ "arn:aws:elasticache:*:*:cluster:*" ], "Condition": { "StringEqualsIfExists": { "elasticache:CacheNodeType": [ "cache.r5.large", "cache.r6g.4xlarge" ] }, "StringEquals": { "aws:RequestTag/Project": "XYZ" } } } ] }
Note

Lors de la création de politiques pour appliquer ensemble des balises et d'autres clés de condition, la valeur IfExists conditionnelle peut être nécessaire sur des éléments de clés de condition en raison des exigences de politique elasticache:AddTagsToResource pour les demandes de création avec le paramètre --tags.