

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

# 创建适用于 Amazon Neptune 的 IAM 管理策略语句
<a name="iam-admin-policy-examples"></a>

## 一般管理策略示例
<a name="iam-admin-policy-general-examples"></a>

以下示例说明如何创建 Neptune 管理策略，以授予对数据库集群执行各种管理操作的权限。

### 防止 IAM 用户删除指定数据库实例的策略
<a name="iam-admin-policy-not-delete-instance"></a>

以下是防止 IAM 用户删除指定的 Neptune 数据库实例的策略示例：

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

****  

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

------

### 授予创建新数据库实例的权限的策略
<a name="iam-admin-policy-to-create-instances"></a>

以下是允许 IAM 用户在指定的 Neptune 数据库集群中创建数据库实例的示例策略：

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

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Sid": "AllowCreateInstance",
      "Effect": "Allow",
      "Action": "rds:CreateDBInstance",
      "Resource": "arn:aws:rds:{{us-west-2}}:{{123456789012}}:cluster:{{my-cluster}}"
    }
  ]
}
```

------

### 授予创建新数据库实例（使用特定数据库参数组）的权限的策略
<a name="iam-admin-policy-to-create-instances-with-pg"></a>

以下是一个策略示例，它允许 IAM 用户仅使用指定的数据库参数组，在指定的 Neptune 数据库集群的指定数据库集群（此处为 `us-west-2`）中创建数据库实例。

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

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Sid": "AllowCreateInstanceWithPG",
      "Effect": "Allow",
      "Action": "rds:CreateDBInstance",
      "Resource": [
        "arn:aws:rds:{{us-west-2}}:{{123456789012}}:cluster:{{my-cluster}}",
        "arn:aws:rds:{{us-west-2}}:{{123456789012}}:pg:{{my-instance-pg}}"
      ]
    }
  ]
}
```

------

### 授予描述任何资源的权限的策略
<a name="iam-admin-policy-to-describe"></a>

以下是允许 IAM 用户描述任何 Neptune 资源的策略示例。

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

****  

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

------

## Tag-based 管理策略示例
<a name="iam-admin-policy-tagging-examples"></a>

以下示例说明如何创建 Neptune 管理策略，这些策略将进行标记，以筛选在数据库集群上执行各种管理操作的权限。

### 示例 1：使用可以取多个值的自定义标签，授予对资源执行操作的权限
<a name="security-iam-tag-examples-1"></a>

以下策略允许在 `env` 标签设置为 `dev` 或 `test` 的任何数据库实例上使用 `ModifyDBInstance`、`CreateDBInstance` 或 `DeleteDBInstance` API：

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

****  

```
{ "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Sid": "AllowDevTestAccess",
      "Effect": "Allow",
      "Action": [
        "rds:ModifyDBInstance",
        "rds:CreateDBInstance",
        "rds:DeleteDBInstance"
      ],
      "Resource": "*",
      "Condition": {
        "StringEquals": {
          "rds:db-tag/env": [
              "dev",
              "test"
          ],
          "rds:DatabaseEngine": "neptune"
        }
      }
    }
  ]
}
```

------

### 示例 2：限制可用于对资源进行标记的一组标签键和值
<a name="security-iam-tag-examples-2"></a>

此策略使用 `Condition` 键来允许将键 `env` 且值为 `test`、`qa` 或 `dev` 的标签添加到资源中：

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

****  

```
{ "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Sid": "AllowTagAccessForDevResources",
      "Effect": "Allow",
      "Action": [
        "rds:AddTagsToResource",
        "rds:RemoveTagsFromResource"
      ],
      "Resource": "*",
      "Condition": {
        "StringEquals": {
          "rds:req-tag/env": [
            "test",
            "qa",
            "dev"
          ],
          "rds:DatabaseEngine": "neptune"
        }
      }
    }
  ]
}
```

------

### `示例 3：允许基于 aws 对 Neptune 资源的完全访问权限：ResourceTag`
<a name="security-iam-tag-examples-3"></a>

以下策略与上面的第一个示例类似，但改为使用 `aws:ResourceTag`：

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

****  

```
{ "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Sid": "AllowFullAccessToDev",
      "Effect": "Allow",
      "Action": [
        "rds:*"
      ],
      "Resource": "*",
      "Condition": {
        "StringEquals": {
          "aws:ResourceTag/env": "dev",
          "rds:DatabaseEngine": "neptune"
        }
      }
    }
  ]
}
```

------