

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

# 使用 Amazon Neptune 的服务相关角色
<a name="security-iam-service-linked-roles"></a>

亚马逊 Neptune 使用 Amazon Identity and Access Management (IAM) [服务相关](https://docs.amazonaws.cn/IAM/latest/UserGuide/id_roles_terms-and-concepts.html#iam-term-service-linked-role)角色。服务相关角色是一种独特类型的 IAM 角色，它与 Neptune 直接相关。服务相关角色由 Neptune 预定义，包括该服务代表您调用 Amazon 其他服务所需的所有权限。

**重要**  
对于某些管理特征，Amazon Neptune 使用与 Amazon RDS 共享的操作技术。这包括*服务相关角色* 和管理 API 权限。

服务相关角色可让您更轻松地使用 Neptune，因为您不必手动添加必要的权限。Neptune 定义其服务相关角色的权限，除非另外定义，否则只有 Neptune 可以代入该角色。定义的权限包括信任策略和权限策略，而且权限策略不能附加到任何其他 IAM 实体。

只有在首先删除角色的相关资源后，才能删除角色。这将保护您的 Neptune 资源，因为您不会无意中删除对资源的访问权限。

有关支持服务相关角色的其他服务的信息，请参阅与 [IAM 配合使用的Amazon 服务](https://docs.amazonaws.cn/IAM/latest/UserGuide/reference_aws-services-that-work-with-iam.html)，并在 “**服务相关角色**” 列中查找标有 “**是**” 的服务。请选择**是**与查看该服务的服务关联角色文档的链接。

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

Neptune 使用`AWSServiceRoleForRDS`服务相关角色允许 Neptune 和 Amazon RDS 代表您的数据库实例调用 Amazon 服务。`AWSServiceRoleForRDS` 服务关联角色信任 `rds.amazonaws.com` 服务来代入角色。

角色权限策略允许 Neptune 对指定的资源完成以下操作：
+ 对 `ec2` 的操作：
  + `AssignPrivateIpAddresses`
  + `AuthorizeSecurityGroupIngress`
  + `CreateNetworkInterface`
  + `CreateSecurityGroup`
  + `DeleteNetworkInterface`
  + `DeleteSecurityGroup`
  + `DescribeAvailabilityZones`
  + `DescribeInternetGateways`
  + `DescribeSecurityGroups`
  + `DescribeSubnets`
  + `DescribeVpcAttribute`
  + `DescribeVpcs`
  + `ModifyNetworkInterfaceAttribute`
  + `RevokeSecurityGroupIngress`
  + `UnassignPrivateIpAddresses`
+ 对 `sns` 的操作：
  + `ListTopic`
  + `Publish`
+ 对 `cloudwatch` 的操作：
  + `PutMetricData`
  + `GetMetricData`
  + `CreateLogStream`
  + `PullLogEvents`
  + `DescribeLogStreams`
  + `CreateLogGroup`

**注意**  
您必须配置权限，允许 IAM 实体（如用户、组或角色）创建、编辑或删除服务关联角色。您可能会遇到以下错误消息：  
Unable to create the resource. Verify that you have permission to create service linked role。Otherwise wait and try again later.  
如果您看到此消息，请确保您已启用以下权限：  

```
{
    "Action": "iam:CreateServiceLinkedRole",
    "Effect": "Allow",
    "Resource": "arn:aws:iam::*:role/aws-service-role/rds.amazonaws.com/AWSServiceRoleForRDS",
    "Condition": {
        "StringLike": {
            "iam:AWSServiceName":"rds.amazonaws.com"
        }
    }
}
```
 有关更多信息，请参阅《IAM 用户指南》**中的[服务关联角色权限](https://docs.amazonaws.cn/IAM/latest/UserGuide/using-service-linked-roles.html#service-linked-role-permissions)。

## 为 Neptune 创建服务相关角色
<a name="create-service-linked-role"></a>

您无需手动创建服务关联角色。当您创建实例或集群时，Neptune 将为您创建服务相关角色。

**重要**  
要了解更多信息，请参阅《IAM 用户指南》**中的[我的 IAM 账户中出现新角色](https://docs.amazonaws.cn/IAM/latest/UserGuide/troubleshoot_roles.html#troubleshoot_roles_new-role-appeared)。

如果删除此服务相关角色然后需要再次创建它，则可以使用相同的流程在您的账户中重新创建此角色。当您创建实例或集群时，Neptune 将再次为您创建服务相关角色。

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

Neptune 不允许您编辑 `AWSServiceRoleForRDS` 服务相关角色。创建服务关联角色后，您将无法更改角色的名称，因为可能有多种实体引用该角色。但是可以使用 IAM 编辑角色描述。有关更多信息，请参阅《IAM 用户指南》**中的[编辑服务关联角色](https://docs.amazonaws.cn/IAM/latest/UserGuide/using-service-linked-roles.html#edit-service-linked-role)。

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

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

### 在删除之前清除服务相关角色
<a name="delete-service-linked-role-cleanup"></a>

必须先确认服务相关角色没有活动会话并删除该角色使用的任何资源，然后才能使用 IAM 删除服务相关角色。

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

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

1. 在 IAM 控制台的导航窗格中，选择**角色**。然后选择 `AWSServiceRoleForRDS` 角色的名称（不是复选框）。

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

1. 在**访问顾问**选项卡查看服务相关角色的近期活动。
**注意**  
如果您不确定 Neptune 是否正在使用 `AWSServiceRoleForRDS` 角色，可以尝试删除该角色。如果服务正在使用该角色，则删除操作会失败，并且您可以查看正在使用该角色的 区域。如果该角色已被使用，则您必须等待会话结束，然后才能删除该角色。您无法撤销服务相关角色对会话的权限。

如果您要删除 `AWSServiceRoleForRDS` 角色，必须首先删除您的*所有*实例和集群。

#### 删除所有实例
<a name="delete-service-linked-role-instances"></a>

使用以下过程之一删除每个实例。

**删除一个实例 (控制台)**

1. 在 [https://console.aws.amazon.com/rds/](https://console.amazonaws.cn/rds/) 处打开 Amazon RDS 控制台。

1. 在导航窗格中，选择 **Instances (实例)**。

1. 在**实例**列表中，选择要删除的实例。

1. 选择**实例操作**，然后选择**删除**。

1. 如果系统提示您 **Create final Snapshot? (是否创建最终快照?)**，请选择 **Yes (是)** 或 **No (否)**。

1. 如果您在上一步中选择了 **Yes (是)**，请为 **Final snapshot name (最终快照名称)** 输入最终快照的名称。

1. 选择**删除**。

**删除实例 (Amazon CLI)**  
请参阅 *Amazon CLI Command Reference* 中的 `[delete-db-instance](https://docs.amazonaws.cn/cli/latest/reference/neptune/delete-db-instance.html)`。

**删除一个实例 (API)**  
请参阅`[DeleteDBInstance](&doc-domaiAPI_DeleteDBInstance.html)`。

#### 删除所有集群
<a name="delete-service-linked-role-clusters"></a>

使用以下过程之一删除单个集群，然后对您的每个集群重复该过程。

**删除一个集群 (控制台)**

1. [登录 Amazon 管理控制台，然后在家中打开 Amazon Neptune https://console.aws.amazon.com/neptune/ 主机。](https://console.amazonaws.cn/neptune/home)

1. 在 **Clusters** 列表中，选择要删除的群集。

1. 选择 **Cluster Actions**，然后选择 **Delete**。

1. 选择**删除**。

**删除一个集群 (CLI)**  
请参阅 *Amazon CLI Command Reference* 中的 `[delete-db-cluster](https://docs.amazonaws.cn/cli/latest/reference/neptune/delete-db-cluster.html)`。

**删除一个集群 (API)**  
请参阅 `[DeleteDBCluster](API_DeleteDBCluster.html)`。

可以使用 IAM 控制台、IAM CLI 或 IAM API 删除 `AWSServiceRoleForRDS` 服务相关角色。有关更多信息，请参见《IAM 用户指南》**中的[删除服务相关角色](https://docs.amazonaws.cn/IAM/latest/UserGuide/using-service-linked-roles.html#delete-service-linked-role)。