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

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

为亚马逊使用基于身份的政策(IAM政策) ElastiCache

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

重要

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

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

以下显示了使用 Redis OSS 时的权限策略示例。

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

下面显示了使用 Memcached 时的权限策略示例。

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

该策略包含两条语句:

  • 第一条语句授予对 Amazon ElastiCache 操作的权限(elasticache:Create*elasticache:Describe*elasticache:Modify*

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

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

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

客户管理型策略示例

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

与使用 Amazon ElastiCache 控制台所需的最低权限相结合,本节中的示例策略将授予额外权限。这些示例也与 Amazon SDKs和有关 Amazon CLI。

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

重要

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

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

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

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

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

常见的系统管理员任务包括修改资源。系统管理员可能还想获取有关 ElastiCache 事件的信息。以下策略向用户授予执行这些常见系统管理员任务的 ElastiCache 操作的权限。通常,您将此类型的权限策略挂载到系统管理员组。

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

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

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

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

示例 4:允许用户拨打电话 IAM CreateServiceLinkedRole API

以下策略允许用户调用IAMCreateServiceLinkedRoleAPI。我们建议您向调用变异 ElastiCache 操作的用户授予此类权限策略。

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

示例 5:允许用户使用IAM身份验证连接到无服务器缓存

以下策略允许任何用户在 2023-04-01 和 2023-06-30 之间使用IAM身份验证连接到任何无服务器缓存。

{ "Version" : "2012-10-17", "Statement" : [ { "Effect" : "Allow", "Action" : ["elasticache:Connect"], "Resource" : [ "arn:aws:elasticache:us-east-1:123456789012:serverlesscache:*" ], "Condition": { "DateGreaterThan": {"aws:CurrentTime": "2023-04-01T00:00:00Z"}, "DateLessThan": {"aws:CurrentTime": "2023-06-30T23:59:59Z"} } }, { "Effect" : "Allow", "Action" : ["elasticache:Connect"], "Resource" : [ "arn:aws:elasticache:us-east-1:123456789012:user:*" ] } ] }