

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

# 为 MemoryDB 使用基于身份的策略（IAM 策略）
<a name="iam.identitybasedpolicies"></a>

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

**重要**  
我们建议您先阅读说明了以下方面的基本概念和选项的主题：管理对 MemoryDB 资源的访问。有关更多信息，请参阅 [管理 MemoryDB 资源的访问权限的概述](iam.overview.md)。

本主题的各个部分涵盖以下内容：
+ [使用 MemoryDB 控制台所需的权限](#iam.identitybasedpolicies.minconpolicies)
+ [适用于 MemoryDB 的AWS托管（预定义）策略](security-iam-awsmanpol.md#iam.identitybasedpolicies.predefinedpolicies)
+ [客户管理型策略示例](#iam.identitybasedpolicies.customermanagedpolicies)

下面介绍权限策略示例。

------
#### [ JSON ]

****  

```
{
   "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:CreateCluster`、`memorydb:DescribeClusters` 和 `memorydb:UpdateCluster`）权限。
+ 第二条语句授予对 `Resource` 值末尾指定的 IAM 角色名称的 IAM 操作（`iam:PassRole`）的权限。

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

有关显示所有 MemoryDB API 操作及其适用的资源的表，请参阅 [MemoryDB API 权限：操作、资源和条件参考](iam.APIReference.md)。

## 使用 MemoryDB 控制台所需的权限
<a name="iam.identitybasedpolicies.minconpolicies"></a>

权限参考表列出 MemoryDB API 操作并显示每个操作所需的权限。有关 MemoryDB API 操作的更多信息，请参阅 [MemoryDB API 权限：操作、资源和条件参考](iam.APIReference.md)。

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

------
#### [ JSON ]

****  

```
{
    "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` 操作权限使控制台可以检索 Amazon Simple Notification Service（Amazon SNS）主题和订阅，并将其显示在控制台中。

## 客户管理型策略示例
<a name="iam.identitybasedpolicies.customermanagedpolicies"></a>

如果您未使用默认策略并选择使用自定义托管策略，请确保以下两项之一。您应该有权调用 `iam:createServiceLinkedRole`（有关更多信息，请参阅[示例 4：允许用户调用 IAM CreateServiceLinkedRole API](#create-service-linked-role-policy)）。或者您应该已经创建了 MemoryDB 服务相关角色。

本节中的示例策略与使用 MemoryDB 控制台所需的最低权限相结合时，将授予其他权限。这些示例也与 AWS SDKs 和有关 AWS CLI。有关使用 MemoryDB 控制台所需的权限的更多信息，请参阅 [使用 MemoryDB 控制台所需的权限](#iam.identitybasedpolicies.minconpolicies)。

有关设置 IAM 用户和组的说明，请参阅 *IAM 用户指南*中的[创建您的第一个 IAM 用户和管理员组](https://docs.aws.amazon.com/IAM/latest/UserGuide/getting-started_create-admin-group.html)。

**重要**  
在生产中使用 IAM 策略之前，请始终全面测试这些策略。当您使用 MemoryDB 控制台时，一些看起来简单的 MemoryDB 操作可能需要其他操作来支持它们。例如，`memorydb:CreateCluster` 授予创建 MemoryDB 集群的权限。但是，为执行此操作，MemoryDB 控制台使用一些 `Describe` 和 `List` 操作来填充控制台列表。

**Topics**
+ [示例 1：允许用户对 MemoryDB 资源进行只读访问](#example-allow-list-current-memorydb-resources)
+ [示例 2：允许用户执行常见的 MemoryDB 系统管理员任务](#example-allow-specific-memorydb-actions)
+ [示例 3：允许用户访问所有 MemoryDB API 操作](#allow-unrestricted-access)
+ [示例 4：允许用户调用 IAM CreateServiceLinkedRole API](#create-service-linked-role-policy)

### 示例 1：允许用户对 MemoryDB 资源进行只读访问
<a name="example-allow-list-current-memorydb-resources"></a>

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

------
#### [ JSON ]

****  

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

------

### 示例 2：允许用户执行常见的 MemoryDB 系统管理员任务
<a name="example-allow-specific-memorydb-actions"></a>

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

------
#### [ JSON ]

****  

```
{
    "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 操作
<a name="allow-unrestricted-access"></a>

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

------
#### [ JSON ]

****  

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

------

### 示例 4：允许用户调用 IAM CreateServiceLinkedRole API
<a name="create-service-linked-role-policy"></a>

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

------
#### [ JSON ]

****  

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

------