

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

# 使用 IAM 策略管理对 Amazon Neptune 数据库的访问
<a name="security-iam-access-manage"></a>

[IAM policy](https://docs.aws.amazon.com/kms/latest/developerguide/iam-policies.html) 是定义操作和资源使用权限的 JSON 对象。

您可以 AWS 通过创建策略并将其附加到 AWS 身份或资源来控制中的访问权限。策略定义了与身份或资源关联时的权限。 AWS 在委托人提出请求时评估这些政策。大多数策略都以 JSON 文档的 AWS 形式存储在中。有关 JSON 策略文档的更多信息，请参阅*《IAM 用户指南》*中的 [JSON 策略概述](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies.html#access_policies-json)。

管理员使用策略，通过定义哪个**主体**可以在什么**条件**下对哪些**资源**执行哪些**操作**来指定谁有权访问什么。

默认情况下，用户和角色没有权限。IAM 管理员创建 IAM 策略并将其添加到角色中，然后用户可以担任这些角色。IAM 策略定义权限，与执行操作所用的方法无关。

## 基于身份的策略
<a name="security_iam_access-manage-id-based-policies"></a>

基于身份的策略是您附加到身份（用户、组或角色）的 JSON 权限策略文档。这些策略控制身份可以执行什么操作、对哪些资源执行以及在什么条件下执行。要了解如何创建基于身份的策略，请参阅《IAM 用户指南》**中的[使用客户管理型策略定义自定义 IAM 权限](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_create.html)。

基于身份的策略可以是*内联策略*（直接嵌入到单个身份中）或*托管策略*（附加到多个身份的独立策略）。要了解如何在托管策略和内联策略之间进行选择，请参阅*《IAM 用户指南》*中的[在托管策略与内联策略之间进行选择](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies-choosing-managed-or-inline.html)。

## 对组织使用服务控制策略 (SCP) AWS
<a name="security_iam_access-manage-scp"></a>

服务控制策略 (SCPs) 是 JSON 策略，用于指定中组织或组织单位 (OU) 的最大权限[AWS Organizations](https://aws.amazon.com/organizations/)。 AWS Organizations 是一项用于对您的企业拥有的多个 AWS 账户进行分组和集中管理的服务。如果您启用组织中的所有功能，则可以将服务控制策略 (SCPs) 应用于您的任何或所有帐户。SCP 限制成员账户中实体的权限，包括每个 AWS 账户的根用户。有关 Organizations 和的更多信息 SCPs，[请参阅《 AWS Organizations 用户指南》中的 SCPs 工作](https://docs.aws.amazon.com/organizations/latest/userguide/orgs_manage_policies_about-scps.html)原理。

在 AWS 组织内的 AWS 账户中部署 Amazon Neptune 的客户可以利用 SCPs 控制哪些账户可以使用 Neptune。为确保在成员账户内访问 Neptune，请务必：
+  允许访问 `rds:*` 和 `neptune-db:*`，以便执行 Neptune 数据库操作。请参阅[为何需要 Amazon RDS 权限和资源才能使用 Neptune 数据库？](https://aws.amazon.com/neptune/faqs/)，详细了解 Neptune 数据库为何需要 Amazon RDS 权限。
+  允许访问 `neptune-graph:*`，以便执行 Neptune Analytics 操作。

## 使用 Amazon Neptune 控制台所需的权限
<a name="security-iam-access-manage-console"></a>

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

如果创建比必需的最低权限更为严格的 IAM 策略，对于附加了该 IAM 策略的用户， 控制台将无法按预期正常运行。要确保这些用户仍可使用 Neptune 控制台，同时向用户附加 `NeptuneReadOnlyAccess` 托管式策略，请参阅[使用 AWS 托管策略访问亚马逊 Neptune 数据库](security-iam-access-managed-policies.md)。

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

## 将 IAM policy 附加到 IAM 用户
<a name="iam-auth-policy-attaching"></a>

要应用托管式策略或自定义策略，您需要将其附加到 IAM 用户。有关此主题的教程，请参阅《IAM 用户指南》**中的[创建和附加您的第一个客户管理型策略](https://docs.aws.amazon.com/IAM/latest/UserGuide/tutorial_managed-policies.html)。

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

**重要**  
对 IAM policy 的更改将需要长达 10 分钟才能应用于指定的 Neptune 资源。
应用于 Neptune 数据库集群的 IAM policy 将应用于集群中的所有实例。

## 使用不同类型的 IAM policy 控制对 Neptune 的访问权限
<a name="iam-auth-policy"></a>

要提供对 Neptune 管理操作或 Neptune 数据库集群中数据的访问权限，您需要向 IAM 用户或角色附加策略。有关如何将 IAM policy 附加到用户的信息，请参阅[将 IAM policy 附加到 IAM 用户](#iam-auth-policy-attaching)。有关将策略附加到角色的信息，请参阅《IAM 用户指南》**中的[添加和删除 IAM policy](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_manage-attach-detach.html)。

要获得对 Neptune 的常规访问权限，您可以使用 Neptune 的[托管式策略](security-iam-access-managed-policies.md)之一。要获得更受限的访问权限，您可以使用 Neptune 支持的[管理操作](neptune-iam-admin-actions.md)和[资源](iam-admin-resources.md)创建自己的自定义策略。

在自定义 IAM policy 中，您可以使用两种不同的策略语句来控制 Neptune 数据库集群的不同访问模式：
+ [管理策略声明](iam-admin-policies.md)-管理策略声明提供对用于创建、配置[和管理数据库集群及其实例 APIs的 Neptune](api.md) 管理的访问权限。

  由于 Neptune 与 Amazon RDS 共享功能，因此 Neptune 策略中的管理操作、资源和条件键在设计上使用 `rds:` 前缀。
+ [数据访问策略语句](iam-data-access-policies.md) – 数据访问策略语句使用[数据访问操作](iam-dp-actions.md)、[资源](iam-data-resources.md)和[条件键](iam-data-condition-keys.md#iam-neptune-condition-keys)来控制对数据库集群包含的数据的访问。

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

## 在 Amazon Neptune 中使用 IAM 条件上下文键
<a name="iam-using-condition-keys"></a>

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

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

要表达条件，请在策略语句的 [https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements_condition.html](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements_condition.html) 元素中使用预定义的条件键，以及 [IAM 条件策略运算符](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements_condition_operators.html)（如等于或小于）。

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

 在指定条件时，您也可以使用占位符变量。例如，只有在使用 IAM 用户名标记 IAM 用户时，您才能为其授予访问资源的权限。有关更多信息，请参阅《IAM 用户指南》**中的 [IAM policy 元素：变量和标签](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_variables.html)。

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

Neptune 对于管理策略语句和数据访问策略语句支持不同的条件键集合：
+ [管理策略语句的条件键](iam-admin-condition-keys.md)
+ [数据访问策略语句的条件键](iam-data-condition-keys.md#iam-neptune-condition-keys)

## Amazon Neptune 中对 IAM policy 和访问控制特征的支持
<a name="neptune-iam-policy-support"></a>

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


**您可以与 Neptune 结合使用的 IAM 特征**  

| IAM 功能 | 管理 | 数据访问 | 
| --- | --- | --- | 
| [基于身份的策略](#security_iam_access-manage-id-based-policies) | 支持 | 是 | 
| [基于资源的策略](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_identity-vs-resource.html) | 否 | 否 | 
| [策略操作](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements_action.html) | 支持 | 是 | 
| [策略资源](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements_resource.html) | 支持 | 是 | 
| [全局条件键](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html) | 是 | （子集） | 
| [基于标签的条件键](iam-admin-condition-keys.md#iam-rds-tag-based-condition-keys) | 是 | 否 | 
| [访问控制列表 (ACLs)](https://docs.aws.amazon.com/AmazonS3/latest/userguide/acls.html) | 否 | 否 | 
| [服务控制策略 (SCPs)](#security_iam_access-manage-scp) | 支持 | 是 | 
| [服务相关角色](security-iam-service-linked-roles.md) | 是 | 否 | 

## IAM 策略限制
<a name="iam-policy-limits"></a>

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

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

Neptune 目前不支持数据面板级别的跨账户访问控制。只有在批量加载和使用角色链时才支持跨账户访问控制。有关更多信息，请参阅[批量加载教程](https://docs.aws.amazon.com//neptune/latest/userguide/bulk-load-tutorial-chain-roles.html#bulk-load-tutorial-chain-cross-account)。

# 使用 AWS 托管策略访问亚马逊 Neptune 数据库
<a name="security-iam-access-managed-policies"></a>

AWS 通过提供由创建和管理的独立 IAM 策略来解决许多常见用例 AWS。托管策略可针对常见使用案例授予必要权限，因此，您无需自行调查具体需要哪些权限。有关更多信息，请参阅《IAM 用户指南》**中的 [AWS 托管式策略](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_managed-vs-inline.html#aws-managed-policies)。

以下 AWS 托管策略适用于使用 Amazon Neptune 管理，您可以将其附加到账户中的用户： APIs
+ **[NeptuneReadOnlyAccess](read-only-access-iam-managed-policy.md)**— 授予根账户中所有 Neptune 资源的只读访问权限，用于管理和数据访问目的。 AWS 
+ **[NeptuneFullAccess](full-access-iam-managed-policy.md)**— 授予根账户中所有 Neptune 资源的完全访问权限，用于管理和数据访问目的。 AWS 如果您需要从 AWS CLI 或 SDK 获得完整的 Neptune 访问权限，但不要求 AWS 管理控制台 访问，则建议使用此方法。
+ **[NeptuneConsoleFullAccess](console-full-access-iam-managed-policy.md)**— 在 root AWS 帐户中授予对所有 Neptune 管理操作和资源的完全访问权限，但不授予对任何数据访问操作或资源的完全访问权限。它还包括用于简化从控制台访问 Neptune 的额外权限，包括有限的 IAM 和 Amazon EC2 (VPC) 权限。
+ **[NeptuneGraphReadOnlyAccess ](graph-read-only-access-iam-managed-policy.md)**— 提供对所有 Amazon Neptune Analytics 资源的只读访问权限以及依赖服务的只读权限
+ **[AWSServiceRoleForNeptuneGraphPolicy](aws-service-role-for-neptune-graph-policy.md)**— 让 Neptune Analytics 图表发布 CloudWatch 操作和使用指标以及日志。

Neptune IAM 角色和策略授予对 Amazon RDS 资源的部分访问权限，因为对于特定的管理特征，Neptune 采用了与 Amazon RDS 相同的操作技术。这包括管理 API 权限，这就是 Neptune 管理操作具有 `rds:` 前缀的原因。

## Neptune AWS 托管策略的更新
<a name="neptune-managed-policy-updates"></a>

下表跟踪从 Neptune 开始跟踪相应更改之时起对 Neptune 托管式策略的更新：


| 策略 | 说明 | 日期 | 
| --- | --- | --- | 
| AWS Amazon Neptune 的托管政策-现有政策的更新 | `NeptuneReadOnlyAcess` 和 `NeptuneFullAccess` 托管式策略现在将 `Sid`（语句 ID）作为标识符包括在策略语句中。 | 2024-01-22 | 
| [NeptuneGraphReadOnlyAccess](read-only-access-iam-managed-policy.md)（已发布） | 已发布，可提供对 Neptune Analytics 图和资源的只读访问权限。 | 2023-11-29 | 
| [AWSServiceRoleForNeptuneGraphPolicy](aws-service-role-for-neptune-graph-policy.md)（已发布） | 发布的目的是允许 Neptune Analytics 图表访问 CloudWatch 以发布操作和使用指标及日志。请参阅 Nept [une Analytics 中的使用服务相关角色 (SLRs)](https://docs.aws.amazon.com/neptune-analytics/latest/userguide/nan-service-linked-roles.html)。 | 2023-11-29 | 
| [NeptuneConsoleFullAccess](console-full-access-iam-managed-policy.md)（已添加权限） | 新增的权限提供了与 Neptune Analytics 图交互所需的所有访问权限。 | 2023-11/29 | 
| [NeptuneFullAccess](full-access-iam-managed-policy.md)（已添加权限） | 添加了数据访问权限和新全局数据库 APIs的权限。 | 2022-07-28 | 
| [NeptuneConsoleFullAccess](console-full-access-iam-managed-policy.md)（已添加权限） | 为新的全局数据库添加了权限 APIs。 | 2022-07-21 | 
| Neptune 开始了跟踪更改 | Neptune 开始跟踪其 AWS 托管策略的变更。 | 2022-07-21 | 

# 使用 AWS 托管`NeptuneReadOnlyAccess`策略向 Amazon Neptune 数据库授权
<a name="read-only-access-iam-managed-policy"></a>

以下[NeptuneReadOnlyAccess](https://console.aws.amazon.com/iam/home#policies/NeptuneReadOnlyAccess)托管策略授予对所有 Neptune 操作和资源的只读访问权限，用于管理和数据访问目的。

**注意**  
本策略已于 2022 年 7 月 21 日更新，以包括只读数据访问权限和只读管理权限，并包括全球数据库操作的权限。

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "AllowReadOnlyPermissionsForRDS",
            "Effect": "Allow",
            "Action": [
                "rds:DescribeAccountAttributes",
                "rds:DescribeCertificates",
                "rds:DescribeDBClusterParameterGroups",
                "rds:DescribeDBClusterParameters",
                "rds:DescribeDBClusterSnapshotAttributes",
                "rds:DescribeDBClusterSnapshots",
                "rds:DescribeDBClusters",
                "rds:DescribeDBEngineVersions",
                "rds:DescribeDBInstances",
                "rds:DescribeDBLogFiles",
                "rds:DescribeDBParameterGroups",
                "rds:DescribeDBParameters",
                "rds:DescribeDBSubnetGroups",
                "rds:DescribeEventCategories",
                "rds:DescribeEventSubscriptions",
                "rds:DescribeEvents",
                "rds:DescribeGlobalClusters",
                "rds:DescribeOrderableDBInstanceOptions",
                "rds:DescribePendingMaintenanceActions",
                "rds:DownloadDBLogFilePortion",
                "rds:ListTagsForResource"
            ],
            "Resource": "*"
        },
        {
            "Sid": "AllowReadOnlyPermissionsForCloudwatch",
            "Effect": "Allow",
            "Action": [
                "cloudwatch:GetMetricStatistics",
                "cloudwatch:ListMetrics"
            ],
            "Resource": "*"
        },
        {
            "Sid": "AllowReadOnlyPermissionsForEC2",
            "Effect": "Allow",
            "Action": [
                "ec2:DescribeAccountAttributes",
                "ec2:DescribeAvailabilityZones",
                "ec2:DescribeInternetGateways",
                "ec2:DescribeSecurityGroups",
                "ec2:DescribeSubnets",
                "ec2:DescribeVpcAttribute",
                "ec2:DescribeVpcs"
            ],
            "Resource": "*"
        },
        {
            "Sid": "AllowReadOnlyPermissionsForKMS",
            "Effect": "Allow",
            "Action": [
                "kms:ListKeys",
                "kms:ListRetirableGrants",
                "kms:ListAliases",
                "kms:ListKeyPolicies"
            ],
            "Resource": "*"
        },
        {
            "Sid": "AllowReadOnlyPermissionsForLogs",
            "Effect": "Allow",
            "Action": [
                "logs:DescribeLogStreams",
                "logs:GetLogEvents"
            ],
            "Resource": [
                "arn:aws:logs:*:*:log-group:/aws/rds/*:log-stream:*",
                "arn:aws:logs:*:*:log-group:/aws/neptune/*:log-stream:*"
            ]
        },
        {
            "Sid": "AllowReadOnlyPermissionsForNeptuneDB",
            "Effect": "Allow",
            "Action": [
                "neptune-db:Read*",
                "neptune-db:Get*",
                "neptune-db:List*"
            ],
            "Resource": [
                "*"
            ]
        }
    ]
}
```

------

# 使用 AWS 托管`NeptuneFullAccess`策略向 Amazon Neptune 数据库授权
<a name="full-access-iam-managed-policy"></a>

以下[NeptuneFullAccess](https://console.aws.amazon.com/iam/home#policies/NeptuneFullAccess)托管策略授予出于管理和数据访问目的对所有 Neptune 操作和资源的完全访问权限。如果您需要从 AWS CLI 或 SDK 获得完全访问权限，但不需要从 SDK 获得完全访问权限，则建议您这样做 AWS 管理控制台。

**注意**  
本策略已于 2022 年 7 月 21 日更新，以包括完全数据访问权限和完全管理权限，并包括全球数据库操作的权限。

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "AllowNeptuneCreate",
            "Effect": "Allow",
            "Action": [
                "rds:CreateDBCluster",
                "rds:CreateDBInstance"
            ],
            "Resource": [
                "arn:aws:rds:*:*:*"
            ],
            "Condition": {
                "StringEquals": {
                    "rds:DatabaseEngine": [
                        "graphdb",
                        "neptune"
                    ]
                }
            }
        },
        {
            "Sid": "AllowManagementPermissionsForRDS",
            "Effect": "Allow",
            "Action": [
                "rds:AddRoleToDBCluster",
                "rds:AddSourceIdentifierToSubscription",
                "rds:AddTagsToResource",
                "rds:ApplyPendingMaintenanceAction",
                "rds:CopyDBClusterParameterGroup",
                "rds:CopyDBClusterSnapshot",
                "rds:CopyDBParameterGroup",
                "rds:CreateDBClusterEndpoint",
                "rds:CreateDBClusterParameterGroup",
                "rds:CreateDBClusterSnapshot",
                "rds:CreateDBParameterGroup",
                "rds:CreateDBSubnetGroup",
                "rds:CreateEventSubscription",
                "rds:CreateGlobalCluster",
                "rds:DeleteDBCluster",
                "rds:DeleteDBClusterEndpoint",
                "rds:DeleteDBClusterParameterGroup",
                "rds:DeleteDBClusterSnapshot",
                "rds:DeleteDBInstance",
                "rds:DeleteDBParameterGroup",
                "rds:DeleteDBSubnetGroup",
                "rds:DeleteEventSubscription",
                "rds:DeleteGlobalCluster",
                "rds:DescribeDBClusterEndpoints",
                "rds:DescribeAccountAttributes",
                "rds:DescribeCertificates",
                "rds:DescribeDBClusterParameterGroups",
                "rds:DescribeDBClusterParameters",
                "rds:DescribeDBClusterSnapshotAttributes",
                "rds:DescribeDBClusterSnapshots",
                "rds:DescribeDBClusters",
                "rds:DescribeDBEngineVersions",
                "rds:DescribeDBInstances",
                "rds:DescribeDBLogFiles",
                "rds:DescribeDBParameterGroups",
                "rds:DescribeDBParameters",
                "rds:DescribeDBSecurityGroups",
                "rds:DescribeDBSubnetGroups",
                "rds:DescribeEngineDefaultClusterParameters",
                "rds:DescribeEngineDefaultParameters",
                "rds:DescribeEventCategories",
                "rds:DescribeEventSubscriptions",
                "rds:DescribeEvents",
                "rds:DescribeGlobalClusters",
                "rds:DescribeOptionGroups",
                "rds:DescribeOrderableDBInstanceOptions",
                "rds:DescribePendingMaintenanceActions",
                "rds:DescribeValidDBInstanceModifications",
                "rds:DownloadDBLogFilePortion",
                "rds:FailoverDBCluster",
                "rds:FailoverGlobalCluster",
                "rds:ListTagsForResource",
                "rds:ModifyDBCluster",
                "rds:ModifyDBClusterEndpoint",
                "rds:ModifyDBClusterParameterGroup",
                "rds:ModifyDBClusterSnapshotAttribute",
                "rds:ModifyDBInstance",
                "rds:ModifyDBParameterGroup",
                "rds:ModifyDBSubnetGroup",
                "rds:ModifyEventSubscription",
                "rds:ModifyGlobalCluster",
                "rds:PromoteReadReplicaDBCluster",
                "rds:RebootDBInstance",
                "rds:RemoveFromGlobalCluster",
                "rds:RemoveRoleFromDBCluster",
                "rds:RemoveSourceIdentifierFromSubscription",
                "rds:RemoveTagsFromResource",
                "rds:ResetDBClusterParameterGroup",
                "rds:ResetDBParameterGroup",
                "rds:RestoreDBClusterFromSnapshot",
                "rds:RestoreDBClusterToPointInTime",
                "rds:StartDBCluster",
                "rds:StopDBCluster"
            ],
            "Resource": [
                "*"
            ]
        },
        {
            "Sid": "AllowOtherDepedentPermissions",
            "Effect": "Allow",
            "Action": [
                "cloudwatch:GetMetricStatistics",
                "cloudwatch:ListMetrics",
                "ec2:DescribeAccountAttributes",
                "ec2:DescribeAvailabilityZones",
                "ec2:DescribeSecurityGroups",
                "ec2:DescribeSubnets",
                "ec2:DescribeVpcAttribute",
                "ec2:DescribeVpcs",
                "kms:ListAliases",
                "kms:ListKeyPolicies",
                "kms:ListKeys",
                "kms:ListRetirableGrants",
                "logs:DescribeLogStreams",
                "logs:GetLogEvents",
                "sns:ListSubscriptions",
                "sns:ListTopics",
                "sns:Publish"
            ],
            "Resource": [
                "*"
            ]
        },
        {
            "Sid": "AllowPassRoleForNeptune",
            "Effect": "Allow",
            "Action": "iam:PassRole",
            "Resource": "*",
            "Condition": {
                "StringEquals": {
                    "iam:passedToService": "rds.amazonaws.com"
                }
            }
        },
        {
            "Sid": "AllowCreateSLRForNeptune",
            "Effect": "Allow",
            "Action": "iam:CreateServiceLinkedRole",
            "Resource": "arn:aws:iam::*:role/aws-service-role/rds.amazonaws.com/AWSServiceRoleForRDS",
            "Condition": {
                "StringLike": {
                    "iam:AWSServiceName": "rds.amazonaws.com"
                }
            }
        },
        {
            "Sid": "AllowDataAccessForNeptune",
            "Effect": "Allow",
            "Action": [
                "neptune-db:*"
            ],
            "Resource": [
                "*"
            ]
        }
    ]
}
```

------

# `NeptuneConsoleFullAccess`使用 AWS 托管策略进行授权
<a name="console-full-access-iam-managed-policy"></a>

以下[NeptuneConsoleFullAccess](https://console.aws.amazon.com/iam/home#policies/NeptuneConsoleFullAccess)托管策略授予出于管理目的对所有 Neptune 操作和资源的完全访问权限，但不允许出于数据访问目的。它还包括用于简化从控制台访问 Neptune 的额外权限，包括有限的 IAM 和 Amazon EC2 (VPC) 权限。

**注意**  
本策略已于 2023 年 11 月 29 日更新，增加了与 Neptune Analytics 图交互所需的权限。  
它已于 2022 年 7 月 21 日更新，以包括对全球数据库操作的权限。

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

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Sid": "AllowNeptuneCreate",
      "Effect": "Allow",
      "Action": [
        "rds:CreateDBCluster",
        "rds:CreateDBInstance"
      ],
      "Resource": [
        "arn:aws:rds:*:*:*"
      ],
      "Condition": {
        "StringEquals": {
          "rds:DatabaseEngine": [
            "graphdb",
            "neptune"
          ]
        }
      }
    },
    {
      "Sid": "AllowManagementPermissionsForRDS",
      "Action": [
        "rds:AddRoleToDBCluster",
        "rds:AddSourceIdentifierToSubscription",
        "rds:AddTagsToResource",
        "rds:ApplyPendingMaintenanceAction",
        "rds:CopyDBClusterParameterGroup",
        "rds:CopyDBClusterSnapshot",
        "rds:CopyDBParameterGroup",
        "rds:CreateDBClusterParameterGroup",
        "rds:CreateDBClusterSnapshot",
        "rds:CreateDBParameterGroup",
        "rds:CreateDBSubnetGroup",
        "rds:CreateEventSubscription",
        "rds:DeleteDBCluster",
        "rds:DeleteDBClusterParameterGroup",
        "rds:DeleteDBClusterSnapshot",
        "rds:DeleteDBInstance",
        "rds:DeleteDBParameterGroup",
        "rds:DeleteDBSubnetGroup",
        "rds:DeleteEventSubscription",
        "rds:DescribeAccountAttributes",
        "rds:DescribeCertificates",
        "rds:DescribeDBClusterParameterGroups",
        "rds:DescribeDBClusterParameters",
        "rds:DescribeDBClusterSnapshotAttributes",
        "rds:DescribeDBClusterSnapshots",
        "rds:DescribeDBClusters",
        "rds:DescribeDBEngineVersions",
        "rds:DescribeDBInstances",
        "rds:DescribeDBLogFiles",
        "rds:DescribeDBParameterGroups",
        "rds:DescribeDBParameters",
        "rds:DescribeDBSecurityGroups",
        "rds:DescribeDBSubnetGroups",
        "rds:DescribeEngineDefaultClusterParameters",
        "rds:DescribeEngineDefaultParameters",
        "rds:DescribeEventCategories",
        "rds:DescribeEventSubscriptions",
        "rds:DescribeEvents",
        "rds:DescribeOptionGroups",
        "rds:DescribeOrderableDBInstanceOptions",
        "rds:DescribePendingMaintenanceActions",
        "rds:DescribeValidDBInstanceModifications",
        "rds:DownloadDBLogFilePortion",
        "rds:FailoverDBCluster",
        "rds:ListTagsForResource",
        "rds:ModifyDBCluster",
        "rds:ModifyDBClusterParameterGroup",
        "rds:ModifyDBClusterSnapshotAttribute",
        "rds:ModifyDBInstance",
        "rds:ModifyDBParameterGroup",
        "rds:ModifyDBSubnetGroup",
        "rds:ModifyEventSubscription",
        "rds:PromoteReadReplicaDBCluster",
        "rds:RebootDBInstance",
        "rds:RemoveRoleFromDBCluster",
        "rds:RemoveSourceIdentifierFromSubscription",
        "rds:RemoveTagsFromResource",
        "rds:ResetDBClusterParameterGroup",
        "rds:ResetDBParameterGroup",
        "rds:RestoreDBClusterFromSnapshot",
        "rds:RestoreDBClusterToPointInTime"
      ],
      "Effect": "Allow",
      "Resource": [
        "*"
      ]
    },
    {
      "Sid": "AllowOtherDepedentPermissions",
      "Action": [
        "cloudwatch:GetMetricStatistics",
        "cloudwatch:ListMetrics",
        "ec2:AllocateAddress",
        "ec2:AssignIpv6Addresses",
        "ec2:AssignPrivateIpAddresses",
        "ec2:AssociateAddress",
        "ec2:AssociateRouteTable",
        "ec2:AssociateSubnetCidrBlock",
        "ec2:AssociateVpcCidrBlock",
        "ec2:AttachInternetGateway",
        "ec2:AttachNetworkInterface",
        "ec2:CreateCustomerGateway",
        "ec2:CreateDefaultSubnet",
        "ec2:CreateDefaultVpc",
        "ec2:CreateInternetGateway",
        "ec2:CreateNatGateway",
        "ec2:CreateNetworkInterface",
        "ec2:CreateRoute",
        "ec2:CreateRouteTable",
        "ec2:CreateSecurityGroup",
        "ec2:CreateSubnet",
        "ec2:CreateVpc",
        "ec2:CreateVpcEndpoint",
        "ec2:CreateVpcEndpoint",
        "ec2:DescribeAccountAttributes",
        "ec2:DescribeAccountAttributes",
        "ec2:DescribeAddresses",
        "ec2:DescribeAvailabilityZones",
        "ec2:DescribeAvailabilityZones",
        "ec2:DescribeCustomerGateways",
        "ec2:DescribeInstances",
        "ec2:DescribeNatGateways",
        "ec2:DescribeNetworkInterfaces",
        "ec2:DescribePrefixLists",
        "ec2:DescribeRouteTables",
        "ec2:DescribeSecurityGroupReferences",
        "ec2:DescribeSecurityGroups",
        "ec2:DescribeSecurityGroups",
        "ec2:DescribeSubnets",
        "ec2:DescribeSubnets",
        "ec2:DescribeVpcAttribute",
        "ec2:DescribeVpcAttribute",
        "ec2:DescribeVpcEndpoints",
        "ec2:DescribeVpcs",
        "ec2:DescribeVpcs",
        "ec2:ModifyNetworkInterfaceAttribute",
        "ec2:ModifySubnetAttribute",
        "ec2:ModifyVpcAttribute",
        "ec2:ModifyVpcEndpoint",
        "iam:ListRoles",
        "kms:ListAliases",
        "kms:ListKeyPolicies",
        "kms:ListKeys",
        "kms:ListRetirableGrants",
        "logs:DescribeLogStreams",
        "logs:GetLogEvents",
        "sns:ListSubscriptions",
        "sns:ListTopics",
        "sns:Publish"
      ],
      "Effect": "Allow",
      "Resource": [
        "*"
      ]
    },
    {
      "Sid": "AllowPassRoleForNeptune",
      "Action": "iam:PassRole",
      "Effect": "Allow",
      "Resource": "*",
      "Condition": {
        "StringEquals": {
          "iam:passedToService": "rds.amazonaws.com"
        }
      }
    },
    {
      "Sid": "AllowCreateSLRForNeptune",
      "Action": "iam:CreateServiceLinkedRole",
      "Effect": "Allow",
      "Resource": "arn:aws:iam::*:role/aws-service-role/rds.amazonaws.com/AWSServiceRoleForRDS",
      "Condition": {
        "StringLike": {
          "iam:AWSServiceName": "rds.amazonaws.com"
        }
      }
    },
    {
      "Sid": "AllowManagementPermissionsForNeptuneAnalytics",
      "Effect": "Allow",
      "Action": [
        "neptune-graph:CreateGraph",
        "neptune-graph:DeleteGraph",
        "neptune-graph:GetGraph",
        "neptune-graph:ListGraphs",
        "neptune-graph:UpdateGraph",
        "neptune-graph:ResetGraph",
        "neptune-graph:CreateGraphSnapshot",
        "neptune-graph:DeleteGraphSnapshot",
        "neptune-graph:GetGraphSnapshot",
        "neptune-graph:ListGraphSnapshots",
        "neptune-graph:RestoreGraphFromSnapshot",
        "neptune-graph:CreatePrivateGraphEndpoint",
        "neptune-graph:GetPrivateGraphEndpoint",
        "neptune-graph:ListPrivateGraphEndpoints",
        "neptune-graph:DeletePrivateGraphEndpoint",
        "neptune-graph:CreateGraphUsingImportTask",
        "neptune-graph:GetImportTask",
        "neptune-graph:ListImportTasks",
        "neptune-graph:CancelImportTask"
      ],
      "Resource": [
        "arn:aws:neptune-graph:*:*:*"
      ]
    },
    {
      "Sid": "AllowPassRoleForNeptuneAnalytics",
      "Effect": "Allow",
      "Action": "iam:PassRole",
      "Resource": "*",
      "Condition": {
        "StringEquals": {
          "iam:passedToService": "neptune-graph.amazonaws.com"
        }
      }
    },
    {
      "Sid": "AllowCreateSLRForNeptuneAnalytics",
      "Effect": "Allow",
      "Action": "iam:CreateServiceLinkedRole",
      "Resource": "arn:aws:iam::*:role/aws-service-role/neptune-graph.amazonaws.com/AWSServiceRoleForNeptuneGraph",
      "Condition": {
        "StringLike": {
          "iam:AWSServiceName": "neptune-graph.amazonaws.com"
        }
      }
    }
  ]
}
```

------

# `NeptuneGraphReadOnlyAccess`使用 AWS 托管策略进行授权
<a name="graph-read-only-access-iam-managed-policy"></a>

以下[NeptuneGraphReadOnlyAccess](https://console.aws.amazon.com/iam/home#policies/NeptuneGraphReadOnlyAccess)托管策略提供对所有 Amazon Neptune Analytics 资源的只读访问权限以及依赖服务的只读权限。

此策略包括以下权限：
+ **对于 Amazon EC2** — 检索有关 VPCs子网、安全组和可用区域的信息。
+ **用于 AWS KMS**-检索有关 KMS 密钥和别名的信息。
+ **对于 CloudWatch**-检索有关 CloudWatch 指标的信息。
+ **对于 CloudWatch 日志**-检索有关 CloudWatch 日志流和事件的信息。

**注意**  
该策略已于 2023 年 11 月 29 日发布。

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

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Sid": "AllowReadOnlyPermissionsForNeptuneGraph",
      "Effect": "Allow",
      "Action": [
        "neptune-graph:Get*",
        "neptune-graph:List*",
        "neptune-graph:Read*"
      ],
      "Resource": "*"
    },
    {
      "Sid": "AllowReadOnlyPermissionsForEC2",
      "Effect": "Allow",
      "Action": [
        "ec2:DescribeVpcEndpoints",
        "ec2:DescribeVpcAttribute",
        "ec2:DescribeSecurityGroups",
        "ec2:DescribeSubnets",
        "ec2:DescribeVpcs",
        "ec2:DescribeAvailabilityZones"
      ],
      "Resource": "*"
    },
    {
      "Sid": "AllowReadOnlyPermissionsForKMS",
      "Effect": "Allow",
      "Action": [
        "kms:ListKeys",
        "kms:ListAliases"
      ],
      "Resource": "*"
    },
    {
      "Sid": "AllowReadOnlyPermissionsForCloudwatch",
      "Effect": "Allow",
      "Action": [
        "cloudwatch:GetMetricData",
        "cloudwatch:ListMetrics",
        "cloudwatch:GetMetricStatistics"
      ],
      "Resource": "*"
    },
    {
      "Sid": "AllowReadOnlyPermissionsForLogs",
      "Effect": "Allow",
      "Action": [
        "logs:DescribeLogStreams",
        "logs:GetLogEvents"
      ],
      "Resource": [
        "arn:aws:logs:*:*:log-group:/aws/neptune/*:log-stream:*"
      ]
    }
  ]
}
```

------

# 使用 `AWSServiceRoleForNeptuneGraphPolicy` 授予对 Neptune 图形的访问权限
<a name="aws-service-role-for-neptune-graph-policy"></a>

下面的[AWSServiceRoleForNeptuneGraphPolicy](https://console.aws.amazon.com/iam/home#policies/AWSServiceRoleForNeptuneGraphPolicy)托管策略允许图表发布操作和使用情况指标和日志。 CloudWatch 请参阅[nan-service-linked-roles](https://docs.aws.amazon.com/neptune-analytics/latest/userguide/nan-service-linked-roles.html)。

**注意**  
该策略已于 2023 年 11 月 29 日发布。

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

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Sid": "GraphMetrics",
      "Effect": "Allow",
      "Action": [
        "cloudwatch:PutMetricData"
      ],
      "Resource": "*",
      "Condition": {
        "StringEquals": {
          "cloudwatch:namespace": [
            "AWS/Neptune",
            "AWS/Usage"
          ]
        }
      }
    },
    {
      "Sid": "GraphLogGroup",
      "Effect": "Allow",
      "Action": [
        "logs:CreateLogGroup"
      ],
      "Resource": [
        "arn:aws:logs:*:*:log-group:/aws/neptune/*"
      ],
      "Condition": {
        "StringEquals": {
          "aws:ResourceAccount": "${aws:PrincipalAccount}"
        }
      }
    },
    {
      "Sid": "GraphLogEvents",
      "Effect": "Allow",
      "Action": [
        "logs:CreateLogStream",
        "logs:PutLogEvents",
        "logs:DescribeLogStreams"
      ],
      "Resource": [
        "arn:aws:logs:*:*:log-group:/aws/neptune/*:log-stream:*"
      ],
      "Condition": {
        "StringEquals": {
          "aws:ResourceAccount": "${aws:PrincipalAccount}"
        }
      }
    }
  ]
}
```

------



# 使用 IAM 条件上下文键自定义对 Amazon Neptune 资源的访问权限
<a name="iam-condition-keys"></a>

您可以在 IAM policy 中指定条件，以控制对 Neptune 管理操作和资源的访问权限。仅当条件为 true 时，策略语句才有效。

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

要表达条件，请在策略语句的 [https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements_condition.html](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements_condition.html) 元素中使用预定义的条件键，以及 [IAM 条件策略运算符](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements_condition_operators.html)（如等于或小于）。

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

 在指定条件时，您也可以使用占位符变量。例如，只有在使用 IAM 用户名标记 IAM 用户时，您才能为其授予访问资源的权限。有关更多信息，请参阅《IAM 用户指南》**中的 [IAM policy 元素：变量和标签](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_variables.html)。

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

**Neptune 管理策略语句的 IAM 条件键**
+ [全局条件键](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html)-您可以在 Neptune 管理策略声明中使用大多数 AWS 全局条件键。
+ [特定于服务的条件密钥](iam-admin-condition-keys.md)-这些密钥是为特定 AWS 服务定义的密钥。[用于管理 Amazon Neptune 的 IAM 条件键](iam-admin-condition-keys.md)中列出了 Neptune 对于管理策略语句支持的条件键。

**Neptune 数据访问策略语句的 IAM 条件键**
+ [全局条件键](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html) – [AWS Neptune 在数据访问策略声明中支持的全局条件上下文密钥](iam-data-condition-keys.md#iam-data-global-condition-keys)中列出了 Neptune 在数据访问策略语句中支持的这些键的子集。
+ [条件键](iam-data-condition-keys.md)中列出了 Neptune 为数据访问策略语句定义的特定于服务的条件键。

# 创建自定义 IAM 策略语句来管理 Amazon Neptune
<a name="iam-admin-policies"></a>

管理策略语句允许您控制 IAM 用户可以执行哪些操作来管理 Neptune 数据库。

Neptune 管理策略语句授予对 Neptune 支持的一项或多项[管理操作](neptune-iam-admin-actions.md)和[管理资源](iam-admin-resources.md)的访问权限。您还可以使用[条件键](iam-admin-condition-keys.md)以使管理权限更具体。

**注意**  
由于 Neptune 与 Amazon RDS 共享功能，因此管理策略语句中的管理操作、资源和特定于服务的条件键在设计上使用 `rds:` 前缀。

**Topics**
+ [用于管理 Amazon Neptune 的 IAM 操作](neptune-iam-admin-actions.md)
+ [用于管理 Amazon Neptune 的 IAM 资源类型](iam-admin-resources.md)
+ [用于管理 Amazon Neptune 的 IAM 条件键](iam-admin-condition-keys.md)
+ [创建适用于 Amazon Neptune 的 IAM 管理策略语句](iam-admin-policy-examples.md)

# 用于管理 Amazon Neptune 的 IAM 操作
<a name="neptune-iam-admin-actions"></a>

您可以使用下面在 IAM 策略声明`Action`元素中列出的管理操作来控制对 Nep [tune](api.md) 管理层的访问权限。 APIs您在策略中使用一项操作时，通常使用相同的名称允许或拒绝对 API 操作或 CLI 命令的访问。但在某些情况下，单一动作可控制对多项操作的访问。还有某些操作需要多种不同的动作。

下表中的 `Resource type` 字段指示每项操作是否支持资源级权限。如果此字段中没有任何值，您必须在策略语句的 `Resource` 元素中指定所有资源 ("\$1")。如果该列包含一种资源类型，则可以在含有该操作的语句中指定该类型的资源 ARN。[本页](iam-admin-resources.md)列出了 Neptune 管理资源类型。

必需资源在下面的列表中以星号 (\$1) 指示。如果在使用该操作的语句中指定资源级权限 ARN，则它必须属于该类型。某些操作支持多种资源类型。如果资源类型是可选的（换句话说，没有用星号标记），则不必将其包括在内。

有关此处列出的字段的更多信息，请参阅 [IAM 用户指南](https://docs.aws.amazon.com/IAM/latest/UserGuide/)中的[操作表](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_actions-resources-contextkeys.html#actions_table)。

## rds: AddRoleTo DBCluster
<a name="neptune-iam-admin-actions-AddRoleToDBCluster"></a>

`AddRoleToDBCluster` 将 IAM 角色与 Neptune 数据库集群关联。

*访问级别*：`Write`。

*相关操作*：`iam:PassRole`。

*资源类型：*[cluster](iam-admin-resources.md#neptune-cluster-resource)（必需）。

## rds: AddSourceIdentifierToSubscription
<a name="neptune-iam-admin-actions-AddSourceIdentifierToSubscription"></a>

`AddSourceIdentifierToSubscription` 将源标识符添加到现有 Neptune 事件通知订阅。

*访问级别*：`Write`。

*资源类型*：[es](iam-admin-resources.md#neptune-es-resource)（必需）。

## rds: AddTagsToResource
<a name="neptune-iam-admin-actions-AddTagsToResource"></a>

`AddTagsToResource` 将 IAM 角色与 Neptune 数据库集群关联。

*访问级别*：`Write`。

*资源类型*：
+ [db](iam-admin-resources.md#neptune-db-resource)
+ [es](iam-admin-resources.md#neptune-es-resource)
+ [pg](iam-admin-resources.md#neptune-pg-resource)
+ [cluster-snapshot](iam-admin-resources.md#neptune-cluster-snapshot-resource)
+ [subgrp](iam-admin-resources.md#neptune-subgrp-resource)

*条件键*：
+ [aws:RequestTag/*tag-key*](iam-admin-condition-keys.md#admin-aws_RequestTag)
+ [aws：TagKeys](iam-admin-condition-keys.md#admin-aws_TagKeys)

## rds: ApplyPendingMaintenanceAction
<a name="neptune-iam-admin-actions-ApplyPendingMaintenanceAction"></a>

`ApplyPendingMaintenanceAction` 将待处理的维护操作应用于资源。

*访问级别*：`Write`。

*资源类型*：[db](iam-admin-resources.md#neptune-db-resource)（必需）。

## RDS: 复制 DBCluster ParameterGroup
<a name="neptune-iam-admin-actions-CopyDBClusterParameterGroup"></a>

`CopyDBClusterParameterGroup` 复制指定的数据库集群参数组。

*访问级别*：`Write`。

*资源类型*：[cluster-pg](iam-admin-resources.md#neptune-cluster-pg-resource)（必需）。

## RDSDBCluster: 复制快照
<a name="neptune-iam-admin-actions-CopyDBClusterSnapshot"></a>

`CopyDBClusterSnapshot` 复制数据库集群的快照。

*访问级别*：`Write`。

*资源类型*：[cluster-snapshot](iam-admin-resources.md#neptune-cluster-snapshot-resource)（必需）。

## RDSDBParameter: 复制组
<a name="neptune-iam-admin-actions-CopyDBParameterGroup"></a>

`CopyDBParameterGroup` 复制指定的数据库参数组。

*访问级别*：`Write`。

*资源类型*：[pg](iam-admin-resources.md#neptune-pg-resource)（必需）。

## RDS: 创建 DBCluster
<a name="neptune-iam-admin-actions-CreateDBCluster"></a>

`CreateDBCluster` 创建新的 Neptune 数据库集群。

*访问级别*：`Tagging`。

*相关操作*：`iam:PassRole`。

*资源类型*：
+ [cluster](iam-admin-resources.md#neptune-cluster-resource)（必需）。
+ [cluster-pg](iam-admin-resources.md#neptune-cluster-pg-resource)（必需）。
+ [subgrp](iam-admin-resources.md#neptune-subgrp-resource)（必需）。

*条件键*：
+ [aws:RequestTag/*tag-key*](iam-admin-condition-keys.md#admin-aws_RequestTag)
+ [aws：TagKeys](iam-admin-condition-keys.md#admin-aws_TagKeys)
+ [neptune-rds\$1 DatabaseEngine](iam-admin-condition-keys.md#admin-rds_DatabaseEngine)

## RDS: 创建 DBCluster ParameterGroup
<a name="neptune-iam-admin-actions-CreateDBClusterParameterGroup"></a>

`CreateDBClusterParameterGroup` 创建新的数据库集群参数组。

*访问级别*：`Tagging`。

*资源类型*：[cluster-pg](iam-admin-resources.md#neptune-cluster-pg-resource)（必需）。

*条件键*：
+ [aws:RequestTag/*tag-key*](iam-admin-condition-keys.md#admin-aws_RequestTag)
+ [aws：TagKeys](iam-admin-condition-keys.md#admin-aws_TagKeys)

## RDSDBCluster: 创建快照
<a name="neptune-iam-admin-actions-CreateDBClusterSnapshot"></a>

`CreateDBClusterSnapshot` 创建数据库集群的快照。

*访问级别*：`Tagging`。

*资源类型*：
+ [cluster](iam-admin-resources.md#neptune-cluster-resource)（必需）。
+ [cluster-snapshot](iam-admin-resources.md#neptune-cluster-snapshot-resource)（必需）。

*条件键*：
+ [aws:RequestTag/*tag-key*](iam-admin-condition-keys.md#admin-aws_RequestTag)
+ [aws：TagKeys](iam-admin-condition-keys.md#admin-aws_TagKeys)

## RDS: 创建 DBInstance
<a name="neptune-iam-admin-actions-CreateDBInstance"></a>

`CreateDBInstance` 创建新的数据库实例。

*访问级别*：`Tagging`。

*相关操作*：`iam:PassRole`。

*资源类型*：
+ [db](iam-admin-resources.md#neptune-db-resource)（必需）。
+ [pg](iam-admin-resources.md#neptune-pg-resource)（必需）。
+ [subgrp](iam-admin-resources.md#neptune-subgrp-resource)（必需）。

*条件键*：
+ [aws:RequestTag/*tag-key*](iam-admin-condition-keys.md#admin-aws_RequestTag)
+ [aws：TagKeys](iam-admin-condition-keys.md#admin-aws_TagKeys)

## RDSDBParameter: 创建群组
<a name="neptune-iam-admin-actions-CreateDBParameterGroup"></a>

`CreateDBParameterGroup` 创建一个新的数据库参数组。

*访问级别*：`Tagging`。

*资源类型*：[pg](iam-admin-resources.md#neptune-pg-resource)（必需）。

*条件键*：
+ [aws:RequestTag/*tag-key*](iam-admin-condition-keys.md#admin-aws_RequestTag)
+ [aws：TagKeys](iam-admin-condition-keys.md#admin-aws_TagKeys)

## RDSDBSubnet: 创建群组
<a name="neptune-iam-admin-actions-CreateDBSubnetGroup"></a>

`CreateDBSubnetGroup` 创建新的数据库子网组。

*访问级别*：`Tagging`。

*资源类型*：[subgrp](iam-admin-resources.md#neptune-subgrp-resource)（必需）。

*条件键*：
+ [aws:RequestTag/*tag-key*](iam-admin-condition-keys.md#admin-aws_RequestTag)
+ [aws：TagKeys](iam-admin-condition-keys.md#admin-aws_TagKeys)

## rds: CreateEventSubscription
<a name="neptune-iam-admin-actions-CreateEventSubscription"></a>

`CreateEventSubscription` 创建 Neptune 事件通知订阅。

*访问级别*：`Tagging`。

*资源类型*：[es](iam-admin-resources.md#neptune-es-resource)（必需）。

*条件键*：
+ [aws:RequestTag/*tag-key*](iam-admin-condition-keys.md#admin-aws_RequestTag)
+ [aws：TagKeys](iam-admin-condition-keys.md#admin-aws_TagKeys)

## RDS: 删除 DBCluster
<a name="neptune-iam-admin-actions-DeleteDBCluster"></a>

`DeleteDBCluster` 删除现有的 Neptune 数据库集群。

*访问级别*：`Write`。

*资源类型*：
+ [cluster](iam-admin-resources.md#neptune-cluster-resource)（必需）。
+ [cluster-snapshot](iam-admin-resources.md#neptune-cluster-snapshot-resource)（必需）。

## RDS: 删除 DBCluster ParameterGroup
<a name="neptune-iam-admin-actions-DeleteDBClusterParameterGroup"></a>

`DeleteDBClusterParameterGroup` 删除指定的数据库集群参数组。

*访问级别*：`Write`。

*资源类型*：[cluster-pg](iam-admin-resources.md#neptune-cluster-pg-resource)（必需）。

## RDSDBCluster: 删除快照
<a name="neptune-iam-admin-actions-DeleteDBClusterSnapshot"></a>

`DeleteDBClusterSnapshot` 删除数据库集群快照。

*访问级别*：`Write`。

*资源类型*：[cluster-snapshot](iam-admin-resources.md#neptune-cluster-snapshot-resource)（必需）。

## RDS: 删除 DBInstance
<a name="neptune-iam-admin-actions-DeleteDBInstance"></a>

`DeleteDBInstance` 删除指定的数据库实例。

*访问级别*：`Write`。

*资源类型*：[db](iam-admin-resources.md#neptune-db-resource)（必需）。

## RDSDBParameter: 删除群组
<a name="neptune-iam-admin-actions-DeleteDBParameterGroup"></a>

`DeleteDBParameterGroup`删除指定的 DBParameter群组。

*访问级别*：`Write`。

*资源类型*：[pg](iam-admin-resources.md#neptune-pg-resource)（必需）。

## RDSDBSubnet: 删除群组
<a name="neptune-iam-admin-actions-DeleteDBSubnetGroup"></a>

`DeleteDBSubnetGroup` 删除数据库子网组。

*访问级别*：`Write`。

*资源类型*：[subgrp](iam-admin-resources.md#neptune-subgrp-resource)（必需）。

## rds: DeleteEventSubscription
<a name="neptune-iam-admin-actions-DeleteEventSubscription"></a>

`DeleteEventSubscription` 删除事件通知订阅。

*访问级别*：`Write`。

*资源类型*：[es](iam-admin-resources.md#neptune-es-resource)（必需）。

## RDS: 描述 DBCluster ParameterGroups
<a name="neptune-iam-admin-actions-DescribeDBClusterParameterGroups"></a>

`DescribeDBClusterParameterGroups`返回 DBClusterParameterGroup 描述列表。

*访问级别*：`List`。

*资源类型*：[cluster-pg](iam-admin-resources.md#neptune-cluster-pg-resource)（必需）。

## RDSDBCluster: 描述参数
<a name="neptune-iam-admin-actions-DescribeDBClusterParameters"></a>

`DescribeDBClusterParameters` 返回特定数据库集群参数组的详细参数列表。

*访问级别*：`List`。

*资源类型*：[cluster-pg](iam-admin-resources.md#neptune-cluster-pg-resource)（必需）。

## RDS: 描述 DBCluster SnapshotAttributes
<a name="neptune-iam-admin-actions-DescribeDBClusterSnapshotAttributes"></a>

`DescribeDBClusterSnapshotAttributes` 返回手动数据库集群快照的数据库集群快照属性名称和值的列表。

*访问级别*：`List`。

*资源类型*：[cluster-snapshot](iam-admin-resources.md#neptune-cluster-snapshot-resource)（必需）。

## RDSDBCluster: 描述快照
<a name="neptune-iam-admin-actions-DescribeDBClusterSnapshots"></a>

`DescribeDBClusterSnapshots` 返回有关数据库集群快照的信息。

*访问级别*：`Read`。

## RDS: 描述 DBClusters
<a name="neptune-iam-admin-actions-DescribeDBClusters"></a>

`DescribeDBClusters` 返回有关预调配的 Neptune 数据库集群的信息。

*访问级别*：`List`。

*资源类型：*[cluster](iam-admin-resources.md#neptune-cluster-resource)（必需）。

## RDSDBEngine: 描述版本
<a name="neptune-iam-admin-actions-DescribeDBEngineVersions"></a>

`DescribeDBEngineVersions` 返回可用数据库引擎的列表。

*访问级别*：`List`。

*资源类型*：[pg](iam-admin-resources.md#neptune-pg-resource)（必需）。

## RDS: 描述 DBInstances
<a name="neptune-iam-admin-actions-DescribeDBInstances"></a>

`DescribeDBInstances` 返回有关数据库实例的信息。

*访问级别*：`List`。

*资源类型*：[es](iam-admin-resources.md#neptune-es-resource)（必需）。

## RDSDBParameter: 描述群组
<a name="neptune-iam-admin-actions-DescribeDBParameterGroups"></a>

`DescribeDBParameterGroups`返回群 DBParameter组描述列表。

*访问级别*：`List`。

*资源类型*：[pg](iam-admin-resources.md#neptune-pg-resource)（必需）。

## RDS: 描述 DBParameters
<a name="neptune-iam-admin-actions-DescribeDBParameters"></a>

`DescribeDBParameters` 返回特定数据库参数组的详细参数列表。

*访问级别*：`List`。

*资源类型*：[pg](iam-admin-resources.md#neptune-pg-resource)（必需）。

## RDSDBSubnet: 描述群组
<a name="neptune-iam-admin-actions-DescribeDBSubnetGroups"></a>

`DescribeDBSubnetGroups`返回群 DBSubnet组描述列表。

*访问级别*：`List`。

*资源类型*：[subgrp](iam-admin-resources.md#neptune-subgrp-resource)（必需）。

## rds: DescribeEventCategories
<a name="neptune-iam-admin-actions-DescribeEventCategories"></a>

`DescribeEventCategories` 返回所有事件源类型的类别列表；或如果指定，则显示指定源类型的类别列表。

*访问级别*：`List`。

## rds: DescribeEventSubscriptions
<a name="neptune-iam-admin-actions-DescribeEventSubscriptions"></a>

`DescribeEventSubscriptions` 列出客户账户的所有订阅描述。

*访问级别*：`List`。

*资源类型*：[es](iam-admin-resources.md#neptune-es-resource)（必需）。

## rds: DescribeEvents
<a name="neptune-iam-admin-actions-DescribeEvents"></a>

`DescribeEvents` 返回过去 14 天与数据库实例、数据库安全组和数据库参数组相关的事件。

*访问级别*：`List`。

*资源类型*：[es](iam-admin-resources.md#neptune-es-resource)（必需）。

## rds: DescribeOrderable DBInstance 选项
<a name="neptune-iam-admin-actions-DescribeOrderableDBInstanceOptions"></a>

`DescribeOrderableDBInstanceOptions` 返回指定引擎的可订购数据库实例选项的列表。

*访问级别*：`List`。

## rds: DescribePendingMaintenanceActions
<a name="neptune-iam-admin-actions-DescribePendingMaintenanceActions"></a>

`DescribePendingMaintenanceActions` 返回至少具有一个待处理的维护操作的资源（例如，数据库实例）的列表。

*访问级别*：`List`。

*资源类型*：[db](iam-admin-resources.md#neptune-db-resource)（必需）。

## rds：DescribeValidDBInstance修改
<a name="neptune-iam-admin-actions-DescribeValidDBInstanceModifications"></a>

`DescribeValidDBInstanceModifications` 列出可以对数据库实例进行的修改。

*访问级别*：`List`。

*资源类型*：[db](iam-admin-resources.md#neptune-db-resource)（必需）。

## RDS: 故障切换 DBCluster
<a name="neptune-iam-admin-actions-FailoverDBCluster"></a>

`FailoverDBCluster` 强制数据库集群失效转移。

*访问级别*：`Write`。

*资源类型：*[cluster](iam-admin-resources.md#neptune-cluster-resource)（必需）。

## rds: ListTagsForResource
<a name="neptune-iam-admin-actions-ListTagsForResource"></a>

`ListTagsForResource` 列出 Neptune 资源上的所有标签。

*访问级别*：`Read`。

*资源类型*：
+ [cluster-snapshot](iam-admin-resources.md#neptune-cluster-snapshot-resource)
+ [db](iam-admin-resources.md#neptune-db-resource)
+ [es](iam-admin-resources.md#neptune-es-resource)
+ [pg](iam-admin-resources.md#neptune-pg-resource)
+ [subgrp](iam-admin-resources.md#neptune-subgrp-resource)

## RDS: 修改 DBCluster
<a name="neptune-iam-admin-actions-ModifyDBCluster"></a>

`ModifyDBCluster`

修改 Neptune 数据库集群的设置。

*访问级别*：`Write`。

*相关操作*：`iam:PassRole`。

*资源类型*：
+ [cluster](iam-admin-resources.md#neptune-cluster-resource)（必需）。
+ [cluster-pg](iam-admin-resources.md#neptune-cluster-pg-resource)（必需）。

## RDS: 修改 DBCluster ParameterGroup
<a name="neptune-iam-admin-actions-ModifyDBClusterParameterGroup"></a>

`ModifyDBClusterParameterGroup` 修改数据库集群参数组的参数。

*访问级别*：`Write`。

*资源类型*：[cluster-pg](iam-admin-resources.md#neptune-cluster-pg-resource)（必需）。

## RDS: 修改 DBCluster SnapshotAttribute
<a name="neptune-iam-admin-actions-ModifyDBClusterSnapshotAttribute"></a>

`ModifyDBClusterSnapshotAttribute` 向手动数据库集群快照添加属性和值，或者从中删除属性和值。

*访问级别*：`Write`。

*资源类型*：[cluster-snapshot](iam-admin-resources.md#neptune-cluster-snapshot-resource)（必需）。

## RDS: 修改 DBInstance
<a name="neptune-iam-admin-actions-ModifyDBInstance"></a>

`ModifyDBInstance` 修改数据库实例的设置。

*访问级别*：`Write`。

*相关操作*：`iam:PassRole`。

*资源类型*：
+ [db](iam-admin-resources.md#neptune-db-resource)（必需）。
+ [pg](iam-admin-resources.md#neptune-pg-resource)（必需）。

## RDSDBParameter: 修改群组
<a name="neptune-iam-admin-actions-ModifyDBParameterGroup"></a>

`ModifyDBParameterGroup` 修改数据库参数组的参数。

*访问级别*：`Write`。

*资源类型*：[pg](iam-admin-resources.md#neptune-pg-resource)（必需）。

## RDSDBSubnet: 修改群组
<a name="neptune-iam-admin-actions-ModifyDBSubnetGroup"></a>

`ModifyDBSubnetGroup` 修改现有的数据库子网组。

*访问级别*：`Write`。

*资源类型*：[subgrp](iam-admin-resources.md#neptune-subgrp-resource)（必需）。

## rds: ModifyEventSubscription
<a name="neptune-iam-admin-actions-ModifyEventSubscription"></a>

`ModifyEventSubscription` 修改现有 Neptune 事件通知订阅。

*访问级别*：`Write`。

*资源类型*：[es](iam-admin-resources.md#neptune-es-resource)（必需）。

## RDS: 重启 DBInstance
<a name="neptune-iam-admin-actions-RebootDBInstance"></a>

`RebootDBInstance` 重启实例的数据库引擎服务。

*访问级别*：`Write`。

*资源类型*：[db](iam-admin-resources.md#neptune-db-resource)（必需）。

## rds: RemoveRoleFrom DBCluster
<a name="neptune-iam-admin-actions-RemoveRoleFromDBCluster"></a>

`RemoveRoleFromDBCluster`取消 AWS 身份和访问管理 (IAM) Access Management 角色与亚马逊 Neptune 数据库集群的关联。

*访问级别*：`Write`。

*相关操作*：`iam:PassRole`。

*资源类型：*[cluster](iam-admin-resources.md#neptune-cluster-resource)（必需）。

## rds: RemoveSourceIdentifierFromSubscription
<a name="neptune-iam-admin-actions-RemoveSourceIdentifierFromSubscription"></a>

`RemoveSourceIdentifierFromSubscription` 从现有 Neptune 事件通知订阅中移除源标识符。

*访问级别*：`Write`。

*资源类型*：[es](iam-admin-resources.md#neptune-es-resource)（必需）。

## rds: RemoveTagsFromResource
<a name="neptune-iam-admin-actions-RemoveTagsFromResource"></a>

`RemoveTagsFromResource`从 Neptune 资源中移除元数据标签。

*访问级别*：`Tagging`。

*资源类型*：
+ [cluster-snapshot](iam-admin-resources.md#neptune-cluster-snapshot-resource)
+ [db](iam-admin-resources.md#neptune-db-resource)
+ [es](iam-admin-resources.md#neptune-es-resource)
+ [pg](iam-admin-resources.md#neptune-pg-resource)
+ [subgrp](iam-admin-resources.md#neptune-subgrp-resource)

*条件键*：
+ [aws:RequestTag/*tag-key*](iam-admin-condition-keys.md#admin-aws_RequestTag)
+ [aws：TagKeys](iam-admin-condition-keys.md#admin-aws_TagKeys)

## RDS: 重置 DBCluster ParameterGroup
<a name="neptune-iam-admin-actions-ResetDBClusterParameterGroup"></a>

`ResetDBClusterParameterGroup` 将数据库集群参数组的参数修改为默认值。

*访问级别*：`Write`。

*资源类型*：[cluster-pg](iam-admin-resources.md#neptune-cluster-pg-resource)（必需）。

## RDSDBParameter: 重置组
<a name="neptune-iam-admin-actions-ResetDBParameterGroup"></a>

`ResetDBParameterGroup`将数据库参数组的参数修改为 engine/system 默认值。

*访问级别*：`Write`。

*资源类型*：[pg](iam-admin-resources.md#neptune-pg-resource)（必需）。

## RDS: 恢复 DBCluster FromSnapshot
<a name="neptune-iam-admin-actions-RestoreDBClusterFromSnapshot"></a>

`RestoreDBClusterFromSnapshot` 从数据库集群快照中创建新的数据库集群。

*访问级别*：`Write`。

*相关操作*：`iam:PassRole`。

*资源类型*：
+ [cluster](iam-admin-resources.md#neptune-cluster-resource)（必需）。
+ [cluster-snapshot](iam-admin-resources.md#neptune-cluster-snapshot-resource)（必需）。

*条件键*：
+ [aws:RequestTag/*tag-key*](iam-admin-condition-keys.md#admin-aws_RequestTag)
+ [aws：TagKeys](iam-admin-condition-keys.md#admin-aws_TagKeys)

## RDS: 恢复 DBCluster ToPointInTime
<a name="neptune-iam-admin-actions-RestoreDBClusterToPointInTime"></a>

`RestoreDBClusterToPointInTime` 将数据库集群还原到任意时间点。

*访问级别*：`Write`。

*相关操作*：`iam:PassRole`。

*资源类型*：
+ [cluster](iam-admin-resources.md#neptune-cluster-resource)（必需）。
+ [subgrp](iam-admin-resources.md#neptune-subgrp-resource)（必需）。

*条件键*：
+ [aws:RequestTag/*tag-key*](iam-admin-condition-keys.md#admin-aws_RequestTag)
+ [aws：TagKeys](iam-admin-condition-keys.md#admin-aws_TagKeys)

## RDS: 开始 DBCluster
<a name="neptune-iam-admin-actions-StartDBCluster"></a>

`StartDBCluster` 启动指定的数据库集群。

*访问级别*：`Write`。

*资源类型：*[cluster](iam-admin-resources.md#neptune-cluster-resource)（必需）。

## RDS: 停止 DBCluster
<a name="neptune-iam-admin-actions-StopDBCluster"></a>

`StopDBCluster` 停止指定的数据库集群。

*访问级别*：`Write`。

*资源类型：*[cluster](iam-admin-resources.md#neptune-cluster-resource)（必需）。

# 用于管理 Amazon Neptune 的 IAM 资源类型
<a name="iam-admin-resources"></a>

Neptune 支持下表中的资源类型，以用于 IAM 管理策略语句的 `Resource` 元素。有关 `Resource` 元素的更多信息，请参阅 [IAM JSON 策略元素：Resource](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements_resource.html)。

[Neptune 管理操作列表](neptune-iam-admin-actions.md)确定了可以使用每个操作指定的资源类型。资源类型还会决定您可以在策略中包含哪些条件键，如下表的最后一列所指定。

下表中的 `ARN` 列指定在引用该类型的资源时必须使用的 Amazon 资源名称 (ARN) 格式。前缀为 ` $ ` 的部分必须替换为您的方案的实际值。例如，如果在 ARN 中看到 `$user-name`，您必须将该字符串替换为实际 IAM 用户的名称或包含 IAM 用户名的策略变量。有关的更多信息 ARNs，请参阅 [IAM ARNs](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_identifiers.html#identifiers-arns) 和[ARNs 在 Amazon Neptune 中与管理员合作](tagging-arns.md)。

` Condition Keys `列指定条件上下文键，只有在 IAM policy 语句中同时包含该资源和兼容的支持操作时，才能在该语句中包含这些键。


****  

| 资源类型 | ARN | 条件键 | 
| --- | --- | --- | 
|  `cluster` （数据库集群）  | arn:partition:rds:region:account-id:cluster:instance-name |  [aws:ResourceTag/*tag-key*](iam-admin-condition-keys.md#admin-aws_ResourceTag) [rds: cluster-tag/ *tag-key*](iam-admin-condition-keys.md#admin-rds_cluster-tag)  | 
|  `cluster-pg` （数据库集群参数组）  | arn:partition:rds:region:account-id:cluster-pg:neptune-DBClusterParameterGroupName |  [aws:ResourceTag/*tag-key*](iam-admin-condition-keys.md#admin-aws_ResourceTag)  | 
|  `cluster-snapshot` （数据库集群快照）  | arn:partition:rds:region:account-id:cluster-snapshot:neptune-DBClusterSnapshotName |  [aws:ResourceTag/*tag-key*](iam-admin-condition-keys.md#admin-aws_ResourceTag) [rds:cluster-snapshot-tag/*tag-key*](iam-admin-condition-keys.md#admin-rds_cluster-snapshot-tag)  | 
|  `db` （数据库实例）  | arn:partition:rds:region:account-id:db:neptune-DbInstanceName |  [aws:ResourceTag/*tag-key*](iam-admin-condition-keys.md#admin-aws_ResourceTag) [rds: DatabaseClass](iam-admin-condition-keys.md#admin-rds_DatabaseClass) [rds: DatabaseEngine](iam-admin-condition-keys.md#admin-rds_DatabaseEngine) [rds: db-tag/ *tag-key*](iam-admin-condition-keys.md#admin-rds_db-tag)  | 
|  `es` （事件订阅）  | arn:partition:rds:region:account-id:es:neptune-CustSubscriptionId  |  [aws:ResourceTag/*tag-key*](iam-admin-condition-keys.md#admin-aws_ResourceTag) [rds: es-tag/ *tag-key*](iam-admin-condition-keys.md#admin-rds_es-tag)  | 
|  `pg` （数据库参数组）  | arn:partition:rds:region:account-id:pg:neptune-ParameterGroupName |  [aws:ResourceTag/*tag-key*](iam-admin-condition-keys.md#admin-aws_ResourceTag) [rds: pg-tag/ *tag-key*](iam-admin-condition-keys.md#admin-rds_pg-tag)  | 
|  `subgrp` （数据库子网组）  | arn:partition:rds:region:account-id:subgrp:neptune-DBSubnetGroupName\$1 |  [aws:ResourceTag/*tag-key*](iam-admin-condition-keys.md#admin-aws_ResourceTag) [rds: subgrp-tag/ *tag-key*](iam-admin-condition-keys.md#admin-rds_subgrp-tag)  | 

# 用于管理 Amazon Neptune 的 IAM 条件键
<a name="iam-admin-condition-keys"></a>

[使用条件键](security-iam-access-manage.md#iam-using-condition-keys)，您可以在 IAM policy 语句中指定条件，这样该语句仅在条件为 true 时才生效。您可以在 Neptune 管理策略语句中使用的条件键分为以下几类：
+ [全局条件键](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html) — 这些条件键由定义 AWS ，供一般 AWS 服务使用。大多数可用于 Neptune 管理策略语句中。
+ [管理资源属性条件键](#iam-rds-property-condition-keys) - [下面](#iam-rds-property-condition-keys)列出的这些键基于管理资源的属性。
+ [基于标签的访问条件键](#iam-rds-tag-based-condition-keys) - [下面](#iam-rds-tag-based-condition-keys)列出的这些键基于附加到管理资源的 [AWS 标签](https://docs.aws.amazon.com/general/latest/gr/aws_tagging.html)。

## Neptune 管理资源属性条件键
<a name="iam-rds-property-condition-keys"></a>


| 条件键 | 描述 | Type | 
| --- | --- | --- | 
| rds:DatabaseClass | 按数据库实例类的类型筛选访问。 | 字符串 | 
| rds:DatabaseEngine | 按数据库引擎筛选访问。有关可能的值，请参阅 Create DBInstance API 中的引擎参数 | 字符串 | 
| rds:DatabaseName | 按数据库实例上的数据库的用户定义名称筛选访问 | 字符串 | 
| rds:EndpointType | 按终端节点类型筛选访问。它是以下内容之一：READER、WRITER、CUSTOM | 字符串 | 
| rds:Vpc | 指定数据库实例是否在 Amazon Virtual Private Cloud (Amazon VPC) 中运行的值筛选访问。要指示数据库实例在 Amazon VPC 中运行，请指定 true。 | 布尔值 | 

## 基于管理标签的条件键
<a name="iam-rds-tag-based-condition-keys"></a>

Amazon Neptune 支持在 IAM policy 中使用自定义标签指定条件，以通过 [管理 API 参考](api.md) 控制对 Neptune 的访问。

例如，如果您向数据库实例添加一个名为 `environment` 的标签，其值为 `beta`、`staging`、和 `production` 等，则可以创建一个策略，以根据该标签的值限制对实例的访问。

**重要**  
如果您使用标签管理对 Neptune 资源的访问，请保护对于标签的访问。您可通过为 `AddTagsToResource` 和 `RemoveTagsFromResource` 操作创建策略来限制对标签的访问。  
例如，您可以使用以下策略拒绝用户为所有资源添加或删除标签。然后，您可以创建策略来允许特定用户添加或删除标签。  

****  

```
{ "Version":"2012-10-17",		 	 	 
  "Statement":[
    { "Sid": "DenyTagUpdates",
      "Effect": "Deny",
      "Action": [
        "rds:AddTagsToResource",
        "rds:RemoveTagsFromResource"
      ],
      "Resource":"*"
    }
  ]
}
```

以下基于标签的条件键仅适用于管理策略语句中的管理资源。


**基于标签的管理条件键**  

| 条件键 | 描述 | Type | 
| --- | --- | --- | 
|   [https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-requesttag](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-requesttag)  | 根据在请求中是否具有标签键/值对来筛选访问。 | 字符串 | 
|   [https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-resourcetag](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-resourcetag)  | 根据附加到资源的标签键/值对筛选访问。 | 字符串 | 
|   [https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keyss](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keyss)  | 根据在请求中是否具有标签键来筛选访问。 | 字符串 | 
| rds:cluster-pg-tag/\$1\$1TagKey\$1 | 按附加到数据库集群参数组的标签筛选访问。 | 字符串 | 
| rds:cluster-snapshot-tag/\$1\$1TagKey\$1 | 按附加到数据库集群快照的标签筛选访问。 | 字符串 | 
| rds:cluster-tag/\$1\$1TagKey\$1 | 按附加到数据库集群的标签筛选访问。 | 字符串 | 
| rds:db-tag/\$1\$1TagKey\$1 | 按附加到数据库实例的标签筛选访问。 | 字符串 | 
| rds:es-tag/\$1\$1TagKey\$1 | 按附加到事件订阅的标签筛选访问。 | 字符串 | 
| rds:pg-tag/\$1\$1TagKey\$1 | 按附加到数据库参数组的标签筛选访问。 | 字符串 | 
| rds:req-tag/\$1\$1TagKey\$1 | 按可用于对资源进行标记的一组标签键和值筛选访问。 | 字符串 | 
| rds:secgrp-tag/\$1\$1TagKey\$1 | 按附加到数据库安全组的标签筛选访问。 | 字符串 | 
| rds:snapshot-tag/\$1\$1TagKey\$1 | 按附加到数据库快照的标签筛选访问。 | 字符串 | 
| rds:subgrp-tag/\$1\$1TagKey\$1 | 按附加到数据库子网组的标签筛选访问 | 字符串 | 

# 创建适用于 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": "*"
        }
    ]
}
```

------

## 基于标签的管理策略示例
<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:ResourceTag` 对 Neptune 资源进行完全访问
<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"
        }
      }
    }
  ]
}
```

------

# 创建自定义 IAM 策略语句来访问 Amazon Neptune 中的数据
<a name="iam-data-access-policies"></a>

Neptune 数据访问策略语句使用[数据访问操作](iam-dp-actions.md)、[资源](iam-data-resources.md)和[条件键](iam-data-condition-keys.md#iam-neptune-condition-keys)，所有这些都以 `neptune-db:` 前缀开头。

**Topics**
+ [在 Neptune 数据访问策略语句中使用查询操作](#iam-data-query-actions)
+ [用于在 Amazon Neptune 中访问数据的 IAM 操作](iam-dp-actions.md)
+ [用于在 Amazon Neptune 中访问数据的 IAM 资源类型](iam-data-resources.md)
+ [用于在 Amazon Neptune 中访问数据的 IAM 条件键](iam-data-condition-keys.md)
+ [在 Amazon Neptune 中创建 IAM 数据访问策略](iam-data-access-examples.md)

## 在 Neptune 数据访问策略语句中使用查询操作
<a name="iam-data-query-actions"></a>

在数据访问策略语句中可以使用三个 Neptune 查询操作，即 `ReadDataViaQuery`、`WriteDataViaQuery` 和 `DeleteDataViaQuery`。特定的查询可能需要权限才能执行其中多个操作，而且可能并不总是很清楚必须允许这些操作的哪种组合才能运行查询。

在运行查询之前，Neptune 会确定运行每个查询步骤所需的权限，并将这些权限组合成查询所需的完整权限集。请注意，这组完整的权限包括查询*可能*执行的所有操作，这些操作不一定是查询在数据上运行时实际执行的一组操作。

这意味着，要允许给定的查询运行，必须针对该查询可能执行的每个操作提供权限，无论它是否实际执行这些操作。

以下是一些示例 Gremlin 查询，其中对此进行了更详细的解释：
+ 

  ```
  g.V().count()
  ```

  `g.V()` 和 `count()` 只需要读取权限，因此整个查询只需要 `ReadDataViaQuery` 访问权限。
+ 

  ```
  g.addV()
  ```

  在插入新顶点之前，`addV()` 需要检查具有给定 ID 的顶点是否存在。这意味着它同时需要 `ReadDataViaQuery` 和 `WriteDataViaQuery` 访问权限。
+ 

  ```
  g.V('1').as('a').out('created').addE('createdBy').to('a')
  ```

  `g.V('1').as('a')` 和 `out('created')` 只需要读取权限，但 `addE().from('a')` 同时需要读取和写入权限，因为在添加新边缘之前，`addE()` 需要读取 `from` 和 `to` 顶点并检查是否已经存在具有相同 ID 的边缘。因此，整个查询同时需要 `ReadDataViaQuery` 和 `WriteDataViaQuery` 访问权限。
+ 

  ```
  g.V().drop()
  ```

  `g.V()` 只需要读取访问权限。`drop()` 同时需要读取和删除访问权限，因为它需要在删除顶点或边缘之前读取顶点或边缘，因此查询总体同时需要 `ReadDataViaQuery` 和 `DeleteDataViaQuery` 访问权限。
+ 

  ```
  g.V('1').property(single, 'key1', 'value1')
  ```

  `g.V('1')` 只需要读取访问权限，但 `property(single, 'key1', 'value1')` 需要读取、写入和删除访问权限。在这里，如果键和值尚不存在于顶点中，则 `property()` 步骤会插入它们，但如果它们已经存在，则该步骤会删除现有的属性值并在其位置插入一个新值。因此，整个查询需要 `ReadDataViaQuery`、`WriteDataViaQuery` 和 `DeleteDataViaQuery` 访问权限。

  任何包含 `property()` 步骤的查询都需要 `ReadDataViaQuery`、`WriteDataViaQuery` 和 `DeleteDataViaQuery` 权限。

下面是一些 openCypher 示例：
+ 

  ```
  MATCH (n)
  RETURN n
  ```

  此查询读取数据库中的所有节点并返回它们，这只需要 `ReadDataViaQuery` 访问权限即可。
+ 

  ```
  MATCH (n:Person)
  SET n.dept = 'AWS'
  ```

  此查询需要 `ReadDataViaQuery`、`WriteDataViaQuery` 和 `DeleteDataViaQuery` 访问权限。它会读取所有标签为“Person”的节点，然后向它们添加一个带有键 `dept` 和值 `AWS` 的新属性，或者如果该 `dept` 属性已经存在，则删除旧值并改为插入 `AWS`。此外，如果要设置的值为 `null`，`SET` 会完全删除该属性。

   由于 `SET` 子句在某些情况下可能需要删除现有值，因此它**始终**需要 `DeleteDataViaQuery` 权限以及 `ReadDataViaQuery` 和 `WriteDataViaQuery` 权限。
+ 

  ```
  MATCH (n:Person)
  DETACH DELETE n
  ```

  此查询需要 `ReadDataViaQuery` 和 `DeleteDataViaQuery` 权限。它会找到所有带有标签 `Person` 的节点，并将它们以及连接到这些节点的边缘和任何关联的标签和属性一起删除。
+ 

  ```
  MERGE (n:Person {name: 'John'})-[:knows]->(:Person {name: 'Peter'})
  RETURN n
  ```

  此查询需要 `ReadDataViaQuery` 和 `WriteDataViaQuery` 权限。`MERGE` 子句要么匹配指定的模式，要么创建该模式。因为当模式不匹配时，可能会发生写入操作，因此需要写入权限以及读取权限。

# 用于在 Amazon Neptune 中访问数据的 IAM 操作
<a name="iam-dp-actions"></a>

请注意，Neptune 数据访问操作具有前缀 `neptune-db:`，而 Neptune 中的管理操作具有前缀 `rds:`。

IAM 中的数据资源的 Amazon 资源名称 (ARN) 与创建时分配给集群的 ARN 不同。您必须按照[指定数据资源](iam-data-resources.md)中所示构造 ARN。此类数据资源 ARNs可以使用通配符来包含多个资源。

数据访问策略声明还可以包含 ne [ptune-db: QueryLanguage](iam-data-condition-keys.md#iam-neptune-condition-keys) 条件键，以限制按查询语言进行访问。

从[版本：1.2.0.0（2022 年 7 月 21 日）](engine-releases-1.2.0.0.md) 开始，Neptune 支持将权限限制为一个或多个[特定的 Neptune 操作](https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazonneptune.html)。这提供了比以前更精细的访问控制。

**重要**  
对 IAM policy 的更改将需要长达 10 分钟才能应用于指定的 Neptune 资源。
应用于 Neptune 数据库集群的 IAM policy 将应用于集群中的所有实例。

## *基于查询的数据访问操作*
<a name="iam-dp-actions-queries"></a>

**注意**  
运行给定查询需要什么权限并不总是显而易见的，因为根据查询处理的数据，查询可能会采取多个操作。请参阅[使用查询操作](iam-data-access-policies.md#iam-data-query-actions)了解更多信息。

## `neptune-db:ReadDataViaQuery`
<a name="readdataviaquery"></a>

`ReadDataViaQuery` 允许用户通过提交查询从 Neptune 数据库中读取数据。

*操作组：*只读、读写。

*操作上下文键*：`neptune-db:QueryLanguage`。

*所需资源*：数据库。

## `neptune-db:WriteDataViaQuery`
<a name="writedataviaquery"></a>

`WriteDataViaQuery` 允许用户通过提交查询将数据写入 Neptune 数据库。

*操作组*：读写。

*操作上下文键*：`neptune-db:QueryLanguage`。

*所需资源*：数据库。

## `neptune-db:DeleteDataViaQuery`
<a name="deletedataviaquery"></a>

`DeleteDataViaQuery` 允许用户通过提交查询从 Neptune 数据库中删除数据。

*操作组*：读写。

*操作上下文键*：`neptune-db:QueryLanguage`。

*所需资源*：数据库。

## `neptune-db:GetQueryStatus`
<a name="getquerystatus"></a>

`GetQueryStatus` 允许用户检查所有活动查询的状态。

*操作组：*只读、读写。

*操作上下文键*：`neptune-db:QueryLanguage`。

*所需资源*：数据库。

## `neptune-db:GetStreamRecords`
<a name="getstreamrecords"></a>

`GetStreamRecords` 允许用户从 Neptune 提取流记录。

*操作组*：读写。

*操作上下文键*：`neptune-db:QueryLanguage`。

*所需资源*：数据库。

## `neptune-db:CancelQuery`
<a name="cancelquery"></a>

`CancelQuery` 允许用户取消查询。

*操作组*：读写。

*所需资源*：数据库。

## *常规数据访问操作*
<a name="iam-dp-actions-general"></a>

## `neptune-db:GetEngineStatus`
<a name="getenginestatus"></a>

`GetEngineStatus` 允许用户检查 Neptune 引擎的状态。

*操作组：*只读、读写。

*所需资源*：数据库。

## `neptune-db:GetStatisticsStatus`
<a name="getstatisticsstatus"></a>

`GetStatisticsStatus` 允许用户检查为数据库收集的统计数据的状态。

*操作组：*只读、读写。

*所需资源*：数据库。

## `neptune-db:GetGraphSummary`
<a name="getgraphsummary"></a>

`GetGraphSummary` 图形摘要 API 允许您检索图形的只读摘要。

*操作组：*只读、读写。

*所需资源*：数据库。

## `neptune-db:ManageStatistics`
<a name="managestatistics"></a>

`ManageStatistics` 允许用户管理数据库的统计数据收集。

*操作组*：读写。

*所需资源*：数据库。

## `neptune-db:DeleteStatistics`
<a name="deletestatistics"></a>

`DeleteStatistics` 允许用户删除数据库中的所有统计数据。

*操作组*：读写。

*所需资源*：数据库。

## `neptune-db:ResetDatabase`
<a name="resetdatabase"></a>

`ResetDatabase` 允许用户获取重置所需的令牌，并重置 Neptune 数据库。

*操作组*：读写。

*所需资源*：数据库。

## *批量加载程序数据访问操作*
<a name="iam-dp-actions-loader"></a>

## `neptune-db:StartLoaderJob`
<a name="startloaderjob"></a>

`StartLoaderJob` 允许用户启动批量加载程序任务。

*操作组*：读写。

*所需资源*：数据库。

## `neptune-db:GetLoaderJobStatus`
<a name="getloaderjobstatus"></a>

`GetLoaderJobStatus` 允许用户检查批量加载程序任务的状态。

*操作组：*只读、读写。

*所需资源*：数据库。

## `neptune-db:ListLoaderJobs`
<a name="listloaderjobs"></a>

`ListLoaderJobs` 允许用户列出所有批量加载程序任务。

*操作组*：仅列出、只读、读写。

*所需资源*：数据库。

## `neptune-db:CancelLoaderJob`
<a name="cancelloaderjob"></a>

`CancelLoaderJob` 允许用户取消加载程序任务。

*操作组*：读写。

*所需资源*：数据库。

## *机器学习数据访问操作*
<a name="iam-dp-actions-ml"></a>

## `neptune-db:StartMLDataProcessingJob`
<a name="startmldataprocessingjob"></a>

`StartMLDataProcessingJob` 允许用户启动 Neptune ML 数据处理任务。

*操作组*：读写。

*所需资源*：数据库。

## `neptune-db:StartMLModelTrainingJob`
<a name="startmlmodeltrainingjob"></a>

`StartMLModelTrainingJob` 允许用户启动 ML 模型训练任务。

*操作组*：读写。

*所需资源*：数据库。

## `neptune-db:StartMLModelTransformJob`
<a name="startmlmodeltransformjob"></a>

`StartMLModelTransformJob` 允许用户启动 ML 模型转换任务。

*操作组*：读写。

*所需资源*：数据库。

## `neptune-db:CreateMLEndpoint`
<a name="createmlendpoint"></a>

`CreateMLEndpoint` 允许用户创建 Neptune 机器学习端点。

*操作组*：读写。

*所需资源*：数据库。

## `neptune-db:GetMLDataProcessingJobStatus`
<a name="getmldataprocessingjobstatus"></a>

`GetMLDataProcessingJobStatus` 允许用户检查 Neptune ML 数据处理任务的状态。

*操作组：*只读、读写。

*所需资源*：数据库。

## `neptune-db:GetMLModelTrainingJobStatus`
<a name="getmlmodeltrainingjobstatus"></a>

`GetMLModelTrainingJobStatus` 允许用户检查 Neptune ML 模型训练任务的状态。

*操作组：*只读、读写。

*所需资源*：数据库。

## `neptune-db:GetMLModelTransformJobStatus`
<a name="getmlmodeltransformjobstatus"></a>

`GetMLModelTransformJobStatus` 允许用户检查 Neptune ML 模型转换任务的状态。

*操作组：*只读、读写。

*所需资源*：数据库。

## `neptune-db:GetMLEndpointStatus`
<a name="getmlendpointstatus"></a>

`GetMLEndpointStatus` 允许用户检查 Neptune ML 端点的状态。

*操作组：*只读、读写。

*所需资源*：数据库。

## `neptune-db:ListMLDataProcessingJobs`
<a name="listmldataprocessingjobs"></a>

`ListMLDataProcessingJobs` 允许用户列出所有 Neptune ML 数据处理任务。

*操作组*：仅列出、只读、读写。

*所需资源*：数据库。

## `neptune-db:ListMLModelTrainingJobs`
<a name="listmlmodeltrainingjobs"></a>

`ListMLModelTrainingJobs` 允许用户列出所有 Neptune ML 模型训练任务。

*操作组*：仅列出、只读、读写。

*所需资源*：数据库。

## `neptune-db:ListMLModelTransformJobs`
<a name="listmlmodeltransformjobs"></a>

`ListMLModelTransformJobs` 允许用户列出所有 ML 模型转换任务。

*操作组*：仅列出、只读、读写。

*所需资源*：数据库。

## `neptune-db:ListMLEndpoints`
<a name="listmlendpoints"></a>

`ListMLEndpoints` 允许用户列出所有 Neptune ML 端点。

*操作组*：仅列出、只读、读写。

*所需资源*：数据库。

## `neptune-db:CancelMLDataProcessingJob`
<a name="cancelmldataprocessingjob"></a>

`CancelMLDataProcessingJob` 允许用户取消 Neptune ML 数据处理任务。

*操作组*：读写。

*所需资源*：数据库。

## `neptune-db:CancelMLModelTrainingJob`
<a name="cancelmlmodeltrainingjob"></a>

`CancelMLModelTrainingJob` 允许用户取消 Neptune ML 模型训练任务。

*操作组*：读写。

*所需资源*：数据库。

## `neptune-db:CancelMLModelTransformJob`
<a name="cancelmlmodeltransformjob"></a>

`CancelMLModelTransformJob` 允许用户取消 Neptune ML 模型转换任务。

*操作组*：读写。

*所需资源*：数据库。

## `neptune-db:DeleteMLEndpoint`
<a name="deletemlendpoint"></a>

`DeleteMLEndpoint` 允许用户删除 Neptune 机器学习端点。

*操作组*：读写。

*所需资源*：数据库。

# 用于在 Amazon Neptune 中访问数据的 IAM 资源类型
<a name="iam-data-resources"></a>

数据资源（如数据操作）具有 `neptune-db:` 前缀。

在 Neptune 数据访问策略中，您可以按以下格式在 ARN 中指定要授予访问权限的数据库集群：

```
arn:aws:neptune-db:region:account-id:cluster-resource-id/*
```

这样的资源 ARN 包含以下部分：
+ `region`是 Amazon Neptune 数据库集群的 AWS 区域。
+ `account-id` 是数据库集群的 AWS 账号。
+ `cluster-resource-id` 是数据库集群的资源 ID。
**重要**  
`cluster-resource-id` 不同于集群标识符。要在 Neptune 中查找群集资源 ID AWS 管理控制台，请在 “**配置**” 部分中查找相关数据库集群。

# 用于在 Amazon Neptune 中访问数据的 IAM 条件键
<a name="iam-data-condition-keys"></a>

[使用条件键](security-iam-access-manage.md#iam-using-condition-keys)，您可以在 IAM policy 语句中指定条件，这样该语句仅在条件为 true 时才生效。

您可以在 Neptune 数据访问策略语句中使用的条件键分为以下几类：
+ [全局条件键](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html) [-下面列出了 Neptune 在数据访问策略声明中支持的 AWS 全局条件键的子集。](#iam-data-global-condition-keys)
+ [特定于服务的条件键](#iam-neptune-condition-keys) – 这些键由 Neptune 定义，专门用于数据访问策略语句中。目前只有一个 ne [ptune-db: QueryLanguage](#neptune-db-query-language)，它只有在使用特定的查询语言时才授予访问权限。

## AWS Neptune 在数据访问策略声明中支持的全局条件上下文密钥
<a name="iam-data-global-condition-keys"></a>

下表列出了 Amazon Neptune 支持在数据访问策略语句中使用的 [AWS 全局条件上下文键](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html)的子集：


**可在数据访问策略语句中使用的全局条件键**  

| 条件键 | 描述 | Type | 
| --- | --- | --- | 
| [https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-currenttime](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-currenttime) | 按请求的当前日期和时间筛选访问。 | String | 
| [https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-epochtime](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-epochtime) | 按请求的日期和时间（以 UNIX 纪元值表示）筛选访问。 | Numeric | 
| [https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-principalaccount](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-principalaccount) | 按发出请求的主体所属的账户筛选访问。 | String | 
| [https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-principalarn](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-principalarn) | 按发出请求的主体的 ARN 筛选访问。 | String | 
| [https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-principalisawsservice](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-principalisawsservice) | 仅当呼叫由 AWS 服务主体直接拨打时才允许访问。 | Boolean | 
| [https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-principalorgid](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-principalorgid) | 根据请求委托人所属的 Organizations 中的 AWS 组织标识符筛选访问权限。 | String | 
| [https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-principalorgpaths](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-principalorgpaths) | 按 AWS Organizations 路径筛选提出请求的委托人的访问权限。 | String | 
| [https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-principaltag](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-principaltag) | 按附加到发出请求的主体的标签筛选访问。 | String | 
| [https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-principaltype](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-principaltype) | 按发出请求的主体的类型筛选访问。 | String | 
| [https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-requestedregion](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-requestedregion) | 按请求中调用的 AWS 区域筛选访问权限。 | String | 
| [https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-securetransport](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-securetransport) | 仅当使用 SSL 发送请求时才允许访问。 | Boolean | 
| [https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-sourceip](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-sourceip) | 按请求者的 IP 地址筛选访问。 | String | 
| [https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-tokenissuetime](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-tokenissuetime) | 按颁发临时安全凭证的日期和时间筛选访问。 | String | 
| [https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-useragent](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-useragent) | 按请求者的客户端应用程序筛选访问。 | String | 
| [https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-userid](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-userid) | 按请求者的主体标识符筛选访问。 | String | 
| [https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-viaawsservice](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-viaawsservice) | 仅当 AWS 服务代表您提出请求时才允许访问。 | Boolean | 

## Neptune 特定于服务的条件键
<a name="iam-neptune-condition-keys"></a>

Neptune 针对 IAM policy 支持以下特定于服务的条件键：


**Neptune 特定于服务的条件键**  

| 条件键 | 描述 | Type | 
| --- | --- | --- | 
| neptune-db:QueryLanguage |  按所使用的查询语言筛选数据访问权限。 有效值包括 `Gremlin`、`OpenCypher` 和 `Sparql`。 支持的操作为 `ReadDataViaQuery`、`WriteDataViaQuery`、`DeleteDataViaQuery`、`GetQueryStatus` 和 `CancelQuery`。  | String | 

# 在 Amazon Neptune 中创建 IAM 数据访问策略
<a name="iam-data-access-examples"></a>

[以下示例展示了如何创建自定义 IAM 策略，这些策略使用 Neptune 引擎发行版 1.2.0.0 中引入的数据平面 APIs 和操作的精细访问控制。](engine-releases-1.2.0.0.md)

## 策略示例：允许不受限制地访问 Neptune 数据库集群中的数据
<a name="iam-auth-data-policy-example-general"></a>

以下示例策略允许 IAM 用户使用 IAM 数据库身份验证连接到 Neptune 数据库集群，并使用“`*`”字符匹配所有可用的操作。

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

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Action": "neptune-db:*",
      "Resource": "arn:aws:neptune-db:us-east-1:123456789012:cluster-ABCD1234EFGH5678IJKL90MNOP/*"
    }
  ]
}
```

------

以上示例包含采用特定于 Neptune IAM 身份验证的格式的资源 ARN。要构造 ARN，请参阅[指定数据资源](iam-data-resources.md)。请注意，用于 IAM 授权 `Resource` 的 ARN 与创建时分配给集群的 ARN 不同。

## 允许对 Neptune 数据库集群进行只读访问的策略示例
<a name="iam-auth-data-policy-example-read-only"></a>

以下策略授予对 Neptune 数据库集群中数据的完全只读访问权限：

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

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement":[
    {
      "Effect": "Allow",
      "Action": [
        "neptune-db:Read*",
        "neptune-db:Get*",
        "neptune-db:List*"
      ],
      "Resource": "arn:aws:neptune-db:us-east-1:123456789012:cluster-ABCD1234EFGH5678IJKL90MNOP/*"
    }
  ]
}
```

------

## 策略示例：拒绝对 Neptune 数据库集群的所有访问权限
<a name="iam-auth-data-policy-example-deny"></a>

默认 IAM 操作是拒绝对数据库集群的访问，除非授予 `Allow` *效果*。但是，以下策略拒绝特定 AWS 账户和区域对数据库集群的所有访问权限，然后优先于任何`Allow`效果。

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

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Deny",
      "Action": "neptune-db:*",
      "Resource": "arn:aws:neptune-db:us-east-1:123456789012:cluster-ABCD1234EFGH5678IJKL90MNOP/*"
    }
  ]
}
```

------

## 策略示例：通过查询授予读取访问权限
<a name="iam-auth-data-policy-example-read-query"></a>

以下策略仅授予使用查询从 Neptune 数据库集群读取数据的权限：

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

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Action": "neptune-db:ReadDataViaQuery",
      "Resource": "arn:aws:neptune-db:us-east-1:123456789012:cluster-ABCD1234EFGH5678IJKL90MNOP/*"
    }
  ]
}
```

------

## 仅允许 Gremlin 查询的策略示例
<a name="iam-auth-data-policy-example-gremlin-only"></a>

以下策略使用 `neptune-db:QueryLanguage` 条件键授予仅使用 Gremlin 查询语言查询 Neptune 的权限：

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

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "neptune-db:ReadDataViaQuery",
        "neptune-db:WriteDataViaQuery",
        "neptune-db:DeleteDataViaQuery"
      ],
      "Resource": "*",
      "Condition": {
        "StringEquals": {
          "neptune-db:QueryLanguage": "Gremlin"
        }
      }
    }
  ]
}
```

------

## 策略示例：允许除 Neptune ML 模型管理之外的所有访问权限
<a name="iam-auth-data-policy-example-all-but-ml"></a>

以下策略授予对 Neptune 图形操作的完全访问权限，但 Neptune ML 模型管理特征除外：

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

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement":[
    {
      "Effect": "Allow",
      "Action": [
        "neptune-db:CancelLoaderJob",
        "neptune-db:CancelQuery",
        "neptune-db:DeleteDataViaQuery",
        "neptune-db:DeleteStatistics",
        "neptune-db:GetEngineStatus",
        "neptune-db:GetLoaderJobStatus",
        "neptune-db:GetQueryStatus",
        "neptune-db:GetStatisticsStatus",
        "neptune-db:GetStreamRecords",
        "neptune-db:ListLoaderJobs",
        "neptune-db:ManageStatistics",
        "neptune-db:ReadDataViaQuery",
        "neptune-db:ResetDatabase",
        "neptune-db:StartLoaderJob",
        "neptune-db:WriteDataViaQuery"
      ],
      "Resource": "arn:aws:neptune-db:us-east-1:123456789012:cluster-ABCD1234EFGH5678IJKL90MNOP/*"
    }
  ]
}
```

------

## 允许访问 Neptune ML 模型管理的策略示例
<a name="iam-auth-data-policy-example-ml"></a>

此策略授予对 Neptune ML 模型管理特征的访问权限：

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

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement":[
    {
      "Effect": "Allow",
      "Action": [
        "neptune-db:CancelMLDataProcessingJob",
        "neptune-db:CancelMLModelTrainingJob",
        "neptune-db:CancelMLModelTransformJob",
        "neptune-db:CreateMLEndpoint",
        "neptune-db:DeleteMLEndpoint",
        "neptune-db:GetMLDataProcessingJobStatus",
        "neptune-db:GetMLEndpointStatus",
        "neptune-db:GetMLModelTrainingJobStatus",
        "neptune-db:GetMLModelTransformJobStatus",
        "neptune-db:ListMLDataProcessingJobs",
        "neptune-db:ListMLEndpoints",
        "neptune-db:ListMLModelTrainingJobs",
        "neptune-db:ListMLModelTransformJobs",
        "neptune-db:StartMLDataProcessingJob",
        "neptune-db:StartMLModelTrainingJob",
        "neptune-db:StartMLModelTransformJob"
      ],
      "Resource": "arn:aws:neptune-db:us-east-1:123456789012:cluster-ABCD1234EFGH5678IJKL90MNOP/*"
    }
  ]
}
```

------

## 策略示例：授予完全查询访问权限
<a name="iam-auth-data-policy-example-full-query"></a>

以下策略授予对 Neptune 图形查询操作的完全访问权限，但不授予对快速重置、流、批量加载程序、Neptune ML 模型管理等特征的完全访问权限：

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

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement":[
    {
      "Effect": "Allow",
      "Action": [
        "neptune-db:ReadDataViaQuery",
        "neptune-db:WriteDataViaQuery",
        "neptune-db:DeleteDataViaQuery",
        "neptune-db:GetEngineStatus",
        "neptune-db:GetQueryStatus",
        "neptune-db:CancelQuery"
      ],
      "Resource": "arn:aws:neptune-db:us-east-1:123456789012:cluster-ABCD1234EFGH5678IJKL90MNOP/*"
    }
  ]
}
```

------

## 策略示例：仅授予对 Gremlin 查询的完全访问权限
<a name="iam-auth-data-policy-example-full-gremlin-access"></a>

以下策略授予使用 Gremlin 查询语言对 Neptune 图形查询操作的完全访问权限，但不授予对其它语言的查询的完全访问权限，也不授予对快速重置、流、批量加载程序、Neptune ML 模型管理等特征的完全访问权限：

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

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement":[
    {
      "Effect": "Allow",
      "Action": [
        "neptune-db:ReadDataViaQuery",
        "neptune-db:WriteDataViaQuery",
        "neptune-db:DeleteDataViaQuery",
        "neptune-db:GetEngineStatus",
        "neptune-db:GetQueryStatus",
        "neptune-db:CancelQuery"
      ],
      "Resource": [
        "arn:aws:neptune-db:us-east-1:123456789012:cluster-ABCD1234EFGH5678IJKL90MNOP/*"
      ],
      "Condition": {
        "StringEquals": {
           "neptune-db:QueryLanguage":"Gremlin"
        }
      }
    }
  ]
}
```

------

## 策略示例：授予完全访问权限，但快速重置除外
<a name="iam-auth-data-policy-example-all-but-fast-reset"></a>

以下策略授予对 Neptune 数据库集群的完全访问权限，但使用快速重置除外：

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

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Action": "neptune-db:*",
      "Resource": "arn:aws:neptune-db:us-east-1:123456789012:cluster-ABCD1234EFGH5678IJKL90MNOP/*"
    },
    {
      "Effect": "Deny",
      "Action": "neptune-db:ResetDatabase",
      "Resource": "arn:aws:neptune-db:us-east-1:123456789012:cluster-ABCD1234EFGH5678IJKL90MNOP/*"
    }
  ]
}
```

------