将基于身份的策略(IAM 策略)用于 Amazon ElastiCache - Amazon ElastiCache
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

将基于身份的策略(IAM 策略)用于 Amazon ElastiCache

本主题提供了基于身份的策略的示例,在这些策略中,账户管理员可以向 IAM 身份(即:用户、组和角色)附加权限策略。

重要

我们建议您首先阅读说明管理对 Amazon ElastiCache 资源的访问的基本概念和选项的主题。有关更多信息,请参阅管理对 ElastiCache 资源的访问权限的概览

本主题的各个部分涵盖以下内容:

下面介绍权限策略示例。

{ "Version": "2012-10-17", "Statement": [{ "Sid": "AllowClusterPermissions", "Effect": "Allow", "Action": [ "elasticache:CreateCacheCluster", "elasticache:DescribeCacheClusters", "elasticache:ModifyCacheCluster"], "Resource": "*" }, { "Sid": "AllowUserToPassRole", "Effect": "Allow", "Action": [ "iam:PassRole" ], "Resource": "arn:aws:iam::123456789012:role/EC2-roles-for-cluster" } ] }

该策略包含两条语句:

  • 第一条语句授予执行 Amazon ElastiCache 操作(elasticache:CreateCacheClusterelasticache:DescribeCacheClusterselasticache:ModifyCacheCluster)的权限

  • 第二条语句授予对 Resource 值末尾指定的 IAM 角色名称的 IAM 操作(iam:PassRole)的权限。

该策略不指定 Principal 元素,因为在基于身份的策略中,您未指定获取权限的委托人。附加了策略的用户是隐式委托人。向 IAM 角色附加权限策略后,该角色的信任策略中标识的委托人将获取权限。

有关显示所有 Amazon ElastiCache API 操作及它们适用的资源的表,请参阅 ElastiCache API 权限:操作、资源和条件参考

使用 Amazon ElastiCache 控制台所需的权限

权限参考表列出 Amazon ElastiCache API 操作并显示每个操作所需的权限。有关 ElastiCache API 操作的更多信息,请参阅 ElastiCache API 权限:操作、资源和条件参考

要使用 Amazon ElastiCache 控制台,请首先授予执行其他操作的权限,如以下权限策略中所示。

{ "Version": "2012-10-17", "Statement": [{ "Sid": "MinPermsForECConsole", "Effect": "Allow", "Action": [ "elasticache:Describe*", "elasticache:List*", "ec2:DescribeAvailabilityZones", "ec2:DescribeVpcs", "ec2:DescribeAccountAttributes", "ec2:DescribeSecurityGroups", "cloudwatch:GetMetricStatistics", "cloudwatch:DescribeAlarms", "s3:ListAllMyBuckets", "sns:ListTopics", "sns:ListSubscriptions" ], "Resource": "*" } ] }

ElastiCache 控制台出于以下原因需要上述其他权限:

  • ElastiCache 操作权限使控制台可以显示账户中的 ElastiCache 资源。

  • 控制台需要 ec2 操作权限来查询 Amazon EC2,以便可以显示可用区、VPC、安全组及账户属性。

  • cloudwatch 操作权限使控制台可以检索 Amazon CloudWatch 指标和告警并在控制台中显示它们。

  • sns 操作权限使控制台可以检索 Amazon Simple Notification Service(Amazon SNS)主题和订阅,并将其显示在控制台中。

适用于 Amazon ElastiCache 的 Amazon 托管式(预定义)策略

Amazon通过提供由创建和管理的独立 IAM policy来满足许多常用案例的要求。Amazon托管式策略可授予常用案例的必要权限,因此,您可以免去调查都需要哪些权限的工作。有关更多信息,请参阅 IAM 用户指南中的Amazon托管策略

以下 Amazon 托管式策略(可附加到您账户中的用户)特定于 ElastiCache:

  • AmazonElastiCacheReadOnlyAccess – 授予对 Amazon ElastiCache 资源的只读访问权限。

  • AmazonElastiCacheFullAccess – 授予对 Amazon ElastiCache 资源的完全访问权限。

您还可以创建自定义 IAM 策略,以授予执行 Amazon ElastiCache API 操作的相关权限。您可以将这些自定义策略附加到需要这些权限的 IAM 用户或组。

客户托管的策略示例

如果您未使用默认策略并选择使用自定义托管策略,请确保以下两项之一。您应该有权调用 iam:createServiceLinkedRole(有关更多信息,请参阅示例 5:允许用户调用 IAM CreateServiceLinkedRole API)。或者您应该已经创建了 ElastiCache 服务相关角色。

