使用 IAM policy 管理访问权限 - Amazon Neptune
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

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

使用 IAM policy 管理访问权限

IAM policy 是定义操作和资源使用权限的 JSON 对象。

您可以 Amazon 通过创建策略并将其附加到 Amazon 身份或资源来控制中的访问权限。策略是其中的一个对象 Amazon ,当与身份或资源关联时,它会定义其权限。 Amazon 在委托人(用户、root 用户或角色会话)发出请求时评估这些策略。策略中的权限确定是允许还是拒绝请求。大多数策略都以 JSON 文档的 Amazon 形式存储在中。有关 JSON 策略文档的结构和内容的更多信息,请参阅《IAM 用户指南》中的 JSON 策略概览

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

默认情况下,用户和角色没有权限。要授予用户对所需资源执行操作的权限,IAM 管理员可以创建 IAM 策略。管理员随后可以向角色添加 IAM 策略,用户可以代入角色。

IAM 策略定义操作的权限,无关乎您使用哪种方法执行操作。例如,假设您有一个允许 iam:GetRole 操作的策略。拥有该策略的用户可以从 Amazon Web Services Management Console Amazon CLI、或 Amazon API 获取角色信息。

基于身份的策略

基于身份的策略是可附加到身份(如 IAM 用户、用户组或角色)的 JSON 权限策略文档。这些策略控制用户和角色可在何种条件下对哪些资源执行哪些操作。要了解如何创建基于身份的策略,请参阅 IAM 用户指南中的创建 IAM 策略

基于身份的策略可以进一步归类为内联策略托管式策略。内联策略直接嵌入单个用户、组或角色中。托管策略是独立的策略,您可以将其附加到中的多个用户、群组和角色 Amazon Web Services 账户。托管策略包括 Amazon 托管策略和客户托管策略。要了解如何在托管式策略和内联策略之间进行选择,请参阅《IAM 用户指南》中的在托管式策略与内联策略之间进行选择

对组织使用服务控制策略 (SCP) Amazon

服务控制策略 (SCP) 是 JSON 策略,用于指定中Amazon Organizations组织或组织单位 (OU) 的最大权限。 Amazon Organizations 是一项用于对您的企业拥有的多个 Amazon 账户进行分组和集中管理的服务。如果在组织内启用了所有特征,则可对任意或全部账户应用服务控制策略 (SCP)。SCP 限制成员账户中实体的权限,包括每个 Amazon 账户的根用户。有关 Organizations 和 SCP 的更多信息,请参阅《 Amazon Organizations 用户指南》中的 SCP 的工作原理。

在 Amazon 组织内的 Amazon 账户中部署 Amazon Neptune 的客户可以利用 SCP 来控制哪些账户可以使用 Neptune。为确保通过成员账户访问 Neptune,请务必分别使用 neptune:*neptune-db:* 允许访问控制面板和数据面板 IAM 操作。

使用 Amazon Neptune 控制台所需的权限

对于要使用 Amazon Neptune 控制台的用户,用户必须拥有一组最低权限。这些权限允许用户描述其 Amazon 账户的 Neptune 资源并提供其它相关信息(包括 Amazon EC2 安全和网络信息)。

如果创建比必需的最低权限更为严格的 IAM policy,对于附加了该 IAM policy 的用户,控制台将无法按预期正常运行。要确保这些用户仍可使用 Neptune 控制台,同时向用户附加 NeptuneReadOnlyAccess 托管式策略,请参阅Amazon 亚马逊 Neptune 的托管(预定义)策略

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

将 IAM policy 附加到 IAM 用户

要应用托管式策略或自定义策略,您需要将其附加到 IAM 用户。有关此主题的教程,请参阅《IAM 用户指南》中的创建和附加您的第一个客户管理型策略

在演练此教程时,您可以使用此部分中显示的策略示例之一作为起点并根据您的需求进行定制。在教程结束时,您将有一个 IAM 用户,该用户具有可使用 neptune-db:* 操作的附加策略。

重要
  • 对 IAM policy 的更改将需要长达 10 分钟才能应用于指定的 Neptune 资源。

  • 应用于 Neptune 数据库集群的 IAM policy 将应用于集群中的所有实例。

使用不同类型的 IAM policy 控制对 Neptune 的访问权限

要提供对 Neptune 管理操作或 Neptune 数据库集群中数据的访问权限,您需要向 IAM 用户或角色附加策略。有关如何将 IAM policy 附加到用户的信息,请参阅将 IAM policy 附加到 IAM 用户。有关将策略附加到角色的信息,请参阅《IAM 用户指南》中的添加和删除 IAM policy

要获得对 Neptune 的常规访问权限,您可以使用 Neptune 的托管式策略之一。要获得更受限的访问权限,您可以使用 Neptune 支持的管理操作资源创建自己的自定义策略。

在自定义 IAM policy 中,您可以使用两种不同的策略语句来控制 Neptune 数据库集群的不同访问模式:

  • 管理策略语句 – 管理策略语句提供对用于创建、配置和管理数据库集群及其实例的 Neptune 管理 API 的访问权限。

    由于 Neptune 与 Amazon RDS 共享功能,因此 Neptune 策略中的管理操作、资源和条件键在设计上使用 rds: 前缀。

  • 数据访问策略语句 – 数据访问策略语句使用数据访问操作资源条件键来控制对数据库集群包含的数据的访问。

    Neptune 数据访问操作、资源和条件键使用 neptune-db: 前缀。

在 Amazon Neptune 中使用 IAM 条件上下文键

您可以在 IAM policy 语句中指定用于控制 Neptune 访问权限的条件。仅当条件为 true 时,策略语句才有效。

例如,您可能希望策略语句仅在特定日期之后生效,或者仅在请求中存在特定值时才允许访问。

要表达条件,请在策略语句的 Condition 元素中使用预定义的条件键,以及 IAM 条件策略运算符(如等于或小于)。

如果您在一个语句中指定多个 Condition 元素,或在单个 Condition 元素中指定多个键,则 Amazon 使用逻辑 AND 运算评估它们。如果您为单个条件键指定多个值,则使用逻辑OR运算来 Amazon 评估条件。在授予语句的权限之前必须满足所有的条件。

在指定条件时,您也可以使用占位符变量。例如,只有在使用 IAM 用户名标记 IAM 用户时,您才能为其授予访问资源的权限。有关更多信息,请参阅《IAM 用户指南》中的 IAM policy 元素:变量和标签

条件键的数据类型确定您可以使用哪些条件运算符以将请求中的值与策略语句中的值进行比较。如果您使用的条件运算符与该数据类型不兼容,则匹配始终失败,并且策略语句从不会适用。

Neptune 对于管理策略语句和数据访问策略语句支持不同的条件键集合:

Amazon Neptune 中对 IAM policy 和访问控制特征的支持

下表显示了 Neptune 对于管理策略语句和数据访问策略语句支持的 IAM 特征:

您可以与 Neptune 结合使用的 IAM 特征
IAM 功能 管理 数据访问

基于身份的策略

支持

基于资源的策略

策略操作

支持

策略资源

支持

全局条件键

(子集)

基于标签的条件键

不支持

访问控制列表 (ACL)

服务控制策略 (SCP)

支持

服务相关角色

不支持

IAM 策略限制

对 IAM policy 的更改将需要长达 10 分钟才能应用于指定的 Neptune 资源。

应用于 Neptune 数据库集群的 IAM policy 将应用于集群中的所有实例。

Neptune 目前不支持跨账户访问控制。