使用条件键 - Amazon ElastiCache
AWS 文档中描述的 AWS 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 AWS 服务入门

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

使用条件键

您可以指定确定 IAM 策略如何生效的条件。InElastiCache,您可以使用Condition元素将请求上下文中的键与您在策略中指定的键进行比较。有关更多信息,请参阅 。IAM JSON 策略元素:Condition。有关全局条件键的列表,请参阅AWS全局条件上下文键

指定条件:使用条件键

要实现精细控制,您可以编写 IAM 权限策略,用于指定控制特定请求上的一组单独参数的条件。然后,将该策略应用于您使用 IAM 控制台创建的 IAM 用户、组或角色。

要应用条件,请将条件信息添加到 IAM 策略语句中。在以下示例中,您指定创建的任何缓存集群都为节点类型的条件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": { "ForAnyValue:StringEquals": { "elasticache:CacheNodeType": [ "cache.r5.large" ] } } } ] }

下表显示了适用于ElastiCache以及使用它们的操作。

键名称 描述 数据类型 使用者 受影响的资源类型(* 如果标有星号,则只有此资源在请求中存在时才会受到影响。)
elasticache:CacheNodeType

根据请求中包含的 CachendeType 参数筛选访问。此密钥可用于限制可用于集群创建或扩展操作的缓存节点类型。

String

CreateCacheCluster

Cluster

ModifyCacheClusters

Cluster

elasticache:EngineVersion

engineVersion参数存在于创建或群集修改请求中。

String

CreateCacheCluster

Cluster

ModifyCacheClusters

Cluster

elasticache:EngineType

按创建请求中存在的引擎类型筛选访问权限。对于复制组创建,如果参数不存在,则使用默认引擎 “redis” 作为关键字。

String

CreateCacheCluster

Cluster

elasticache:AuthTokenEnabled

按非空的存在筛选访问AuthToken参数。

Bool

CreateCacheCluster

Cluster

ModifyCacheClusters

Cluster

elasticache:CacheParameterGroupName

CacheParameterGroupName参数。

String

CreateCacheCluster

Cluster, ReplicationGroup*

ModifyCacheClusters

Cluster

CreateCacheParameterGroup

ParameterGroup

ModifyCacheParameterGroup

ParameterGroup

DeleteCacheParameterGroup

ParameterGroup

ResetCacheParameterGroup

ParameterGroup

有关更多信息,请参阅 。基于标记的访问控制策略示例

有关使用策略条件运算符的更多信息,请参阅ElastiCacheAPI 权限:操作、资源和条件参考

示例策略:使用条件实现精细参数控制

此部分介绍了实现精细访问控制的示例策略,可对之前列出的ElastiCache参数。

  1. 弹性:恶魔型: 指定用户可以创建哪些 NodeType。使用提供的条件,客户可以为节点类型指定单个或范围值。

    { "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": { "ForAnyValue:StringEquals": { "elasticache:CacheNodeType": [ "cache.t2.micro", "cache.t2.medium" ] } } } ] }
  2. 弹性:工程版: 指定引擎 1.6.6 版的用法

    { "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" } } } ] }
  3. 弹性:缓存参数组名: 使用群集上组织的特定参数指定非默认参数组。您还可以为参数组指定命名模式,或阻止删除特定参数组名称。以下是限制仅使用 “my-org-参数组” 的示例。

    { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "elasticache:CreateCacheCluster" ], "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" } } } ] }
  4. 弹性:肌肤光泽: 允许CreateCacheCluster替换为cacheNodeType缓存 .r5. 大或缓存 .r6g.4x大和标签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" } } } ] }
注意

当创建策略以强制执行标签和其他条件键一起使用时,条件IfExists可能需要条件的关键元素,因为额外的elasticache:AddTagsToResource创建请求的策略要求--tags参数。