

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

# 将基于身份的策略（IAM 策略）用于 Amazon DocumentDB
<a name="UsingWithRDS.IAM.AccessControl.IdentityBased"></a>

**重要**  
对于某些管理功能，Amazon DocumentDB 使用与 Amazon RDS 共享的操作技术。亚马逊 DocumentDB 控制台和 API 调用记录为对亚马逊 RDS API 的调用。 AWS CLI  
我们建议您首先回顾以下介绍性主题，这些主题讲解了您可用于管理 Amazon DocumentDB 资源访问的基本概念和选项。有关更多信息，请参阅 [管理对 Amazon DocumentDB 资源的访问权限](UsingWithRDS.IAM.AccessControl.Overview.md)。

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

以下是 IAM policy略示例。

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "AllowCreateDBInstanceOnly",
            "Effect": "Allow",
            "Action": [
                "rds:CreateDBInstance"
            ],
            "Resource": [
                "arn:aws:rds:*:123456789012:db:test*",
                "arn:aws:rds:*:123456789012:pg:cluster-pg:default*",
                "arn:aws:rds:*:123456789012:subgrp:default"
            ]
        }
    ]
}
```

------

该策略包含一个为 IAM 用户指定以下权限的语句：
+ 该策略允许 IAM 用户使用 “[创建DBInstance” 操作创建](https://docs.aws.amazon.com/documentdb/latest/developerguide/API_CreateDBInstance.html)实例（这也适用于[create-db-instance](https://docs.aws.amazon.com/cli/latest/reference/rds/create-db-instance.html) AWS CLI 操作和 AWS 管理控制台）。
+ `Resource` 元素指定用户可以执行操作的资源。使用 Amazon 资源名称 (ARN) 指定资源。此 ARN 包括资源所属服务的名称 (`rds`)、 AWS 区域 （`*`表示本示例中的任何区域）、用户账号（在本示例中`123456789012`为用户 ID）和资源类型。

  该示例中的 `Resource` 元素为用户指定有关资源的以下策略限制：
  + 新实例的实例标识符必须以 `test` 开头（例如，`testCustomerData1`、`test-region2-data`）。
  + 新实例的集群参数组必须以 `default` 开头。
  + 新实例的子网组必须是 `default` 子网组。

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

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

## 使用 Amazon DocumentDB 控制台所要求的权限
<a name="UsingWithRDS.IAM.RequiredPermissions.Console"></a>

对于要使用 Amazon DocumentDB 控制台的用户，该用户必须拥有一组最小权限。这些权限允许用户描述他们的 Amazon DocumentDB 资源 AWS 账户 并提供其他相关信息，包括 Amazon EC2 安全和网络信息。

如果创建比必需的最低权限更为严格的 IAM 策略，对于附加了该 IAM 策略的用户， 控制台将无法按预期正常运行。要确保这些用户仍可使用 Amazon DocumentDB 控制台，也可向用户附加 `AmazonDocDBConsoleFullAccess` 托管策略，如 [AWS 亚马逊 DocumentDB 的托管政策](docdb-managed-policies.md) 中所述。

对于仅调用 AWS CLI 或 Amazon DocumentDB API 的用户，您无需为其设置最低控制台权限。

## 客户管理型策略示例
<a name="IAMPolicyExamples-RDS"></a>

本节的用户策略示例介绍如何授予各 Amazon DocumentDB 操作的权限。这些策略在您使用亚马逊 DocumentDB API 操作时起作用 AWS SDKs，或者。 AWS CLI当您使用控制台时，您需要授予特定于控制台的其他权限，[使用 Amazon DocumentDB 控制台所要求的权限](#UsingWithRDS.IAM.RequiredPermissions.Console) 中对此进行了讨论。

对于某些管理功能，Amazon DocumentDB 使用与 Amazon Relational Database Service (Amazon RDS) 和 Amazon Neptune 共享的操作技术。

**注意**  
所有示例都使用美国东部（弗吉尼亚北部）区域 (`us-east-1`)，并包含虚构账户。 IDs

**Topics**
+ [示例 1：允许用户对任何 Amazon DocumentDB 资源执行任何描述操作](#IAMPolicyExamples-RDS-perform-describe-action)
+ [示例 2：防止用户删除实例](#IAMPolicyExamples-RDS-prevent-db-deletion)
+ [示例 3：除非启用存储加密，否则阻止用户创建集群](#IAMPolicyExamples-Prevent-Cluster)

### 示例 1：允许用户对任何 Amazon DocumentDB 资源执行任何描述操作
<a name="IAMPolicyExamples-RDS-perform-describe-action"></a>

以下权限策略对用户授予权限以运行以 `Describe` 开头的所有操作。这些操作显示有关 Amazon DocumentDB 资源（如实例）的信息。 `Resource` 组件中的通配符 (\$1) 表示对该账户拥有的所有 Amazon DocumentDB 资源允许这些操作。

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

****  

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

------

### 示例 2：防止用户删除实例
<a name="IAMPolicyExamples-RDS-prevent-db-deletion"></a>

以下权限策略授予权限以防止用户删除特定实例。例如，您可能想禁止任何非管理员用户删除您的生产实例。

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

****  

```
{
   "Version":"2012-10-17",		 	 	 
   "Statement":[
      {
         "Sid":"DenyDelete1",
         "Effect":"Deny",
         "Action":"rds:DeleteDBInstance",
         "Resource":"arn:aws:rds:us-east-1:123456789012:db:my-db-instance"
      }
   ]
}
```

------

### 示例 3：除非启用存储加密，否则阻止用户创建集群
<a name="IAMPolicyExamples-Prevent-Cluster"></a>

除非启用存储加密，否则以下权限策略拒绝用户创建 Amazon DocumentDB 集群的权限。

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

****  

```
{
   "Version":"2012-10-17",		 	 	 
   "Statement": [
      {
         "Sid": "PreventUnencryptedDocumentDB",
         "Effect": "Deny",
         "Action": "RDS:CreateDBCluster",
         "Condition": {
         "Bool": {
         "rds:StorageEncrypted": "false"
      },
         "StringEquals": {
         "rds:DatabaseEngine": "docdb"
         }
      },
      "Resource": "*"
      }
   ]
}
```

------