与使用 Amazon ElastiCache 控制台所需的最低权限相结合时,本节中的示例策略将授予其他权限。这些示例还与 Amazon 开发工具包 和 Amazon CLI 相关。有关使用 ElastiCache 控制台所需的权限的更多信息,请参阅 使用 Amazon ElastiCache 控制台所需的权限

有关设置 IAM 用户和组的说明,请参阅 IAM 用户指南中的创建您的第一个 IAM 用户和管理员组

重要

在生产中使用 IAM 策略之前,请始终全面测试这些策略。当您使用 ElastiCache 控制台时,一些看起来简单的 ElastiCache 操作可能需要其他操作来支持它们。例如,elasticache:CreateCacheCluster 授予创建 ElastiCache 缓存集群的权限。但是,为执行此操作,ElastiCache 控制台使用一些 DescribeList 操作来填充控制台列表。

示例 1:允许用户创建和管理安全组

以下策略授予执行安全组的特定 ElastiCache 操作的权限。通常,您将此类型的权限策略挂载到系统管理员组。

{ "Version": "2012-10-17", "Statement":[{ "Sid": "SecGrpAllows", "Effect":"Allow", "Action":[ "elasticache:CreateCacheSecurityGroup", "elasticache:DeleteCacheSecurityGroup", "elasticache:DescribeCacheSecurityGroup", "elasticache:AuthorizeCacheSecurityGroupIngress", "elasticache:RevokeCacheSecurityGroupIngress"], "Resource":"*" } ] }

示例 2:允许用户对 ElastiCache 资源进行只读访问

以下策略授予允许用户列出资源的 ElastiCache 操作权限。通常,您将此类型的权限策略挂载到管理人员组。

{ "Version": "2012-10-17", "Statement":[{ "Sid": "ECUnrestricted", "Effect":"Allow", "Action": [ "elasticache:Describe*", "elasticache:List*"], "Resource":"*" } ] }

示例 3:允许用户执行常见的 ElastiCache 系统管理员任务

常见的系统管理员任务包括:修改缓存集群、参数和参数组。系统管理员还可能需要获得有关 ElastiCache 事件的信息。以下策略授予执行这些常见系统管理员任务的 ElastiCache 操作的用户权限。通常,您将此类型的权限策略挂载到系统管理员组。

{ "Version": "2012-10-17", "Statement":[{ "Sid": "ECAllowSpecific", "Effect":"Allow", "Action":[ "elasticache:ModifyCacheCluster", "elasticache:RebootCacheCluster", "elasticache:DescribeCacheClusters", "elasticache:DescribeEvents", "elasticache:ModifyCacheParameterGroup", "elasticache:DescribeCacheParameterGroups", "elasticache:DescribeCacheParameters", "elasticache:ResetCacheParameterGroup", "elasticache:DescribeEngineDefaultParameters"], "Resource":"*" } ] }

示例 4:允许用户访问所有 ElastiCache API 操作

以下策略允许用户访问所有 ElastiCache 操作。建议您仅向管理员用户授予此类型的权限策略。

{ "Version": "2012-10-17", "Statement":[{ "Sid": "ECAllowSpecific", "Effect":"Allow", "Action":[ "elasticache:*" ], "Resource":"*" } ] }

示例 5:允许用户调用 IAM CreateServiceLinkedRole API

以下策略允许用户调用 IAM CreateServiceLinkedRole API。我们建议您对调用变化 ElastiCache 操作的用户应用此类型的权限策略。

{ "Version":"2012-10-17", "Statement":[ { "Sid":"CreateSLRAllows", "Effect":"Allow", "Action":[ "iam:CreateServiceLinkedRole" ], "Resource":"*", "Condition":{ "StringLike":{ "iam:AmazonServiceName":"elasticache.amazonaws.com" } } } ] }

示例 6:允许用户使用 IAM 身份验证连接到复制组

以下策略允许任何用户使用 IAM 身份验证从 IP 地址 123.45.167.89 连接到任何复制组。

{ "Version" : "2012-10-17", "Statement" : [ { "Effect" : "Allow", "Action" : ["elasticache:Connect"], "Resource" : [ "arn:aws:elasticache:us-east-1:123456789012:replicationgroup:*", ], "Condition": { "IpAddress": { "aws:SourceIp": "123.45.167.89" } } }, { "Effect" : "Allow", "Action" : ["elasticache:Connect"], "Resource" : [ "arn:aws:elasticache:us-east-1:123456789012:user:*" ] } ] }