

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

# MemoryDB 中的身份和访问管理
<a name="iam"></a>





AWS Identity and Access Management (IAM) AWS 服务 可帮助管理员安全地控制对 AWS 资源的访问权限。IAM 管理员控制可以*通过身份验证*（登录）和*授权*（具有权限）使用 MemoryDB 资源的人员。您可以使用 IAM AWS 服务 ，无需支付额外费用。

**Topics**
+ [受众](#security_iam_audience)
+ [使用身份进行身份验证](#security_iam_authentication)
+ [使用策略管理访问](#security_iam_access-manage)
+ [MemoryDB 如何与 IAM 协同工作](security_iam_service-with-iam.md)
+ [适用于 MemoryDB 的基于身份的策略示例](security_iam_id-based-policy-examples.md)
+ [排查 MemoryDB 的身份和访问权限](security_iam_troubleshoot.md)
+ [访问控制](#iam.accesscontrol)
+ [管理 MemoryDB 资源的访问权限的概述](iam.overview.md)

## 受众
<a name="security_iam_audience"></a>

您的使用方式 AWS Identity and Access Management (IAM) 因您的角色而异：
+ **服务用户**：如果您无法访问功能，请从管理员处请求权限（请参阅[排查 MemoryDB 的身份和访问权限](security_iam_troubleshoot.md)）
+ **服务管理员**：确定用户访问权限并提交权限请求（请参阅[MemoryDB 如何与 IAM 协同工作](security_iam_service-with-iam.md)）
+ **IAM 管理员**：编写用于管理访问权限的策略（请参阅[适用于 MemoryDB 的基于身份的策略示例](security_iam_id-based-policy-examples.md)）

## 使用身份进行身份验证
<a name="security_iam_authentication"></a>

身份验证是您 AWS 使用身份凭证登录的方式。您必须以 IAM 用户身份进行身份验证 AWS 账户根用户，或者通过担任 IAM 角色进行身份验证。

您可以使用来自身份源的证书 AWS IAM Identity Center （例如（IAM Identity Center）、单点登录身份验证或 Google/Facebook 证书，以联合身份登录。有关登录的更多信息，请参阅《AWS 登录 用户指南》**中的[如何登录您的 AWS 账户](https://docs.aws.amazon.com/signin/latest/userguide/how-to-sign-in.html)。

对于编程访问， AWS 提供 SDK 和 CLI 来对请求进行加密签名。有关更多信息，请参阅*《IAM 用户指南》*中的[适用于 API 请求的AWS 签名版本 4](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_sigv.html)。

### AWS 账户 root 用户
<a name="security_iam_authentication-rootuser"></a>

 创建时 AWS 账户，首先会有一个名为 AWS 账户 *root 用户的*登录身份，该身份可以完全访问所有资源 AWS 服务 和资源。我们强烈建议不要使用根用户进行日常任务。有关需要根用户凭证的任务，请参阅《IAM 用户指南》**中的[需要根用户凭证的任务](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_root-user.html#root-user-tasks)。

### 联合身份
<a name="security_iam_authentication-federated"></a>

作为最佳实践，要求人类用户使用与身份提供商的联合身份验证才能 AWS 服务 使用临时证书进行访问。

*联合身份是指*来自您的企业目录、Web 身份提供商的用户 Directory Service ，或者 AWS 服务 使用来自身份源的凭据进行访问的用户。联合身份代入可提供临时凭证的角色。

要集中管理访问权限，建议使用。 AWS IAM Identity Center有关更多信息，请参阅《AWS IAM Identity Center 用户指南》**中的[什么是 IAM Identity Center？](https://docs.aws.amazon.com/singlesignon/latest/userguide/what-is.html)。

### IAM 用户和群组
<a name="security_iam_authentication-iamuser"></a>

*[IAM 用户](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_users.html)*是对某个人员或应用程序具有特定权限的一个身份。建议使用临时凭证，而非具有长期凭证的 IAM 用户。有关更多信息，请参阅 *IAM 用户指南*[中的要求人类用户使用身份提供商的联合身份验证才能 AWS 使用临时证书进行访问](https://docs.aws.amazon.com/IAM/latest/UserGuide/best-practices.html#bp-users-federation-idp)。

[https://docs.aws.amazon.com/IAM/latest/UserGuide/id_groups.html](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_groups.html)指定一组 IAM 用户，便于更轻松地对大量用户进行权限管理。有关更多信息，请参阅*《IAM 用户指南》*中的 [IAM 用户使用案例](https://docs.aws.amazon.com/IAM/latest/UserGuide/gs-identities-iam-users.html)。

### IAM 角色
<a name="security_iam_authentication-iamrole"></a>

*[IAM 角色](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles.html)*是具有特定权限的身份，可提供临时凭证。您可以通过[从用户切换到 IAM 角色（控制台）](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_use_switch-role-console.html)或调用 AWS CLI 或 AWS API 操作来代入角色。有关更多信息，请参阅《IAM 用户指南》**中的[担任角色的方法](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_manage-assume.html)。

IAM 角色对于联合用户访问、临时 IAM 用户权限、跨账户访问、跨服务访问以及在 Amazon EC2 上运行的应用程序非常有用。有关更多信息，请参阅《IAM 用户指南》**中的 [IAM 中的跨账户资源访问](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies-cross-account-resource-access.html)。

## 使用策略管理访问
<a name="security_iam_access-manage"></a>

您可以 AWS 通过创建策略并将其附加到 AWS 身份或资源来控制中的访问权限。策略定义了与身份或资源关联时的权限。 AWS 在委托人提出请求时评估这些政策。大多数策略都以 JSON 文档的 AWS 形式存储在中。有关 JSON 策略文档的更多信息，请参阅*《IAM 用户指南》*中的 [JSON 策略概述](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies.html#access_policies-json)。

管理员使用策略，通过定义哪个**主体**可以在什么**条件**下对哪些**资源**执行哪些**操作**来指定谁有权访问什么。

默认情况下，用户和角色没有权限。IAM 管理员创建 IAM 策略并将其添加到角色中，然后用户可以担任这些角色。IAM 策略定义权限，与执行操作所用的方法无关。

### 基于身份的策略
<a name="security_iam_access-manage-id-based-policies"></a>

基于身份的策略是您附加到身份（用户、组或角色）的 JSON 权限策略文档。这些策略控制身份可以执行什么操作、对哪些资源执行以及在什么条件下执行。要了解如何创建基于身份的策略，请参阅《IAM 用户指南》**中的[使用客户管理型策略定义自定义 IAM 权限](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_create.html)。

基于身份的策略可以是*内联策略*（直接嵌入到单个身份中）或*托管策略*（附加到多个身份的独立策略）。要了解如何在托管策略和内联策略之间进行选择，请参阅*《IAM 用户指南》*中的[在托管策略与内联策略之间进行选择](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies-choosing-managed-or-inline.html)。

### 基于资源的策略
<a name="security_iam_access-manage-resource-based-policies"></a>

基于资源的策略是附加到资源的 JSON 策略文档。示例包括 IAM *角色信任策略*和 Amazon S3 *存储桶策略*。在支持基于资源的策略的服务中，服务管理员可以使用它们来控制对特定资源的访问。您必须在基于资源的策略中[指定主体](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements_principal.html)。

基于资源的策略是位于该服务中的内联策略。您不能在基于资源的策略中使用 IAM 中的 AWS 托管策略。

### 其他策略类型
<a name="security_iam_access-manage-other-policies"></a>

AWS 支持其他策略类型，这些策略类型可以设置更常见的策略类型授予的最大权限：
+ **权限边界** – 设置基于身份的策略可以授予 IAM 实体的最大权限。有关更多信息，请参阅《 IAM 用户指南》**中的 [IAM 实体的权限边界](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_boundaries.html)。
+ **服务控制策略 (SCPs)**-在中指定组织或组织单位的最大权限 AWS Organizations。有关更多信息，请参阅《AWS Organizations 用户指南》**中的[服务控制策略](https://docs.aws.amazon.com/organizations/latest/userguide/orgs_manage_policies_scps.html)。
+ **资源控制策略 (RCPs)**-设置账户中资源的最大可用权限。有关更多信息，请参阅《*AWS Organizations 用户指南》*中的[资源控制策略 (RCPs)](https://docs.aws.amazon.com/organizations/latest/userguide/orgs_manage_policies_rcps.html)。
+ **会话策略** – 在为角色或联合用户创建临时会话时，作为参数传递的高级策略。有关更多信息，请参阅《IAM 用户指南》**中的[会话策略](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies.html#policies_session)。

### 多个策略类型
<a name="security_iam_access-manage-multiple-policies"></a>

当多个类型的策略应用于一个请求时，生成的权限更加复杂和难以理解。要了解在涉及多种策略类型时如何 AWS 确定是否允许请求，请参阅 *IAM 用户指南*中的[策略评估逻辑](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_evaluation-logic.html)。

# MemoryDB 如何与 IAM 协同工作
<a name="security_iam_service-with-iam"></a>

在使用 IAM 管理对 MemoryDB 的访问之前，您应该了解哪些 IAM 功能可用于 MemoryDB。






**可以与 MemoryDB 一起使用的 IAM 特征**  

| IAM 功能 | MemoryDB 支持 | 
| --- | --- | 
|  [基于身份的策略](#security_iam_service-with-iam-id-based-policies)  |   是  | 
|  [基于资源的策略](#security_iam_service-with-iam-resource-based-policies)  |  否  | 
|  [策略操作](#security_iam_service-with-iam-id-based-policies-actions)  |   是  | 
|  [策略资源](#security_iam_service-with-iam-id-based-policies-resources)  |   是  | 
|  [策略条件键](#security_iam_service-with-iam-id-based-policies-conditionkeys)  |   支持  | 
|  [ACLs](#security_iam_service-with-iam-acls)  |  是  | 
|  [ABAC（策略中的标签）](#security_iam_service-with-iam-tags)  |   是  | 
|  [临时凭证](#security_iam_service-with-iam-roles-tempcreds)  |   是  | 
|  [主体权限](#security_iam_service-with-iam-principal-permissions)  |   是  | 
|  [服务角色](#security_iam_service-with-iam-roles-service)  |  是  | 
|  [服务关联角色](#security_iam_service-with-iam-roles-service-linked)  |  是  | 

要全面了解 MemoryDB 和其他 AWS 服务如何与大多数 IAM 功能配合使用，请参阅 IAM *用户指南中的与 IAM 配合使用的AWS *[服务](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_aws-services-that-work-with-iam.html)。

## 适用于 MemoryDB 的基于身份的策略
<a name="security_iam_service-with-iam-id-based-policies"></a>

**支持基于身份的策略：**是

基于身份的策略是可附加到身份（如 IAM 用户、用户组或角色）的 JSON 权限策略文档。这些策略控制用户和角色可在何种条件下对哪些资源执行哪些操作。要了解如何创建基于身份的策略，请参阅《IAM 用户指南》**中的[使用客户管理型策略定义自定义 IAM 权限](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_create.html)。

通过使用 IAM 基于身份的策略，您可以指定允许或拒绝的操作和资源以及允许或拒绝操作的条件。要了解可在 JSON 策略中使用的所有元素，请参阅《IAM 用户指南》**中的 [IAM JSON 策略元素引用](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements.html)。

### 适用于 MemoryDB 的基于身份的策略示例
<a name="security_iam_service-with-iam-id-based-policies-examples"></a>



要查看 MemoryDB 基于身份的策略的示例，请参阅 [适用于 MemoryDB 的基于身份的策略示例](security_iam_id-based-policy-examples.md)。

## MemoryDB 内基于资源的策略
<a name="security_iam_service-with-iam-resource-based-policies"></a>

**支持基于资源的策略：**否 

基于资源的策略是附加到资源的 JSON 策略文档。基于资源的策略的示例包括 IAM *角色信任策略*和 Amazon S3 *存储桶策略*。在支持基于资源的策略的服务中，服务管理员可以使用它们来控制对特定资源的访问。对于在其中附加策略的资源，策略定义指定主体可以对该资源执行哪些操作以及在什么条件下执行。您必须在基于资源的策略中[指定主体](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements_principal.html)。委托人可以包括账户、用户、角色、联合用户或 AWS 服务。

要启用跨账户访问，您可以将整个账户或其他账户中的 IAM 实体指定为基于资源的策略中的主体。有关更多信息，请参阅《IAM 用户指南》**中的 [IAM 中的跨账户资源访问](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies-cross-account-resource-access.html)。

## 适用于 MemoryDB 的策略操作
<a name="security_iam_service-with-iam-id-based-policies-actions"></a>

**支持策略操作：**是

管理员可以使用 AWS JSON 策略来指定谁有权访问什么。也就是说，哪个**主体**可以对什么**资源**执行**操作**，以及在什么**条件**下执行。

JSON 策略的 `Action` 元素描述可用于在策略中允许或拒绝访问的操作。在策略中包含操作以授予执行关联操作的权限。



要查看 MemoryDB 操作的列表，请参阅《服务授权参考》**中的 [MemoryDB 定义的操作](https://docs.aws.amazon.com/IAM/latest/UserGuide/list_awskeymanagementservice.html#awskeymanagementservice-actions-as-permissions)。

MemoryDB 中的策略操作在操作前使用以下前缀：

```
MemoryDB
```

要在单个语句中指定多项操作，请使用逗号将它们隔开。

```
"Action": [
      "MemoryDB:action1",
      "MemoryDB:action2"
         ]
```





您也可以使用通配符（\$1）指定多个操作。例如，要指定以单词 `Describe` 开头的所有操作，包括以下操作：

```
"Action": "MemoryDB:Describe*"
```

要查看 MemoryDB 基于身份的策略的示例，请参阅 [适用于 MemoryDB 的基于身份的策略示例](security_iam_id-based-policy-examples.md)。

## 适用于 MemoryDB 的策略资源
<a name="security_iam_service-with-iam-id-based-policies-resources"></a>

**支持策略资源：**是

管理员可以使用 AWS JSON 策略来指定谁有权访问什么。也就是说，哪个**主体**可以对什么**资源**执行**操作**，以及在什么**条件**下执行。

`Resource` JSON 策略元素指定要向其应用操作的一个或多个对象。作为最佳实践，请使用其 [Amazon 资源名称（ARN）](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference-arns.html)指定资源。对于不支持资源级权限的操作，请使用通配符 (\$1) 指示语句应用于所有资源。

```
"Resource": "*"
```

*要查看 MemoryDB 资源类型及其列表 ARNs，请参阅《服务授权参考[》中的 MemoryDB 定义的资源](https://docs.aws.amazon.com/IAM/latest/UserGuide/list_awskeymanagementservice.html#awskeymanagementservice-resources-for-iam-policies)。*要了解您可以在哪些操作中指定每个资源的 ARN，请参阅 [MemoryDB 定义的操作](https://docs.aws.amazon.com/IAM/latest/UserGuide/list_awskeymanagementservice.html#awskeymanagementservice-actions-as-permissions)。





要查看 MemoryDB 基于身份的策略的示例，请参阅 [适用于 MemoryDB 的基于身份的策略示例](security_iam_id-based-policy-examples.md)。

## MemoryDB 的策略条件键
<a name="security_iam_service-with-iam-id-based-policies-conditionkeys"></a>

**支持特定于服务的策略条件键：**是

管理员可以使用 AWS JSON 策略来指定谁有权访问什么。也就是说，哪个**主体**可以对什么**资源**执行**操作**，以及在什么**条件**下执行。

`Condition` 元素根据定义的条件指定语句何时执行。您可以创建使用[条件运算符](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements_condition_operators.html)（例如，等于或小于）的条件表达式，以使策略中的条件与请求中的值相匹配。要查看所有 AWS 全局条件键，请参阅 *IAM 用户指南*中的[AWS 全局条件上下文密钥](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html)。

要查看 MemoryDB 基于身份的策略的示例，请参阅 [适用于 MemoryDB 的基于身份的策略示例](security_iam_id-based-policy-examples.md)。

### 使用条件键
<a name="IAM.ConditionKeys"></a>

您可以指定决定 IAM 策略如何生效的条件。在 MemoryDB 中，您可以使用 JSON 策略的 `Condition` 元素将请求上下文中的键与您在策略中指定的键值进行比较。有关更多信息，请参阅 [IAM JSON 策略元素：条件](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements_condition.html)。

有关 MemoryDB 条件键的列表，请参阅《服务授权参考》**中的 [MemoryDB 的条件键](https://docs.aws.amazon.com/IAM/latest/UserGuide/list_awskeymanagementservice.html#awskeymanagementservice-policy-keys)。

有关全局条件键的列表，请参阅 [AWS 全局条件上下文键](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html)。

#### 指定条件：使用条件键
<a name="IAM.SpecifyingConditions"></a>

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

要应用条件，请将条件信息添加到 IAM 策略语句。例如，要禁止创建任何禁用了 TLS 的 MemoryDB 集群，可以在策略声明中指定以下条件。

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

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Deny",
      "Action": [
        "memorydb:CreateCluster"
      ],
      "Resource": [
        "*"
      ],
      "Condition": {
        "Bool": {
          "memorydb:TLSEnabled": "false"
        }
      }
    }
  ]
}
```

------

有关标记的更多信息，请参阅[标记 MemoryDB 资源](tagging-resources.md)。

有关使用策略条件运算符的更多信息，请参阅 [MemoryDB API 权限：操作、资源和条件参考](iam.APIReference.md)。

#### 策略示例：使用条件实现精细参数控制
<a name="IAM.ExamplePolicies"></a>

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

1. **memorydb: TLSEnabled** — 指定仅在启用 TLS 的情况下创建集群。

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

****  

   ```
   {
       "Version":"2012-10-17",		 	 	 
       "Statement": [
                 {
               "Effect": "Allow",
               "Action": [
                   "memorydb:CreateCluster"
               ],
               "Resource": [
                   "arn:aws:memorydb:*:*:parametergroup/*",
                   "arn:aws:memorydb:*:*:subnetgroup/*",
                   "arn:aws:memorydb:*:*:acl/*"
               ]
           },
           {
               "Effect": "Allow",
               "Action": [
                   "memorydb:CreateCluster"
               ],
               "Resource": [
                   "*"
               ],
               "Condition": {
                   "Bool": {
                       "memorydb:TLSEnabled": "true"
                   }
               }
           }
       ]
   }
   ```

------

1. **memorydbUserAuthenticationMode::** — 指定可以使用特定类型的身份验证模式（例如 IAM）创建用户。

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

****  

   ```
   {
       "Version":"2012-10-17",		 	 	 
       "Statement": [
           {
               "Effect": "Allow",
               "Action": [
                   "memorydb:Createuser"
               ],
               "Resource": [
                   "arn:aws:memorydb:*:*:user/*"
               ],
               "Condition": {
                   "StringEquals": {
                       "memorydb:UserAuthenticationMode": "iam"
                   }
               }
           }
       ]
   }
   ```

------

   如果您要设置基于 “拒绝” 的策略，则无论情况如何，都建议使用[StringEqualsIgnoreCase](https://docs.aws.amazon.com//IAM/latest/UserGuide/reference_policies_elements_condition_operators.html#Conditions_String)运算符来避免使用特定用户身份验证模式类型的所有呼叫。

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

****  

   ```
   {
     "Version":"2012-10-17",		 	 	 
     "Statement": [
       {
         "Effect": "Deny",
         "Action": [
           "memorydb:CreateUser"
         ],
         "Resource": "*",
         "Condition": {
           "StringEqualsIgnoreCase": {
             "memorydb:UserAuthenticationMode": "password"
           }
         }
       }
     ]
   }
   ```

------

## MemoryDB 中的访问控制列表 (ACLs)
<a name="security_iam_service-with-iam-acls"></a>

**支持 ACLs：**是

访问控制列表 (ACLs) 控制哪些委托人（账户成员、用户或角色）有权访问资源。 ACLs 与基于资源的策略类似，尽管它们不使用 JSON 策略文档格式。

## 使用 MemoryDB 的基于属性的访问权限控制（ABAC）
<a name="security_iam_service-with-iam-tags"></a>

**支持 ABAC（策略中的标签）：**是

基于属性的访问权限控制（ABAC）是一种授权策略，该策略基于称为标签的属性来定义权限。您可以将标签附加到 IAM 实体和 AWS 资源，然后设计 ABAC 策略以允许在委托人的标签与资源上的标签匹配时进行操作。

要基于标签控制访问，您需要使用 `aws:ResourceTag/key-name``aws:RequestTag/key-name` 或 `aws:TagKeys` 条件键在策略的[条件元素](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements_condition.html)中提供标签信息。

如果某个服务对于每种资源类型都支持所有这三个条件键，则对于该服务，该值为**是**。如果某个服务仅对于部分资源类型支持所有这三个条件键，则该值为**部分**。

有关 ABAC 的更多信息，请参阅《IAM 用户指南》**中的[使用 ABAC 授权定义权限](https://docs.aws.amazon.com/IAM/latest/UserGuide/introduction_attribute-based-access-control.html)。要查看设置 ABAC 步骤的教程，请参阅《IAM 用户指南》**中的[使用基于属性的访问权限控制（ABAC）](https://docs.aws.amazon.com/IAM/latest/UserGuide/tutorial_attribute-based-access-control.html)。

## 将临时凭证用于 MemoryDB
<a name="security_iam_service-with-iam-roles-tempcreds"></a>

**支持临时凭证：**是

临时证书提供对 AWS 资源的短期访问权限，并且是在您使用联合身份或切换角色时自动创建的。 AWS 建议您动态生成临时证书，而不是使用长期访问密钥。有关更多信息，请参阅《IAM 用户指南》**中的 [IAM 中的临时安全凭证](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_temp.html)和[使用 IAM 的。AWS 服务](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_aws-services-that-work-with-iam.html)

## MemoryDB 的跨服务主体权限
<a name="security_iam_service-with-iam-principal-permissions"></a>

**支持转发访问会话（FAS）：**是

 转发访问会话 (FAS) 使用调用主体的权限 AWS 服务，再加上 AWS 服务 向下游服务发出请求的请求。有关发出 FAS 请求时的策略详情，请参阅[转发访问会话](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_forward_access_sessions.html)。

## MemoryDB 的服务角色
<a name="security_iam_service-with-iam-roles-service"></a>

**支持服务角色：**是

 服务角色是由一项服务担任、代表您执行操作的 [IAM 角色](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles.html)。IAM 管理员可以在 IAM 中创建、修改和删除服务角色。有关更多信息，请参阅《IAM 用户指南》**中的[创建向 AWS 服务委派权限的角色](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_create_for-service.html)。

**警告**  
更改服务角色的权限可能会破坏 MemoryDB 的功能。仅当 MemoryDB 提供相关指导时才编辑服务角色。

## MemoryDB 的服务相关角色
<a name="security_iam_service-with-iam-roles-service-linked"></a>

**支持服务关联角色：**是

 服务相关角色是一种与服务相关联的 AWS 服务服务角色。服务可以代入代表您执行操作的角色。服务相关角色出现在您的中 AWS 账户 ，并且归服务所有。IAM 管理员可以查看但不能编辑服务关联角色的权限。

有关创建或管理服务相关角色的详细信息，请参阅[能够与 IAM 搭配使用的AWS 服务](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_aws-services-that-work-with-iam.html)。在表中查找**服务相关角色**列中包含 `Yes` 的表。选择**是**链接以查看该服务的服务相关角色文档。

# 适用于 MemoryDB 的基于身份的策略示例
<a name="security_iam_id-based-policy-examples"></a>

默认情况下，用户和角色没有创建或修改 MemoryDB 资源的权限。要授予用户对所需资源执行操作的权限，IAM 管理员可以创建 IAM 策略。

要了解如何使用这些示例 JSON 策略文档创建基于 IAM 身份的策略，请参阅《IAM 用户指南》**中的[创建 IAM 策略（控制台）](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_create-console.html)。

*有关 MemoryDB 定义的操作和资源类型（包括每种资源类型的格式）的详细信息，请参阅《服务授权参考》中的 [MemoryDB 的操作、资源和条件键](https://docs.aws.amazon.com/IAM/latest/UserGuide/list_awskeymanagementservice.html)。 ARNs *

**Topics**
+ [策略最佳实践](#security_iam_service-with-iam-policy-best-practices)
+ [使用 MemoryDB 控制台](#security_iam_id-based-policy-examples-console)
+ [允许用户查看他们自己的权限](#security_iam_id-based-policy-examples-view-own-permissions)

## 策略最佳实践
<a name="security_iam_service-with-iam-policy-best-practices"></a>

基于身份的策略确定某个人是否可以创建、访问或删除您账户中的 MemoryDB 资源。这些操作可能会使 AWS 账户产生成本。创建或编辑基于身份的策略时，请遵循以下指南和建议：
+ **开始使用 AWS 托管策略并转向最低权限权限** — 要开始向用户和工作负载授予权限，请使用为许多常见用例授予权限的*AWS 托管策略*。它们在你的版本中可用 AWS 账户。我们建议您通过定义针对您的用例的 AWS 客户托管策略来进一步减少权限。有关更多信息，请参阅《IAM 用户指南》**中的 [AWS 托管策略](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_managed-vs-inline.html#aws-managed-policies)或[工作职能的AWS 托管策略](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_job-functions.html)。
+ **应用最低权限**：在使用 IAM 策略设置权限时，请仅授予执行任务所需的权限。为此，您可以定义在特定条件下可以对特定资源执行的操作，也称为*最低权限许可*。有关使用 IAM 应用权限的更多信息，请参阅《IAM 用户指南》**中的 [IAM 中的策略和权限](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies.html)。
+ **使用 IAM 策略中的条件进一步限制访问权限**：您可以向策略添加条件来限制对操作和资源的访问。例如，您可以编写策略条件来指定必须使用 SSL 发送所有请求。如果服务操作是通过特定 AWS 服务的（例如）使用的，则也可以使用条件来授予对服务操作的访问权限 CloudFormation。有关更多信息，请参阅《IAM 用户指南》**中的 [IAM JSON 策略元素：条件](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements_condition.html)。
+ **使用 IAM Access Analyzer 验证您的 IAM 策略，以确保权限的安全性和功能性**：IAM Access Analyzer 会验证新策略和现有策略，以确保策略符合 IAM 策略语言（JSON）和 IAM 最佳实践。IAM Access Analyzer 提供 100 多项策略检查和可操作的建议，以帮助您制定安全且功能性强的策略。有关更多信息，请参阅《IAM 用户指南》**中的[使用 IAM Access Analyzer 验证策略](https://docs.aws.amazon.com/IAM/latest/UserGuide/access-analyzer-policy-validation.html)。
+ **需要多重身份验证 (MFA**)-如果 AWS 账户您的场景需要 IAM 用户或根用户，请启用 MFA 以提高安全性。若要在调用 API 操作时需要 MFA，请将 MFA 条件添加到您的策略中。有关更多信息，请参阅《IAM 用户指南》**中的[使用 MFA 保护 API 访问](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_mfa_configure-api-require.html)。

有关 IAM 中的最佳实操的更多信息，请参阅《IAM 用户指南》**中的 [IAM 中的安全最佳实践](https://docs.aws.amazon.com/IAM/latest/UserGuide/best-practices.html)。

## 使用 MemoryDB 控制台
<a name="security_iam_id-based-policy-examples-console"></a>

要访问 MemoryDB 控制台，您必须拥有一组最低的权限。这些权限必须允许您列出和查看有关您的 MemoryDB 资源的详细信息。 AWS 账户如果创建比必需的最低权限更为严格的基于身份的策略，对于附加了该策略的实体（用户或角色），控制台将无法按预期正常运行。

对于仅调用 AWS CLI 或 AWS API 的用户，您无需为其设置最低控制台权限。相反，只允许访问与其尝试执行的 API 操作相匹配的操作。

为确保用户和角色仍然可以使用 MemoryDB 控制台，还需要将 MemoryDB `ConsoleAccess` 或`ReadOnly` AWS 托管策略附加到实体。有关更多信息，请参阅《IAM 用户指南》**中的[为用户添加权限](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_users_change-permissions.html#users_change_permissions-add-console)。

## 允许用户查看他们自己的权限
<a name="security_iam_id-based-policy-examples-view-own-permissions"></a>

该示例说明了您如何创建策略，以允许 IAM 用户查看附加到其用户身份的内联和托管式策略。此策略包括在控制台上或使用 AWS CLI 或 AWS API 以编程方式完成此操作的权限。

```
{
    "Version": "2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "ViewOwnUserInfo",
            "Effect": "Allow",
            "Action": [
                "iam:GetUserPolicy",
                "iam:ListGroupsForUser",
                "iam:ListAttachedUserPolicies",
                "iam:ListUserPolicies",
                "iam:GetUser"
            ],
            "Resource": ["arn:aws:iam::*:user/${aws:username}"]
        },
        {
            "Sid": "NavigateInConsole",
            "Effect": "Allow",
            "Action": [
                "iam:GetGroupPolicy",
                "iam:GetPolicyVersion",
                "iam:GetPolicy",
                "iam:ListAttachedGroupPolicies",
                "iam:ListGroupPolicies",
                "iam:ListPolicyVersions",
                "iam:ListPolicies",
                "iam:ListUsers"
            ],
            "Resource": "*"
        }
    ]
}
```







# 排查 MemoryDB 的身份和访问权限
<a name="security_iam_troubleshoot"></a>

使用以下信息可帮助您诊断和修复在使用 MemoryDB 和 IAM 时可能遇到的常见问题。

**Topics**
+ [我无权在 MemoryDB 中执行操作](#security_iam_troubleshoot-no-permissions)
+ [我无权执行 iam：PassRole](#security_iam_troubleshoot-passrole)
+ [我想允许 AWS 账户之外的人访问我的 MemoryDB 资源](#security_iam_troubleshoot-cross-account-access)

## 我无权在 MemoryDB 中执行操作
<a name="security_iam_troubleshoot-no-permissions"></a>

如果 AWS 管理控制台 告诉您您无权执行某项操作，则必须联系管理员寻求帮助。管理员是指提供用户名和密码的人员。

当 `mateojackson` 用户尝试使用控制台查看有关虚构 `my-example-widget` 资源的详细信息，但不拥有虚构 `MemoryDB:GetWidget` 权限时，会发生以下示例错误。

```
User: arn:aws:iam::123456789012:user/mateojackson is not authorized to perform: MemoryDB:GetWidget on resource: my-example-widget
```

在这种情况下，Mateo 请求他的管理员更新其策略，以允许他使用 `MemoryDB:GetWidget` 操作访问 `my-example-widget` 资源。

## 我无权执行 iam：PassRole
<a name="security_iam_troubleshoot-passrole"></a>

如果您收到一个错误，表明您无权执行 `iam:PassRole` 操作，则必须更新策略以允许您将角色传递给 MemoryDB。

有些 AWS 服务 允许您将现有角色传递给该服务，而不是创建新的服务角色或服务相关角色。为此，您必须具有将角色传递到服务的权限。

当名为 `marymajor` 的 IAM 用户尝试使用控制台在 MemoryDB 中执行操作时，会发生以下示例错误。但是，服务必须具有服务角色所授予的权限才可执行此操作。Mary 不具有将角色传递到服务的权限。

```
User: arn:aws:iam::123456789012:user/marymajor is not authorized to perform: iam:PassRole
```

在这种情况下，必须更新 Mary 的策略以允许她执行 `iam:PassRole` 操作。

如果您需要帮助，请联系您的 AWS 管理员。您的管理员是提供登录凭证的人。

## 我想允许 AWS 账户之外的人访问我的 MemoryDB 资源
<a name="security_iam_troubleshoot-cross-account-access"></a>

您可以创建一个角色，以便其他账户中的用户或您组织外的人员可以使用该角色来访问您的资源。您可以指定谁值得信赖，可以代入角色。对于支持基于资源的策略或访问控制列表 (ACLs) 的服务，您可以使用这些策略向人们授予访问您的资源的权限。

要了解更多信息，请参阅以下内容：
+ 要了解 MemoryDB 是否支持这些特征，请参阅 [MemoryDB 如何与 IAM 协同工作](security_iam_service-with-iam.md)。
+ 要了解如何提供对您拥有的资源的访问权限 AWS 账户 ，请参阅 [IAM 用户*指南中的向您拥有 AWS 账户 的另一个 IAM 用户*提供访问](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_common-scenarios_aws-accounts.html)权限。
+ 要了解如何向第三方提供对您的资源的访问[权限 AWS 账户，请参阅 *IAM 用户指南*中的向第三方提供](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_common-scenarios_third-party.html)访问权限。 AWS 账户 
+ 要了解如何通过身份联合验证提供访问权限，请参阅《IAM 用户指南》**中的[为经过外部身份验证的用户（身份联合验证）提供访问权限](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_common-scenarios_federated-users.html)。
+ 要了解使用角色和基于资源的策略进行跨账户访问之间的差别，请参阅《IAM 用户指南》**中的 [IAM 中的跨账户资源访问](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies-cross-account-resource-access.html)。

## 访问控制
<a name="iam.accesscontrol"></a>

您可以使用有效的凭证来对自己的请求进行身份验证，但您还必须拥有权限才能创建或访问 MemoryDB 资源。例如，您必须拥有创建 MemoryDB 集群的权限。

下面几节介绍如何管理 MemoryDB 的权限。我们建议您先阅读概述。
+ [管理 MemoryDB 资源的访问权限的概述](iam.overview.md)
+ [为 MemoryDB 使用基于身份的策略（IAM 策略）](iam.identitybasedpolicies.md)

# 管理 MemoryDB 资源的访问权限的概述
<a name="iam.overview"></a>

每个 AWS 资源都归一个 AWS 账户所有，创建或访问资源的权限受权限策略的约束。账户管理员可以向 IAM 身份（即：用户、组和角色）附加权限策略。此外，MemoryDB 还支持向资源附加权限策略。

**注意**  
*账户管理员*（或管理员用户）是具有管理员权限的用户。有关更多信息，请参阅《IAM 用户指南》**中的 [IAM 最佳实操](https://docs.aws.amazon.com/IAM/latest/UserGuide/best-practices.html)。

要提供访问权限，请为您的用户、组或角色添加权限：
+ 中的用户和群组 AWS IAM Identity Center：

  创建权限集合。按照《AWS IAM Identity Center 用户指南》**中[创建权限集](https://docs.aws.amazon.com//singlesignon/latest/userguide/howtocreatepermissionset.html)的说明进行操作。
+ 通过身份提供者在 IAM 中托管的用户：

  创建适用于身份联合验证的角色。按照《IAM 用户指南》**中[针对第三方身份提供者创建角色（联合身份验证）](https://docs.aws.amazon.com//IAM/latest/UserGuide/id_roles_create_for-idp.html)的说明进行操作。
+ IAM 用户：
  + 创建您的用户可以担任的角色。按照《IAM 用户指南》**中[为 IAM 用户创建角色](https://docs.aws.amazon.com//IAM/latest/UserGuide/id_roles_create_for-user.html)的说明进行操作。
  + （不推荐使用）将策略直接附加到用户或将用户添加到用户组。按照《IAM 用户指南》**中[向用户添加权限（控制台）](https://docs.aws.amazon.com//IAM/latest/UserGuide/id_users_change-permissions.html#users_change_permissions-add-console)中的说明进行操作。

**Topics**
+ [MemoryDB 资源和操作](#iam.overview.resourcesandoperations)
+ [了解资源所有权](#access-control-resource-ownership)
+ [管理对 资源的访问](#iam.overview.managingaccess)
+ [为 MemoryDB 使用基于身份的策略（IAM 策略）](iam.identitybasedpolicies.md)
+ [资源级权限](iam.resourcelevelpermissions.md)
+ [使用 MemoryDB 的服务相关角色](using-service-linked-roles.md)
+ [AWS MemoryDB 的托管策略](security-iam-awsmanpol.md)
+ [MemoryDB API 权限：操作、资源和条件参考](iam.APIReference.md)

## MemoryDB 资源和操作
<a name="iam.overview.resourcesandoperations"></a>

在 MemoryDB 中，主要资源是*集群*。

这些资源具有与之关联的唯一 Amazon 资源名称 (ARNs)，如下所示。

**注意**  
为了使资源级权限生效，ARN 字符串上的资源名称应该为小写。


****  

| 资源类型 | ARN 格式 | 
| --- | --- | 
| 用户  | arn: aws: memorydb:: user/user1 *us-east-1:123456789012* | 
| 访问控制列表（ACL）  | arn: aws: memorydb:: acl/myacl *us-east-1:123456789012* | 
| Cluster  | arn: aws: memorydb:: cluster/my-cluster *us-east-1:123456789012* | 
| 快照  | arn: aws: memorydb:: snapshot/my-snashot *us-east-1:123456789012* | 
| 参数组  | arn: aws: memorydb:: parametergroup/ *us-east-1:123456789012* my-parameter-group | 
| 子网组  | arn: aws: memorydb:: subnetgroup/ *us-east-1:123456789012* my-subnet-group | 

MemoryDB 提供一组操作用来处理 MemoryDB 资源。有关可用操作的列表，请参阅 MemoryDB [操作](https://docs.aws.amazon.com/memorydb/latest/APIReference/API_Operations.html)。

## 了解资源所有权
<a name="access-control-resource-ownership"></a>

*资源所有者*是创建资源的 AWS 账户。也就是说，资源所有者是对创建资源的请求进行身份验证的委托人实体的 AWS 账户。*委托人实体*可以是根账户、IAM 用户或 IAM 角色。以下示例说明了它的工作原理：
+ 假设您使用账户的根 AWS 账户凭证创建集群。在这种情况下，您的 AWS 账户就是资源的所有者。在 MemoryDB 中，该资源为集群。
+ 假设您在 AWS 账户中创建了一个 IAM 用户，并向该用户授予创建集群的权限。在这种情况下，用户可以创建集群。但是，该用户所属的您的 AWS 账户拥有群集资源。
+ 假设您在 AWS 账户中创建了一个拥有创建集群权限的 IAM 角色。在这种情况下，任何可以代入该角色的人都可以创建集群。该角色所属的您的 AWS 账户拥有群集资源。

## 管理对 资源的访问
<a name="iam.overview.managingaccess"></a>

*权限策略*规定谁可以访问哪些内容。下一节介绍创建权限策略时的可用选项。

**注意**  
本节讨论如何在 MemoryDB 范围内使用 IAM。这里不提供有关 IAM 服务的详细信息。有关完整的 IAM 文档，请参阅《IAM 用户指南》中的[什么是 IAM？](https://docs.aws.amazon.com/IAM/latest/UserGuide/introduction.html)。有关 IAM 策略语法和说明的信息，请参阅《IAM 用户指南》中的 [AWS IAM 策略参考](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies.html)。

附加到 IAM 身份的策略称为*基于身份*的策略（IAM 策略）。附加到资源的策略称为*基于资源的策略*。

**Topics**
+ [基于身份的策略（IAM 策略）](#iam.overview.managingaccess.identitybasedpolicies)
+ [指定策略元素：操作、效果、资源和主体](#iam.overview.policyelements)
+ [在策略中指定条件](#iam.specifyconditions)

### 基于身份的策略（IAM 策略）
<a name="iam.overview.managingaccess.identitybasedpolicies"></a>

您可以向 IAM 身份附加策略。例如，您可以执行以下操作：
+ **向您账户中的用户或组附加权限策略** – 账户管理员可以使用与特定用户关联的权限策略来授予权限。在这种情况下，权限可供该用户创建 MemoryDB 资源，例如集群、参数组或安全组。
+ **向角色附加权限策略（授予跨账户权限）**：您可以向 IAM 角色附加基于身份的权限策略，以授予跨账户的权限。例如，账户 A 中的管理员可以创建一个角色来向另一个 AWS 账户（例如账户 B）或 AWS 服务授予跨账户权限，如下所示：

  1. 账户 A 管理员可以创建一个 IAM 角色，然后向该角色附加授予其访问账户 A 中资源的权限策略。

  1. 账户 A 管理员可以把信任策略附加至用来标识账户 B 的角色，账户 B 由此可以作为主体代入该角色。

  1. 然后，账户 B 管理员可以向账户 B 中的任何用户委派担任该角色的权限。这样，账户 B 中的用户就可以创建或访问账户 A 中的资源。在某些情况下，您可能需要向 AWS 服务授予代入该角色的权限。为支持此方法，信任策略中的委托人也可以是 AWS 服务委托人。

  有关使用 IAM 委托权限的更多信息，请参阅《IAM 用户指南》**中的[访问权限管理](https://docs.aws.amazon.com/IAM/latest/UserGuide/access.html)。

以下是允许用户对您的 AWS 账户执行`DescribeClusters`操作的策略示例。MemoryDB 还支持使用用 ARNs 于 API 操作的资源来识别特定资源。（此方法也称为资源级权限。） 

有关对 MemoryDB 使用基于身份的策略的更多信息，请参阅 [为 MemoryDB 使用基于身份的策略（IAM 策略）](iam.identitybasedpolicies.md)。有关用户、组、角色和权限的更多信息，请参阅 *IAM 用户指南*中的[身份（用户、组和角色）](https://docs.aws.amazon.com/IAM/latest/UserGuide/id.html)。

### 指定策略元素：操作、效果、资源和主体
<a name="iam.overview.policyelements"></a>

对于每个 MemoryDB 资源（请参阅 [MemoryDB 资源和操作](#iam.overview.resourcesandoperations)），该服务都定义了一组 API 操作（请参阅[操作](https://docs.aws.amazon.com/memorydb/latest/APIReference/API_Operations.html)）。为授予这些 API 操作的权限，MemoryDB 定义了一组您可以在策略中指定的操作。例如，对于 MemoryDB 集群资源，定义了以下操作：`CreateCluster`、`DeleteCluster` 和 `DescribeClusters`。执行一个 API 操作可能需要多个操作的权限。

以下是最基本的策略元素：
+ **资源**：在策略中，您可以使用 Amazon Resource Name（ARN）标识策略应用到的资源。有关更多信息，请参阅 [MemoryDB 资源和操作](#iam.overview.resourcesandoperations)。
+ **操作** – 您可以使用操作关键字标识要允许或拒绝的资源操作。例如，根据指定的 `Effect`，`memorydb:CreateCluster` 权限允许或拒绝执行 MemoryDB `CreateCluster` 操作的用户权限。
+ **效果**：您可以指定当用户请求特定操作（可以是允许或拒绝）时的效果。如果没有显式授予（允许）对资源的访问权限，则隐式拒绝访问。您也可显式拒绝对资源的访问。例如，您可以执行此操作，以确保用户无法访问资源，即使有其他策略授予了访问权限也是如此。
+ **主体**：在基于身份的策略（IAM 策略）中，附加了策略的用户是隐式主体。对于基于资源的策略，您可以指定要接收权限的用户、账户、服务或其他实体（仅适用于基于资源的策略）。

有关 IAM 策略语法和描述的更多信息，请参阅《IAM 用户指南》**中的 [AWS IAM 策略参考](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies.html)。

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

### 在策略中指定条件
<a name="iam.specifyconditions"></a>

当您授予权限时，可使用 IAM 策略语言来指定规定策略何时生效的条件。例如，您可能希望策略仅在特定日期后应用。有关使用策略语言指定条件的更多信息，请参阅《IAM 用户指南》**中的[条件](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements.html#Condition)。



# 为 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"
        }
      }
    }
  ]
}
```

------

# 资源级权限
<a name="iam.resourcelevelpermissions"></a>

您可以通过在 IAM 策略中指定资源来限制权限范围。许多 AWS CLI API 操作支持的资源类型因操作的行为而异。每条 IAM 策略语句为对一个资源执行的一个操作授予权限。如果操作不对指定资源执行操作，或者您授予对所有资源执行操作的权限，则策略中资源的值为通配符（\$1）。对于许多 API 操作，可以通过指定资源的 Amazon 资源名称（ARN）或与多个资源匹配的 ARN 模式来限制用户可修改的资源。要按资源限制权限，请指定资源的 ARN。

**MemoryDB 资源 ARN 格式**

**注意**  
为了使资源级权限生效，ARN 字符串中的资源名称应为小写。
+ 用户 — arn: aws: memorydb:: user/user1 *us-east-1:123456789012*
+ ACL — arn: aws: memorydb:: acl/my-acl *us-east-1:123456789012*
+ 集群 — arn: aws: memorydb:: cluster/my-cluster *us-east-1:123456789012*
+ 快照 — arn: aws: memorydb:: snapshot/my-snapshot *us-east-1:123456789012*
+ 参数组 — arn: aws: memorydb:: parametergroup/ *us-east-1:123456789012* my-parameter-group
+ 子网组 — arn: aws: memorydb:: subnetgroup/ *us-east-1:123456789012* my-subnet-group

**Topics**
+ [示例 1：允许用户完全访问特定 MemoryDB 资源类型](#example-allow-list-current-memorydb-resources-resource)
+ [示例 2：拒绝用户访问集群。](#example-allow-specific-memorydb-actions-resource)

## 示例 1：允许用户完全访问特定 MemoryDB 资源类型
<a name="example-allow-list-current-memorydb-resources-resource"></a>

以下策略明确允许指定的 `account-id` 完全访问子网组、安全组和集群类型的所有资源。

```
{
        "Sid": "Example1",
        "Effect": "Allow",
        "Action": "memorydb:*",
        "Resource": [
             "arn:aws:memorydb:us-east-1:account-id:subnetgroup/*",
             "arn:aws:memorydb:us-east-1:account-id:securitygroup/*",
             "arn:aws:memorydb:us-east-1:account-id:cluster/*"
        ]
}
```

## 示例 2：拒绝用户访问集群。
<a name="example-allow-specific-memorydb-actions-resource"></a>

以下示例明确拒绝对特定集群进行指定 `account-id` 访问。

```
{
        "Sid": "Example2",
        "Effect": "Deny",
        "Action": "memorydb:*",
        "Resource": [
                "arn:aws:memorydb:us-east-1:account-id:cluster/name"
        ]
}
```

# 使用 MemoryDB 的服务相关角色
<a name="using-service-linked-roles"></a>

MemoryDB 使用 AWS Identity and Access Management (IAM) [服务相关](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_terms-and-concepts.html#iam-term-service-linked-role)角色。服务相关角色是一种独特的 IAM 角色，直接链接到 AWS 服务，例如 MemoryDB。MemoryDB 服务相关角色由 MemoryDB 预定义。它们包含该服务代表您的集群调用 AWS 服务所需的一切权限。

使用服务相关角色时，您不必手动添加必要的权限，所以您可以更轻松地设置 MemoryDB。这些角色已存在于您的 AWS 账户中，但已关联到 MemoryDB 用例并具有预定义的权限。只有 MemoryDB 可以代入这些角色，并且只有这些角色可以使用预定义的权限策略。只有先删除角色的相关资源，才能删除角色。这将保护您的 MemoryDB 资源，因为您不会无意中删除访问资源的必要权限。

有关支持服务相关角色的其他服务的信息，请参阅[使用 IAM 的AWS 服务](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_aws-services-that-work-with-iam.html)并查找**服务相关角色**列中显示为**是**的服务。选择**是**和链接，查看该服务的服务关联角色文档。

**Contents**
+ [服务相关角色权限](#service-linked-role-permissions)
+ [创建服务相关角色（IAM）](#create-service-linked-role-iam)
  + [使用 IAM 控制台](#create-service-linked-role-iam-console)
  + [使用 IAM CLI](#create-service-linked-role-iam-cli)
  + [使用 IAM API](#create-service-linked-role-iam-api)
+ [编辑服务相关角色描述](#edit-service-linked-role)
  + [使用 IAM 控制台](#edit-service-linked-role-iam-console)
  + [使用 IAM CLI](#edit-service-linked-role-iam-cli)
  + [使用 IAM API](#edit-service-linked-role-iam-api)
+ [删除 MemoryDB 的服务相关角色](#delete-service-linked-role)
  + [清除服务相关角色](#service-linked-role-review-before-delete)
  + [删除服务相关角色（IAM 控制台）](#delete-service-linked-role-iam-console)
  + [删除服务相关角色（IAM CLI）](#delete-service-linked-role-iam-cli)
  + [删除服务相关角色（IAM API）](#delete-service-linked-role-iam-api)

## MemoryDB 的服务相关角色权限
<a name="service-linked-role-permissions"></a>

MemoryDB 使用名为 **AWSServiceRoleForMemoryDB** 的服务相关角色 — 此策略允许 MemoryDB 在必要时代表您管理管理集群的 AWS 资源。

 AWSServiceRoleForMemory数据库服务相关角色权限策略允许 MemoryDB 对指定资源完成以下操作：

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

****  

```
{
	"Version":"2012-10-17",		 	 	 
	"Statement": [
		{
			"Effect": "Allow",
			"Action": [
				"ec2:CreateTags"
			],
			"Resource": "arn:aws-cn:ec2:*:*:network-interface/*",
			"Condition": {
				"StringEquals": {
					"ec2:CreateAction": "CreateNetworkInterface"
				},
				"ForAllValues:StringEquals": {
					"aws:TagKeys": [
						"AmazonMemoryDBManaged"
					]
				}
			}
		},
		{
			"Effect": "Allow",
			"Action": [
				"ec2:CreateNetworkInterface"
			],
			"Resource": [
				"arn:aws-cn:ec2:*:*:network-interface/*",
				"arn:aws-cn:ec2:*:*:subnet/*",
				"arn:aws-cn:ec2:*:*:security-group/*"
			]
		},
		{
			"Effect": "Allow",
			"Action": [
				"ec2:DeleteNetworkInterface",
				"ec2:ModifyNetworkInterfaceAttribute"
			],
			"Resource": "arn:aws-cn:ec2:*:*:network-interface/*",
			"Condition": {
				"StringEquals": {
					"ec2:ResourceTag/AmazonMemoryDBManaged": "true"
				}
			}
		},
		{
			"Effect": "Allow",
			"Action": [
				"ec2:DeleteNetworkInterface",
				"ec2:ModifyNetworkInterfaceAttribute"
			],
			"Resource": "arn:aws-cn:ec2:*:*:security-group/*"
		},
		{
			"Effect": "Allow",
			"Action": [
				"ec2:DescribeSecurityGroups",
				"ec2:DescribeNetworkInterfaces",
				"ec2:DescribeAvailabilityZones",
				"ec2:DescribeSubnets",
				"ec2:DescribeVpcs"
			],
			"Resource": "*"
		},
		{
			"Effect": "Allow",
			"Action": [
				"cloudwatch:PutMetricData"
			],
			"Resource": "*",
			"Condition": {
				"StringEquals": {
					"cloudwatch:namespace": "AWS/MemoryDB"
				}
			}
		}
	]
}
```

------

有关更多信息，请参阅 [AWS 托管策略：内存 DBService RolePolicy](security-iam-awsmanpol.md#security-iam-awsmanpol-memorydbServiceRolePolicy)。

**允许 IAM 实体创建 AWSServiceRoleForMemory数据库服务相关角色**

向该 IAM 实体的权限中添加以下策略声明：

```
{
    "Effect": "Allow",
    "Action": [
        "iam:CreateServiceLinkedRole",
        "iam:PutRolePolicy"
    ],
    "Resource": "arn:aws:iam::*:role/aws-service-role/memorydb.amazonaws.com/AWSServiceRoleForMemoryDB*",
    "Condition": {"StringLike": {"iam:AWS ServiceName": "memorydb.amazonaws.com"}}
}
```

**允许 IAM 实体删除 AWSServiceRoleForMemory数据库服务相关角色**

向该 IAM 实体的权限中添加以下策略声明：

```
{
    "Effect": "Allow",
    "Action": [
        "iam:DeleteServiceLinkedRole",
        "iam:GetServiceLinkedRoleDeletionStatus"
    ],
    "Resource": "arn:aws:iam::*:role/aws-service-role/memorydb.amazonaws.com/AWSServiceRoleForMemoryDB*",
    "Condition": {"StringLike": {"iam:AWS ServiceName": "memorydb.amazonaws.com"}}
}
```

或者，您可以使用 AWS 托管策略来提供对 MemoryDB 的完全访问权限。

## 创建服务相关角色（IAM）
<a name="create-service-linked-role-iam"></a>

您可以使用 IAM 控制台、CLI 或 API 创建服务相关角色。

### 创建服务相关角色（IAM 控制台）
<a name="create-service-linked-role-iam-console"></a>

您可使用 IAM 控制台创建服务相关角色。

**创建服务相关角色（控制台）**

1. 登录 AWS 管理控制台 并打开 IAM 控制台，网址为[https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/)。

1. 在 IAM 控制台的左侧导航窗格中，选择 **Roles**。然后选择**创建新角色**。

1. 在 **Select type of trusted entity（选择受信任实体的类型）**下，选择 **AWS Service（亚马逊云科技服务）**。

1. 在**或选择一个服务以查看其用例**中，选择 **MemoryDB**。

1. 选择**下一步: 权限**。

1. 在 **策略名称**下，请注意此角色需要 `MemoryDBServiceRolePolicy`。选择 **Next:Tags（下一步: 标签）**。

1. 请注意，服务相关角色不支持标签。选择**下一步: 审核**。

1. （可选）对于 **Role description**，编辑新服务相关角色的描述。

1. 检查角色，然后选择**创建角色**。

### 创建服务相关角色（IAM CLI）
<a name="create-service-linked-role-iam-cli"></a>

您可以使用中的 IAM 操作 AWS Command Line Interface 来创建服务相关角色。此角色可以包括服务代入角色时所需的信任策略和内联策略。

**创建服务相关角色（CLI）**

使用以下操作：

```
$ aws iam [create-service-linked-role](https://docs.aws.amazon.com/IAM/latest/APIReference/API_CreateServiceLinkedRole.html) --aws-service-name memorydb.amazonaws.com
```

### 创建服务相关角色（IAM API）
<a name="create-service-linked-role-iam-api"></a>

您可以使用 IAM API 创建服务相关角色。此角色可以包括服务代入角色时所需的信任策略和内联策略。

**创建服务相关角色（API）**

使用 [CreateServiceLinkedRole](https://docs.aws.amazon.com/IAM/latest/APIReference/API_CreateServiceLinkedRole.html) API 调用。在请求中，指定 `memorydb.amazonaws.com` 的服务名称。

## 编辑 MemoryDB 的服务相关角色的描述
<a name="edit-service-linked-role"></a>

MemoryDB 不允许您编辑 AWSServiceRoleForMemory数据库服务相关角色。创建服务关联角色后，您将无法更改角色的名称，因为可能有多种实体引用该角色。但是可以使用 IAM 编辑角色描述。

### 编辑服务相关角色描述（IAM 控制台）
<a name="edit-service-linked-role-iam-console"></a>

您可以使用 IAM 控制台编辑服务相关角色的描述。

**编辑服务相关角色的描述（控制台）**

1. 在 IAM 控制台的左侧导航窗格中，选择 **Roles**。

1. 以下代码示例显示如何将 IAM 策略附加到用户。

1. 在 **Role description** 的最右侧，选择 **Edit**。

1. 在框中输入新描述，然后选择 **Save（保存）**。

### 编辑服务相关角色描述（IAM CLI）
<a name="edit-service-linked-role-iam-cli"></a>

您可以使用中的 IAM 操作 AWS Command Line Interface 来编辑与服务相关的角色描述。

**更改服务相关角色的描述（CLI）**

1. （可选）要查看角色的当前描述，请使用 for AWS CLI IAM 操作`[get-role](https://docs.aws.amazon.com/IAM/latest/APIReference/API_GetRole.html)`。  
**Example**  

   ```
   $ aws iam [get-role](https://docs.aws.amazon.com/IAM/latest/APIReference/API_GetRole.html) --role-name AWSServiceRoleForMemoryDB
   ```

   通过 CLI 操作使用角色名称（并非 ARN）指向角色。例如，如果一个角色的 ARN 为 `arn:aws:iam::123456789012:role/myrole`，则应将角色称为 **myrole**。

1. 要更新服务相关角色的描述，请使用 for I AWS CLI AM 操作`[update-role-description](https://docs.aws.amazon.com/IAM/latest/APIReference/API_UpdateRoleDescription.html)`。

   对于 Linux、macOS 或 Unix：

   ```
   $ aws iam [update-role-description](https://docs.aws.amazon.com/IAM/latest/APIReference/API_UpdateRoleDescription.html) \
       --role-name AWSServiceRoleForMemoryDB \
       --description "new description"
   ```

   对于 Windows：

   ```
   $ aws iam [update-role-description](https://docs.aws.amazon.com/IAM/latest/APIReference/API_UpdateRoleDescription.html) ^
       --role-name AWSServiceRoleForMemoryDB ^
       --description "new description"
   ```

### 编辑服务相关角色描述（IAM API）
<a name="edit-service-linked-role-iam-api"></a>

您可以使用 IAM API 编辑服务相关角色描述。

**更改服务相关角色的描述（API）**

1. （可选）要查看角色的当前描述，请使用 IAM API 操作 [GetRole](https://docs.aws.amazon.com/IAM/latest/APIReference/API_GetRole.html)。  
**Example**  

   ```
   https://iam.amazonaws.com/
      ?Action=[GetRole](https://docs.aws.amazon.com/IAM/latest/APIReference/API_GetRole.html)
      &RoleName=AWSServiceRoleForMemoryDB
      &Version=2010-05-08
      &AUTHPARAMS
   ```

1. 要更新角色的描述，请使用 IAM API 操作 [UpdateRoleDescription](https://docs.aws.amazon.com/IAM/latest/APIReference/API_UpdateRoleDescription.html)。  
**Example**  

   ```
   https://iam.amazonaws.com/
      ?Action=[UpdateRoleDescription](https://docs.aws.amazon.com/IAM/latest/APIReference/API_UpdateRoleDescription.html)
      &RoleName=AWSServiceRoleForMemoryDB
      &Version=2010-05-08
      &Description="New description"
   ```

## 删除 MemoryDB 的服务相关角色
<a name="delete-service-linked-role"></a>

如果不再需要使用某个需要服务关联角色的功能或服务，我们建议您删除该角色。这样就没有未被主动监控或维护的未使用实体。但是，您必须先清除您的服务相关角色，然后才能将其删除。

MemoryDB 不会删除您的服务相关角色。

### 清除服务相关角色
<a name="service-linked-role-review-before-delete"></a>

您必须先确认该角色没有与之关联的资源（集群），然后才能使用 IAM 删除服务相关角色。

**在 IAM 控制台中检查服务相关角色是否具有活动会话**

1. 登录 AWS 管理控制台 并打开 IAM 控制台，网址为[https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/)。

1. 在 IAM 控制台的左侧导航窗格中，选择 **Roles**。然后选择 AWSServiceRoleForMemory数据库角色的名称（不是复选框）。

1. 在所选角色的 **Summary** 页面上，选择 **Access Advisor** 选项卡。

1. 在**访问顾问**选项卡查看服务相关角色的近期活动。

**删除需要数据库的 MemoryDB 资源（ AWSServiceRoleForMemory控制台）**
+ 要删除集群，请参阅以下内容：
  + [使用 AWS 管理控制台](getting-started.md#clusters.deleteclusters.viewdetails)
  + [使用 AWS CLI](getting-started.md#clusters.delete.cli)
  + [使用 MemoryDB API](getting-started.md#clusters.delete.api)

### 删除服务相关角色（IAM 控制台）
<a name="delete-service-linked-role-iam-console"></a>

您可以使用 IAM 控制台删除服务相关角色。

**删除服务相关角色 (控制台)**

1. 登录 AWS 管理控制台 并打开 IAM 控制台，网址为[https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/)。

1. 在 IAM 控制台的左侧导航窗格中，选择 **Roles**。然后，选中要删除的角色名称旁边的复选框，而不是名称或行本身。

1. 对于页面顶部的**角色操作**，请选择**删除角色**。

1. 在确认页面中，查看上次访问服务的数据，该数据显示了每个选定角色上次访问 AWS 服务的时间。这样可帮助您确认角色当前是否处于活动状态。如果要继续，请选择 **Yes, Delete ** 以提交服务相关角色进行删除。

1. 监视 IAM 控制台通知，以监控服务相关角色的删除进度。由于 IAM 服务相关角色删除是异步的，因此，在您提交角色进行删除后，删除任务可能成功，也可能失败。如果任务失败，您可以从通知中选择 **View details** 或 **View Resources** 以了解删除失败的原因。

### 删除服务相关角色（IAM CLI）
<a name="delete-service-linked-role-iam-cli"></a>

您可以使用中的 IAM 操作 AWS Command Line Interface 来删除服务相关角色。

**删除服务相关角色（CLI）**

1. 如果您不知道要删除的服务相关角色的名称，请输入以下命令。此命令列出了您账户中的角色及其 Amazon 资源名称 (ARNs)。

   ```
   $ aws iam [get-role](https://docs.aws.amazon.com/IAM/latest/APIReference/API_GetRole.html) --role-name role-name
   ```

   通过 CLI 操作使用角色名称（并非 ARN）指向角色。例如，如果某个角色具有 ARN `arn:aws:iam::123456789012:role/myrole`，则将该角色称为 **myrole**。

1. 如果服务相关角色正被使用或具有关联的资源，则无法删除它，因此您必须提交删除请求。如果不满足这些条件，该请求可能会被拒绝。您必须从响应中捕获 `deletion-task-id` 以检查删除任务的状态。输入以下命令以提交服务相关角色的删除请求。

   ```
   $ aws iam [delete-service-linked-role](https://docs.aws.amazon.com/IAM/latest/APIReference/API_DeleteServiceLinkedRole.html) --role-name role-name
   ```

1. 输入以下命令以检查删除任务的状态。

   ```
   $ aws iam [get-service-linked-role-deletion-status](https://docs.aws.amazon.com/IAM/latest/APIReference/API_GetServiceLinkedRoleDeletionStatus.html) --deletion-task-id deletion-task-id
   ```

   删除任务的状态可能是 `NOT_STARTED`、`IN_PROGRESS`、`SUCCEEDED` 或 `FAILED`。如果删除失败，则调用会返回失败的原因，以便您进行问题排查。

### 删除服务相关角色（IAM API）
<a name="delete-service-linked-role-iam-api"></a>

您可以使用 IAM API 删除服务相关角色。

**删除服务相关角色（API）**

1. 要提交服务相关角色的删除请求，请调用 [DeleteServiceLinkedRole](https://docs.aws.amazon.com/IAM/latest/APIReference/API_DeleteServiceLinkedRole.html)。在请求中，指定角色名称。

   如果服务相关角色正被使用或具有关联的资源，则无法删除它，因此您必须提交删除请求。如果不满足这些条件，该请求可能会被拒绝。您必须从响应中捕获 `DeletionTaskId` 以检查删除任务的状态。

1. 要检查删除的状态，请调用 [GetServiceLinkedRoleDeletionStatus](https://docs.aws.amazon.com/IAM/latest/APIReference/API_GetServiceLinkedRoleDeletionStatus.html)。在请求中，指定 `DeletionTaskId`。

   删除任务的状态可能是 `NOT_STARTED`、`IN_PROGRESS`、`SUCCEEDED` 或 `FAILED`。如果删除失败，则调用会返回失败的原因，以便您进行问题排查。

# AWS MemoryDB 的托管策略
<a name="security-iam-awsmanpol"></a>







要向用户、群组和角色添加权限，使用 AWS 托管策略比自己编写策略要容易得多。创建仅为团队提供所需权限的 [IAM 客户管理型策略](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_create-console.html)需要时间和专业知识。要快速入门，您可以使用我们的 AWS 托管策略。这些政策涵盖常见用例，可在您的 AWS 账户中使用。有关 AWS 托管策略的更多信息，请参阅 *IAM 用户指南*中的[AWS 托管策略](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_managed-vs-inline.html#aws-managed-policies)。

AWS 服务维护和更新 AWS 托管策略。您无法更改 AWS 托管策略中的权限。服务偶尔会向 AWS 托管式策略添加额外权限以支持新特征。此类更新会影响附加策略的所有身份（用户、组和角色）。当启动新特征或新操作可用时，服务最有可能会更新 AWS 托管式策略。服务不会从 AWS 托管策略中移除权限，因此策略更新不会破坏您的现有权限。

此外，还 AWS 支持跨多个服务的工作职能的托管策略。例如，**ReadOnlyAccess** AWS 托管策略提供对所有 AWS 服务和资源的只读访问权限。当服务启动一项新功能时， AWS 会为新操作和资源添加只读权限。有关工作职能策略的列表和说明，请参阅 *IAM 用户指南*中的[适用于工作职能的AWS 托管式策略](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_job-functions.html)。









## AWS 托管策略：内存 DBService RolePolicy
<a name="security-iam-awsmanpol-memorydbServiceRolePolicy"></a>







您无法将内存DBServiceRolePolicy AWS 托管策略附加到账户中的身份。此策略是 M AWS emoryDB 服务相关角色的一部分。此角色允许服务管理您账户中的网络接口和安全组。



MemoryDB 使用此策略中的权限来管理 EC2 安全组和网络接口。这是管理 MemoryDB 集群所必需的。



**权限详细信息**

该策略包含以下权限。



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

****  

```
{
	"Version":"2012-10-17",		 	 	 
	"Statement": [
		{
			"Effect": "Allow",
			"Action": [
				"ec2:CreateTags"
			],
			"Resource": "arn:aws-cn:ec2:*:*:network-interface/*",
			"Condition": {
				"StringEquals": {
					"ec2:CreateAction": "CreateNetworkInterface"
				},
				"ForAllValues:StringEquals": {
					"aws:TagKeys": [
						"AmazonMemoryDBManaged"
					]
				}
			}
		},
		{
			"Effect": "Allow",
			"Action": [
				"ec2:CreateNetworkInterface"
			],
			"Resource": [
				"arn:aws-cn:ec2:*:*:network-interface/*",
				"arn:aws-cn:ec2:*:*:subnet/*",
				"arn:aws-cn:ec2:*:*:security-group/*"
			]
		},
		{
			"Effect": "Allow",
			"Action": [
				"ec2:DeleteNetworkInterface",
				"ec2:ModifyNetworkInterfaceAttribute"
			],
			"Resource": "arn:aws-cn:ec2:*:*:network-interface/*",
			"Condition": {
				"StringEquals": {
					"ec2:ResourceTag/AmazonMemoryDBManaged": "true"
				}
			}
		},
		{
			"Effect": "Allow",
			"Action": [
				"ec2:DeleteNetworkInterface",
				"ec2:ModifyNetworkInterfaceAttribute"
			],
			"Resource": "arn:aws-cn:ec2:*:*:security-group/*"
		},
		{
			"Effect": "Allow",
			"Action": [
				"ec2:DescribeSecurityGroups",
				"ec2:DescribeNetworkInterfaces",
				"ec2:DescribeAvailabilityZones",
				"ec2:DescribeSubnets",
				"ec2:DescribeVpcs"
			],
			"Resource": "*"
		},
		{
			"Effect": "Allow",
			"Action": [
				"cloudwatch:PutMetricData"
			],
			"Resource": "*",
			"Condition": {
				"StringEquals": {
					"cloudwatch:namespace": "AWS/MemoryDB"
				}
			}
		}
	]
}
```

------

## 适用于 MemoryDB 的AWS托管（预定义）策略
<a name="iam.identitybasedpolicies.predefinedpolicies"></a>

AWS 通过提供由创建和管理的独立 IAM 策略来解决许多常见用例 AWS。托管策略可针对常见使用案例授予必要权限，因此，您无需自行调查具体需要哪些权限。有关更多信息，请参阅《IAM 用户指南》**中的 [AWS 托管式策略](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_managed-vs-inline.html#aws-managed-policies)。

以下 AWS 托管策略是特定于 MemoryDB 的，您可以将其附加到账户中的用户：

### AmazonMemoryDBReadOnlyAccess
<a name="iam.identitybasedpolicies.predefinedpolicies-readonly"></a>

您可以将 `AmazonMemoryDBReadOnlyAccess` 策略附加到 IAM 身份。此策略授予允许只读访问所有 MemoryDB 资源的管理权限。

**AmazonMemoryDBReadOnlyAccess**-授予对 MemoryDB 资源的只读访问权限。

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

****  

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

------

### AmazonMemoryDBFull访问权限
<a name="iam.identitybasedpolicies.predefinedpolicies-fullaccess"></a>

您可以将 `AmazonMemoryDBFullAccess` 策略附加到 IAM 身份。此策略授予允许完全访问 MemoryDB 资源的管理权限。

**AmazonMemoryDBFull访问权限**-授予对 MemoryDB 资源的完全访问权限。

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

****  

```
{
	"Version":"2012-10-17",		 	 	 
	"Statement": [{
			"Effect": "Allow",
			"Action": "memorydb:*",
			"Resource": "*"
		},
		{
			"Effect": "Allow",
			"Action": "iam:CreateServiceLinkedRole",
			"Resource": "arn:aws:iam::*:role/aws-service-role/memorydb.amazonaws.com/AWSServiceRoleForMemoryDB",
			"Condition": {
				"StringLike": {
					"iam:AWSServiceName": "memorydb.amazonaws.com"
				}
			}
		}
	]
}
```

------

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

****  

```
{
	"Version":"2012-10-17",		 	 	 
	"Statement": [{
			"Effect": "Allow",
			"Action": "memorydb:*",
			"Resource": "*"
		},
		{
			"Effect": "Allow",
			"Action": "iam:CreateServiceLinkedRole",
			"Resource": "arn:aws-cn:iam::*:role/aws-service-role/memorydb.amazonaws.com/AWSServiceRoleForMemoryDB",
			"Condition": {
				"StringLike": {
					"iam:AWSServiceName": "memorydb.amazonaws.com"
				}
			}
		}
	]
}
```

------

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





## MemoryDB 对托管策略的 AWS 更新
<a name="security-iam-awsmanpol-updates"></a>



查看自该服务开始跟踪这些更改以来，MemoryDB AWS 托管策略更新的详细信息。有关此页面更改的自动提示，请订阅 MemoryDB 文档历史记录页面上的 RSS 源。




| 更改 | 描述 | 日期 | 
| --- | --- | --- | 
|  [AWS 托管策略：内存 DBService RolePolicy](#security-iam-awsmanpol-memorydbServiceRolePolicy) – 添加策略   |  Memory DBService RolePolicy 添加了 memorydb: 的权限。ReplicateMultiRegionClusterData此权限将允许服务关联角色为 MemoryDB 多区域集群复制数据。  | 2024 年 1 月 12 日 | 
|  [AmazonMemoryDBFull访问权限](#iam.identitybasedpolicies.predefinedpolicies-fullaccess) – 添加策略  |  MemoryDB 添加了描述和列出受支持资源的新权限。MemoryDB 需要这些权限，才能查询账户中的所有支持资源。  | 10/07/2021 | 
|  [AmazonMemoryDBReadOnlyAccess](#iam.identitybasedpolicies.predefinedpolicies-readonly) – 添加策略  |  MemoryDB 添加了描述和列出受支持资源的新权限。MemoryDB 需要这些权限，才能通过查询账户中的所有受支持资源来创建基于账户的应用程序。  | 10/07/2021 | 
|  MemoryDB 开始跟踪更改  |  服务启动  | 8/19/2021 | 

# MemoryDB API 权限：操作、资源和条件参考
<a name="iam.APIReference"></a>

在设置[访问控制](iam.md#iam.accesscontrol)以及编写可附加到 IAM 策略的权限策略（基于身份或基于资源）时，可将下表作为参考。此表列出每个 MemoryDB API 操作及您可授予执行该操作的权限的对应操作。您可以在策略的 `Action` 字段中指定这些操作，并在策略的 `Resource` 字段中指定资源值。除非另有说明，否则需要该资源。某些字段同时包含必需资源和可选资源。如果没有资源 ARN，则策略中的资源为通配符（\$1）。

**注意**  
要指定操作，请在 API 操作名称之前使用 `memorydb:` 前缀（例如，`memorydb:DescribeClusters`）。

使用滚动条查看表的其余部分。


**MemoryDB API 和操作所需的权限**  

| MemoryDB API 操作 | 所需权限（API 操作） | 资源  | 
| --- | --- | --- | 
|  [BatchUpdateCluster](https://docs.aws.amazon.com/memorydb/latest/APIReference/API_BatchUpdateCluster.html) | `memorydb:BatchUpdateCluster` | Cluster | 
|  [CopySnapshot](https://docs.aws.amazon.com/memorydb/latest/APIReference/API_CopySnapshot.html) |  `memorydb:CopySnapshot` `memorydb:TagResource` `s3:GetBucketLocation` `s3:ListAllMyBuckets` |  快照（源、目标） \$1 \$1 | 
|  [CreateCluster](https://docs.aws.amazon.com/memorydb/latest/APIReference/API_CreateCluster.html) |  `memorydb:CreateCluster` `memorydb:TagResource` `s3:GetObject`  如果您使用 `SnapshotArns` 参数，则 `SnapshotArns` 列表的每个成员需要其自己的 `s3:GetObject` 权限（`s3` ARN 作为其资源）。  |  参数组。（可选）集群、快照、安全组 ID 和子网组 `arn:aws:s3:::my_bucket/snapshot1.rdb` 其中*snapshot1*，*my\$1bucket*/是您要从中创建集群的 S3 存储桶和快照。 | 
|  [CreateParameterGroup](https://docs.aws.amazon.com/memorydb/latest/APIReference/API_CreateParameterGroup.html) | `memorydb:CreateParameterGroup` `memorydb:TagResource` | 参数组 | 
|  [CreateSubnetGroup](https://docs.aws.amazon.com/memorydb/latest/APIReference/API_CreateSubnetGroup.html) | `memorydb:CreateSubnetGroup` `memorydb:TagResource` | 子网组 | \$1 | 
|  [CreateSnapshot](https://docs.aws.amazon.com/memorydb/latest/APIReference/API_CreateSnapshot.html) | `memorydb:CreateSnapshot` `memorydb:TagResource` | 快照，集群 | 
|  [CreateUser](https://docs.aws.amazon.com/memorydb/latest/APIReference/API_CreateUser.html)  | `memorydb:CreateUser` `memorydb:TagResource` | 用户 | 
|  [CreateACL](https://docs.aws.amazon.com/memorydb/latest/APIReference/API_CreateACL.html)  | `memorydb:CreateACL` `memorydb:TagResource` | 访问控制列表（ACL） | 
|  [UpdateCluster](https://docs.aws.amazon.com/memorydb/latest/APIReference/API_UpdateCluster.html) | `memorydb:UpdateCluster` | Cluster | 
|  [DeleteCluster](https://docs.aws.amazon.com/memorydb/latest/APIReference/API_DeleteCluster.html) | `memorydb:DeleteCluster` | 集群。（可选）快照 | 
|  [DeleteParameterGroup](https://docs.aws.amazon.com/memorydb/latest/APIReference/API_DeleteParameterGroup.html) | `memorydb:DeleteParameterGroup` | 参数组 | 
|  [DeleteSubnetGroup](https://docs.aws.amazon.com/memorydb/latest/APIReference/API_DeleteSubnetGroup.html) | `memorydb:DeleteSubnetGroup` | 子网组 | 
|  [DeleteSnapshot](https://docs.aws.amazon.com/memorydb/latest/APIReference/API_DeleteSnapshot.html) | `memorydb:DeleteSnapshot` | 快照 | 
|  [DeleteUser](https://docs.aws.amazon.com/memorydb/latest/APIReference/API_DeleteUser.html)  | `memorydb:DeleteUser` | 用户 | 
|  [DeleteACL](https://docs.aws.amazon.com/memorydb/latest/APIReference/API_DeleteACL.html)  | `memorydb:DeleteACL` | ACL | 
|  [DescribeClusters](https://docs.aws.amazon.com/memorydb/latest/APIReference/API_DescribeClusters.html) | `memorydb:DescribeClusters` | Cluster | 
|  [DescribeEngineVersions](https://docs.aws.amazon.com/memorydb/latest/APIReference/API_DescribeEngineVersions.html) | `memorydb:DescribeEngineVersions` | 无资源 ARN：\$1 | 
|  [DescribeParameterGroups](https://docs.aws.amazon.com/memorydb/latest/APIReference/API_DescribeParameterGroups.html) | `memorydb:DescribeParameterGroups` | 参数组 | 
|  [DescribeParameters](https://docs.aws.amazon.com/memorydb/latest/APIReference/API_DescribeParameters.html) | `memorydb:DescribeParameters` | 参数组 | 
|  [DescribeSubnetGroups](https://docs.aws.amazon.com/memorydb/latest/APIReference/API_DescribeSubnetGroups.html) | `memorydb:DescribeSubnetGroups` | 子网组 | \$1 | 
|  [DescribeEvents](https://docs.aws.amazon.com/memorydb/latest/APIReference/API_DescribeEvents.html) | `memorydb:DescribeEvents` | 无资源 ARN：\$1 | 
|  [DescribeClusters](https://docs.aws.amazon.com/memorydb/latest/APIReference/API_DescribeClusters.html) | `memorydb:DescribeClusters` | Cluster | 
|  [DescribeServiceUpdates](https://docs.aws.amazon.com/memorydb/latest/APIReference/API_DescribeServiceUpdates.html) | `memorydb:DescribeServiceUpdates` | 无资源 ARN：\$1 | 
|  [DescribeSnapshots](https://docs.aws.amazon.com/memorydb/latest/APIReference/API_DescribeSnapshots.html) | `memorydb:DescribeSnapshots` | 快照 | 
|  [DescribeUsers](https://docs.aws.amazon.com/memorydb/latest/APIReference/API_DescribeUsers.html)  | `memorydb:DescribeUsers` | 用户 | 
|  [描述ACLs](https://docs.aws.amazon.com/memorydb/latest/APIReference/API_DescribeACLs.html)  | `memorydb:DescribeACLs` | ACLs | 
|  [ListAllowedNodeTypeUpdates](https://docs.aws.amazon.com/memorydb/latest/APIReference/API_ListAllowedNodeTypeUpdates.html) | `memorydb:ListAllowedNodeTypeUpdates` | Cluster | 
|  [ListTags](https://docs.aws.amazon.com/memorydb/latest/APIReference/API_ListTags.html) | `memorydb:ListTags` | （可选）集群、快照 | 
|  [UpdateParameterGroup](https://docs.aws.amazon.com/memorydb/latest/APIReference/API_UpdateParameterGroup.html) | `memorydb:UpdateParameterGroup` | 参数组 | 
|  [UpdateSubnetGroup](https://docs.aws.amazon.com/memorydb/latest/APIReference/API_UpdateSubnetGroup.html) | `memorydb:UpdateSubnetGroup` | 子网组 | 
|  [UpdateCluster](https://docs.aws.amazon.com/memorydb/latest/APIReference/API_UpdateCluster.html) | `memorydb:UpdateCluster` | 集群。（可选）参数组、安全组 | 
|  [UpdateUser](https://docs.aws.amazon.com/memorydb/latest/APIReference/API_UpdateUser.html)  | `memorydb:UpdateUser` | 用户 | 
|  [UpdateACL](https://docs.aws.amazon.com/memorydb/latest/APIReference/API_UpdateACL.html)  | `memorydb:UpdateACL` | ACL | 
|  [UntagResource](https://docs.aws.amazon.com/memorydb/latest/APIReference/API_UntagResource.html) | `memorydb:UntagResource` | （可选）集群、快照 | 
|  [ResetParameterGroup](https://docs.aws.amazon.com/memorydb/latest/APIReference/API_ResetParameterGroup.html) | `memorydb:ResetParameterGroup` | 参数组 | 
|  [FailoverShard](https://docs.aws.amazon.com/memorydb/latest/APIReference/API_FailoverShard.html) | `memorydb:FailoverShard` | 集群、分片 | 