为 MemoryDB 使用基于身份的策略(IAM策略) - Amazon MemoryDB

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

为 MemoryDB 使用基于身份的策略(IAM策略)

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

重要

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

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

下面介绍权限策略示例。

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

该策略包含两条语句:

  • 第一条语句授予在该账户拥有的任何集群上执行 MemoryDB 操作(memorydb:CreateClustermemorydb:DescribeClusters、和memorydb:UpdateCluster)的权限。

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

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

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

使用 MemoryDB 控制台所需的权限

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

要使用 MemoryDB 控制台,请先授予其他操作的权限,如以下权限策略所示。

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

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

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

  • 控制台需要ec2操作权限才能查询 Amazon,EC2这样它才能显示可用区VPCs、安全组和账户属性。

  • cloudwatch操作权限使控制台能够检索 Amazon CloudWatch 指标和警报,并将其显示在控制台中。

  • sns操作权限使控制台能够检索亚马逊简单通知服务 (AmazonSNS) 主题和订阅,并将其显示在控制台中。

客户管理型策略示例

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

再加上使用 MemoryDB 控制台所需的最低权限,本节中的示例策略会授予其他权限。这些示例也与 AWS SDKs和有关 AWS CLI。有关使用 MemoryDB 控制台所需的权限的更多信息,请参阅 使用 MemoryDB 控制台所需的权限

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

重要

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

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

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

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

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

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

{ "Version": "2012-10-17", "Statement":[{ "Sid": "MDBAllowSpecific", "Effect":"Allow", "Action":[ "memorydb:UpdateCluster", "memorydb:DescribeClusters", "memorydb:DescribeEvents", "memorydb:UpdateParameterGroup", "memorydb:DescribeParameterGroups", "memorydb:DescribeParameters", "memorydb:ResetParameterGroup",], "Resource":"*" } ] }

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

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

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

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

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

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