Utilisation de clés de condition - Amazon ElastiCache for Redis

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'élément Condition d'une politique JSON pour comparer des clés dans le contexte de demande avec les valeurs de clé spécifiées dans votre politique. Pour plus d'informations, consultez Éléments de politique JSON IAM : condition. 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 créé sera de type nœud cache.r5.large.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "elasticache:CreateCacheCluster", "elasticache:CreateReplicationGroup" ], "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" ] } } } ] }

Le tableau suivant présente les clés de condition spécifiques au service qui s'appliquent à ElastiCache et les actions qui les utilisent.

Nom de la touche Description Type de données Utilisé par Type de ressource affectée (* si marqué d'un astérisque, seule cette ressource sera affectée si elle est présente dans la requête.)
elasticache:CacheNodeType

Filtre l'accès en fonction du paramètre CacheNodeType présent dans la demande. Cette clé peut être utilisée pour restreindre les types de nœuds de cache pouvant être utilisés pour la création de cluster ou les opérations de mise à l'échelle.

String

CreateReplicationGroup

ReplicationGroup, GlobalReplicationGroup*

CreateCacheCluster

Cluster, ReplicationGroup*

ModifyReplicationGroup

ReplicationGroup

ModifyCacheClusters

Cluster

ModifyGlobalReplicationGroup

GlobalReplicationGroup

elasticache:NumNodeGroups

Filtre l'accès en fonction du paramètre NumNodeGroups ou NodeGroupCount spécifié dans la demande. Cette clé peut être utilisée pour restreindre le nombre de groupes de nœuds (partitions) que les clusters peuvent avoir après les opérations de création ou de mise à l'échelle.

Number

CreateReplicationGroup

ReplicationGroup, GlobalReplicationGroup*

ModifyReplicationGroupShardConfiguration

ReplicationGroup

IncreaseNodeGroupsInGlobalReplicationGroup

GlobalReplicationGroup

DecreaseNodeGroupsInGlobalReplicationGroup

GlobalReplicationGroup

elasticache:ReplicasPerNodeGroup

Filtre l'accès en fonction du nombre de réplicas par groupe de nœuds (partitions) spécifié dans les créations ou les demandes de mise à l'échelle.

Number

CreateReplicationGroup

ReplicationGroup, GlobalReplicationGroup*

CreateCacheCluster

Cluster

IncreaseReplicaCount

ReplicationGroup

DecreaseReplicaCount

ReplicationGroup

elasticache:EngineVersion

Filtre l'accès en fonction du paramètre engineVersion présent dans les demandes de création ou de modification de cluster.

String

CreateReplicationGroup

ReplicationGroup, GlobalReplicationGroup*

CreateCacheCluster

Cluster, ReplicationGroup*

ModifyReplicationGroup

ReplicationGroup

ModifyCacheClusters

Cluster

ModifyGlobalReplicationGroup

GlobalReplicationGroup

elasticache:EngineType

Filtre l'accès en fonction du type de moteur présent dans les demandes de création. Pour les créations de groupes de réplication, le moteur par défaut « redis » est utilisé comme clé si le paramètre n'est pas présent.

String

CreateReplicationGroup

ReplicationGroup, GlobalReplicationGroup*

CreateCacheCluster

Cluster, ReplicationGroup*

elasticache:AutomaticFailoverEnabled

Filtre l'accès en fonction du paramètre AutomaticFailoverEnabled présent dans la demande ou d'une valeur False (fausse) par défaut si le paramètre n'est pas présent.

Bool

CreateReplicationGroup

ReplicationGroup, GlobalReplicationGroup*

ModifyReplicationGroup

ReplicationGroup

ModifyGlobalReplicationGroup

GlobalReplicationGroup

elasticache:AtRestEncryptionEnabled

Filtre l'accès en fonction du paramètre AtRestEncryptionEnabled présent dans la demande ou d'une valeur False (fausse) par défaut si le paramètre n'est pas présent.

Bool

CreateReplicationGroup

ReplicationGroup, GlobalReplicationGroup*

elasticache:TransitEncryptionEnabled

Filtre l'accès en fonction du paramètre TransitEncryptionEnabled présent dans la demande ou d'une valeur False (fausse) par défaut si le paramètre n'est pas présent.

Bool

CreateReplicationGroup

ReplicationGroup, GlobalReplicationGroup*

elasticache:MultiAZEnabled

Filtre l'accès en fonction du paramètre AZMode, du paramètre MultiAZEnabled ou du nombre de zones de disponibilité dans lesquelles le cluster ou le groupe de réplication peut être placé.

Bool

CreateReplicationGroup

ReplicationGroup, GlobalReplicationGroup*

CreateCacheCluster

Cluster, ReplicationGroup*

ModifyReplicationGroup

ReplicationGroup

ModifyCacheClusters

Cluster

ModifyGlobalReplicationGroup

GlobalReplicationGroup

elasticache:ClusterModeEnabled

Filtre l'accès en fonction du paramètre clustermode présent dans la demande. La valeur par défaut pour les créations d'un groupe de nœuds unique (partition) est false (fausse).

Bool

CreateReplicationGroup

ReplicationGroup, GlobalReplicationGroup*

elasticache:AuthTokenEnabled

Filtre l'accès en fonction de la présence du paramètre AuthToken non vide dans la demande.

Bool

CreateReplicationGroup

ReplicationGroup, GlobalReplicationGroup*

CreateCacheCluster

Cluster, ReplicationGroup*

ModifyReplicationGroup

ReplicationGroup

ModifyCacheClusters

Cluster

ModifyGlobalReplicationGroup

GlobalReplicationGroup

elasticache:SnapshotRetentionLimit

Filtre l'accès en fonction du paramètre SnapshotRetentionLimit dans la demande.

Number

CreateReplicationGroup

ReplicationGroup, GlobalReplicationGroup*

CreateCacheCluster

Cluster, ReplicationGroup*

ModifyReplicationGroup

ReplicationGroup

ModifyCacheClusters

Cluster

ModifyGlobalReplicationGroup

GlobalReplicationGroup

elasticache:KmsKeyId

Filtre l'accès en fonction du paramètre KmsKeyId dans la demande.

String

CreateSnapshot

Snapshot

CopySnapshot

Snapshot

CreateReplicationGroup

ReplicationGroup, GlobalReplicationGroup*

elasticache:CacheParameterGroupName

Filtre l'accès en fonction du paramètre CacheParameterGroupName dans la demande.

String

CreateReplicationGroup

ReplicationGroup, GlobalReplicationGroup*

CreateCacheCluster

Cluster, ReplicationGroup*

ModifyReplicationGroup

ReplicationGroup

ModifyCacheClusters

Cluster

CreateCacheParameterGroup

ParameterGroup

ModifyCacheParameterGroup

ParameterGroup

DeleteCacheParameterGroup

ParameterGroup

ResetCacheParameterGroup

ParameterGroup

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 Autorisations d'API ElastiCache : référence des actions, ressources et conditions.

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

Cette section présente des exemples de politiques pour la mise en œuvre d'un contrôle d'accès affiné sur les paramètres ElastiCache répertoriés précédemment.

  1. elasticache:CacheNodeType : spécifiez la ou les valeurs 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", "elasticache:CreateReplicationGroup" ], "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" ] } } } ] }
  2. Éelasticache:NumNodeGroups : créez un groupe de réplication avec moins de 20 groupes de nœuds.

    { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "elasticache:CreateCacheCluster", "elasticache:CreateReplicationGroup" ], "Resource": [ "arn:aws:elasticache:*:*:parametergroup:*", "arn:aws:elasticache:*:*:subnetgroup:*" ] }, { "Effect": "Allow", "Action": [ "elasticache:CreateReplicationGroup" ], "Resource": [ "arn:aws:elasticache:*:*:replicationgroup:*" ], "Condition": { "NumericLessThanEquals": { "elasticache:NumNodeGroups": "20" } } } ] }
  3. lasticache:ReplicasPerNodeGroup : spécifiez les réplicas par nœud compris entre 5 et 10.

    { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "elasticache:CreateCacheCluster", "elasticache:CreateReplicationGroup" ], "Resource": [ "arn:aws:elasticache:*:*:parametergroup:*", "arn:aws:elasticache:*:*:subnetgroup:*" ] }, { "Effect": "Allow", "Action": [ "elasticache:CreateReplicationGroup" ], "Resource": [ "arn:aws:elasticache:*:*:replicationgroup:*" ], "Condition": { "NumericGreaterThanEquals": { "elasticache:ReplicasPerNodeGroup": "5" }, "NumericLessThanEquals": { "elasticache:ReplicasPerNodeGroup": "10" } } } ] }
  4. elasticache:EngineVersion : spécifiez l'utilisation de la version du moteur 5.0.6.

    { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "elasticache:CreateCacheCluster", "elasticache:CreateReplicationGroup" ], "Resource": [ "arn:aws:elasticache:*:*:parametergroup:*", "arn:aws:elasticache:*:*:subnetgroup:*" ] }, { "Effect": "Allow", "Action": [ "elasticache:CreateCacheCluster" ], "Resource": [ "arn:aws:elasticache:*:*:cluster:*" ], "Condition": { "StringEquals": { "elasticache:EngineVersion": "5.0.6" } } } ] }
  5. elasticache:EngineType : spécifiez uniquement à l'aide du moteur Redis.

    { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "elasticache:CreateCacheCluster", "elasticache:CreateReplicationGroup" ], "Resource": [ "arn:aws:elasticache:*:*:parametergroup:*", "arn:aws:elasticache:*:*:subnetgroup:*" ] }, { "Effect": "Allow", "Action": [ "elasticache:CreateCacheCluster" ], "Resource": [ "arn:aws:elasticache:*:*:cluster:*" ], "Condition": { "StringEquals": { "elasticache:EngineType": "redis" } } } ] }
  6. elasticache:AtrestEncryptionEnabled : spécifiez que les groupes de réplication seront créés uniquement avec le chiffrement activé.

    { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "elasticache:CreateCacheCluster", "elasticache:CreateReplicationGroup" ], "Resource": [ "arn:aws:elasticache:*:*:parametergroup:*", "arn:aws:elasticache:*:*:subnetgroup:*" ] }, { "Effect": "Allow", "Action": [ "elasticache:CreateReplicationGroup" ], "Resource": [ "arn:aws:elasticache:*:*:replicationgroup:*" ], "Condition": { "Bool": { "elasticache:AtRestEncryptionEnabled": "true" } } } ] }
  7. elasticache:TransitEncryptionEnabled : spécifiez que les groupes de réplication seront créés uniquement avec cette valeur définie sur false.

    { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "elasticache:CreateCacheCluster", "elasticache:CreateReplicationGroup" ], "Resource": [ "arn:aws:elasticache:*:*:parametergroup:*", "arn:aws:elasticache:*:*:subnetgroup:*" ] }, { "Effect": "Allow", "Action": [ "elasticache:CreateReplicationGroup" ], "Resource": [ "arn:aws:elasticache:*:*:replicationgroup:*" ], "Condition": { "Bool": { "elasticache:TransitEncryptionEnabled": "false" } } } ] }
  8. elasticache:AutomaticFailoverEnabled : spécifiez que les groupes de réplication seront créés uniquement avec le basculement automatique activé.

    { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "elasticache:CreateCacheCluster", "elasticache:CreateReplicationGroup" ], "Resource": [ "arn:aws:elasticache:*:*:parametergroup:*", "arn:aws:elasticache:*:*:subnetgroup:*" ] }, { "Effect": "Allow", "Action": [ "elasticache:CreateReplicationGroup" ], "Resource": [ "arn:aws:elasticache:*:*:replicationgroup:*" ], "Condition": { "Bool": { "elasticache:AutomaticFailoverEnabled": "true" } } } ] }
  9. elasticache:MultiAZEnabled : spécifiez que les groupes de réplication ne peuvent pas être créés avec Multi-AZ désactivé.

    { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "elasticache:CreateCacheCluster", "elasticache:CreateReplicationGroup" ], "Resource": [ "arn:aws:elasticache:*:*:parametergroup:*", "arn:aws:elasticache:*:*:subnetgroup:*" ] }, { "Effect": "Deny", "Action": [ "elasticache:CreateReplicationGroup" ], "Resource": [ "arn:aws:elasticache:*:*:replicationgroup:*" ], "Condition": { "Bool": { "elasticache:MultiAZEnabled": "false" } } } ] }
  10. elasticache:ClusterModeEnabled: : spécifiez que les groupes de réplication ne peuvent être créés que si le mode cluster est activé.

    { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "elasticache:CreateCacheCluster", "elasticache:CreateReplicationGroup" ], "Resource": [ "arn:aws:elasticache:*:*:parametergroup:*", "arn:aws:elasticache:*:*:subnetgroup:*" ] }, { "Effect": "Allow", "Action": [ "elasticache:CreateReplicationGroup" ], "Resource": [ "arn:aws:elasticache:*:*:replicationgroup:*" ], "Condition": { "Bool": { "elasticache:ClusterModeEnabled": "true" } } } ] }
  11. elasticache:AuthTokenEnabled : spécifiez que les groupes de réplication ne peuvent être créés qu'avec le jeton AUTH activé.

    { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "elasticache:CreateCacheCluster", "elasticache:CreateReplicationGroup" ], "Resource": [ "arn:aws:elasticache:*:*:parametergroup:*", "arn:aws:elasticache:*:*:subnetgroup:*" ] }, { "Effect": "Allow", "Action": [ "elasticache:CreateReplicationGroup" ], "Resource": [ "arn:aws:elasticache:*:*:replicationgroup:*" ], "Condition": { "Bool": { "elasticache:AuthTokenEnabled": "true" } } } ] }
  12. elasticache:SnapshotRetentionLimit: : spécifiez le nombre de jours (ou min/max) de conservation de l'instantané. La politique ci-dessous applique le stockage des sauvegardes pendant au moins 30 jours.

    { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "elasticache:CreateCacheCluster", "elasticache:CreateReplicationGroup" ], "Resource": [ "arn:aws:elasticache:*:*:parametergroup:*", "arn:aws:elasticache:*:*:subnetgroup:*" ] }, { "Effect": "Allow", "Action": [ "elasticache:CreateReplicationGroup" ], "Resource": [ "arn:aws:elasticache:*:*:replicationgroup:*" ], "Condition": { "NumericGreaterThanEquals": { "elasticache:SnapshotRetentionLimit": "30" } } } ] }
  13. elasticache:KmsKeyId : spécifiez l'utilisation de clés KMS AWS gérées par le client. Cette clé compléterait la clé de chiffrement au repos.

    { "Version": "2012-10-17", "Statement": [{ "Effect": "Allow", "Action": [ "elasticache:CreateCacheCluster", "elasticache:CreateReplicationGroup" ], "Resource": [ "arn:aws:elasticache:*:*:parametergroup:*", "arn:aws:elasticache:*:*:subnetgroup:*" ] }, { "Effect": "Allow", "Action": [ "elasticache:CreateReplicationGroup" ], "Resource": [ "arn:aws:elasticache:*:*:replicationgroup:*" ], "Condition": { "StringEquals": { "elasticache:KmsKeyId": "my-key" } } } ] }
  14. elasticache:CacheParameterGroupName : spécifiez un groupe de paramètres non 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 d'utilisation limitée de seulement « my-org-param-group ».

    { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "elasticache:CreateCacheCluster", "elasticache:CreateReplicationGroup" ], "Resource": [ "arn:aws:elasticache:*:*:parametergroup:*", "arn:aws:elasticache:*:*:subnetgroup:*" ] }, { "Effect": "Allow", "Action": [ "elasticache:CreateReplicationGroup" ], "Resource": [ "arn:aws:elasticache:*:*:cluster:*" ], "Condition": { "StringEquals": { "elasticache:CacheParameterGroupName": "my-org-param-group" } } } ] }
  15. elasticache:createcachecluster : autoriser CreateCacheCluster avec cacheNodeType cache.r5.large ou cache.r6g.4xlarge et balise Project=XYZ.

    { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "elasticache:CreateCacheCluster", "elasticache:CreateReplicationGroup" ], "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.