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

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

使用 IAM 策略管理访问权限

IAM 策略是 JSON 对象,用于定义使用操作和资源的权限。

您将创建策略并将其附加到 Amazon 身份或资源,以控制 Amazon 中的访问。策略是 Amazon 中的对象;在与身份或资源相关联时,策略定义它们的权限。在主体(用户、根用户或角色会话)发出请求时,Amazon 将评估这些策略。策略中的权限确定是允许还是拒绝请求。大多数策略在 Amazon 中存储为 JSON 文档。有关 JSON 策略文档的结构和内容的更多信息,请参阅 IAM 用户指南 中的 JSON 策略概览

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

每个 IAM 实体(用户或角色)最初没有任何权限。原定设置情况下,用户什么都不能做,甚至不能更改他们自己的密码。要为用户授予执行某些操作的权限,管理员必须将权限策略附加到用户。或者,管理员可以将用户添加到具有预期权限的组中。当管理员为某个组授予访问权限时,该组内的全部用户都会获得这些访问权限。

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

基于身份的策略

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

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

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

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

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

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

一个用户若要使用 Amazon Neptune 控制台,该用户必须具有一组最小权限。这些权限允许用户描述其Amazon账户的 Neptune 资源并提供其他相关信息,包括 Amazon EC2 安全和网络信息。

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

对于只需要调用Amazon CLI或 Amazon Neptune API 的用户,无需为其提供最低限度的控制台权限。

将 IAM 策略附加到 IAM 用户

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

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

重要
  • 对 IAM 策略的更改最多需要 10 分钟才能应用到指定的 Neptune 资源。

  • 应用于 Neptune 数据库集群的 IAM 策略适用于该集群中的所有实例。

使用不同类型的 IAM 策略来控制对Neptune 的访问。

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

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

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

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

您可以在控制 Neptune 访问权限的 IAM 策略声明中指定条件。然后,政策声明只有在条件成熟时才生效。

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

要表达条件,请结合使用策略语句Condition元素中的预定义条件键,以及 IAM 条件策略运算符

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

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

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

Neptune 支持管理策略声明的条件键集与数据访问策略声明的条件键集不同:

Support Amazon Neptune 中的 IAM 策略和访问控制功能

下表显示了 Neptune 支持的管理策略声明和数据访问策略声明的 IAM 功能:

可与 Neptune 配使用的 IAM 功能
IAM 功能 行政 数据存取

基于身份的策略

基于资源的策略

策略操作

策略资源

全局条件键

(子集)

基于标签的条件键

访问控制列表 (ACL)

服务控制策略 (SCP)

服务关联角色

IAM 策略限制

对 IAM 策略的更改最多需要 10 分钟才能应用到指定的 Neptune 资源。

应用于 Neptune 数据库集群的 IAM 策略适用于该集群中的所有实例。

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