

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

# 管理 neptune.read () 的权限
<a name="access-graph-opencypher-21-extensions-s3-read-permissions"></a>

## 所需的 IAM 策略
<a name="access-graph-opencypher-21-extensions-s3-read-permissions-iam"></a>

要执行使用的 OpenCypher 查询`neptune.read()`，您必须具有访问您的 Neptune 数据库中数据的相应权限。只读查询需要执行`ReadDataViaQuery`操作。修改数据的查询`WriteDataViaQuery`需要插入或删除`DeleteDataViaQuery`。以下示例允许在指定集群上执行所有三个操作。

此外，您需要访问包含您的数据文件的 S3 存储桶的权限。Neptunes3Access 策略声明授予所需的 S3 权限：
+ **`s3:ListBucket`**：验证存储桶是否存在并列出内容所必需的。
+ **`s3:GetObject`**：需要访问指定对象，以便可以读取其内容以集成到 OpenCypher 查询中。

如果您的 S3 存储桶使用服务器端加密 AWS KMS，则还必须授予 KMS 权限。Neptunes3 KMSAccess 策略声明允许 Neptune 在访问加密的 S3 对象时解密数据并生成数据密钥。该条件将 KMS 操作限制为来自您所在地区的 S3 和 RDS 服务的请求。
+ **`kms:Decrypt`**：需要对加密对象进行解密，以便 Neptune 可以读取其数据。
+ **`kms:GenerateDataKey`**：用于检索要读取的对象的 S3 API 也是必需的。

```
{
  "Sid": "NeptuneQueryAccess",
  "Effect": "Allow",
  "Action": [
      "neptune-db:ReadDataViaQuery",
      "neptune-db:WriteDataViaQuery",
      "neptune-db:DeleteDataViaQuery"
  ],
  "Resource": "arn:aws:neptune-db:<REGION>:<AWS_ACCOUNT_ID>:<CLUSTER_RESOURCE_ID>/*"
},
{
  "Sid": "NeptuneS3Access",
  "Effect": "Allow",
  "Action": [
      "s3:ListBucket",
      "s3:GetObject"
  ],
  "Resource": [
      "arn:aws:s3:::neptune-read-bucket",
      "arn:aws:s3:::neptune-read-bucket/*"
  ]
},
{
  "Sid": "NeptuneS3KMSAccess",
  "Effect": "Allow",
  "Action": [
      "kms:Decrypt",
      "kms:GenerateDataKey"
  ],
  "Resource": "arn:aws:kms:<REGION>:<AWS_ACCOUNT_ID>:key/<KEY_ID>",
  "Condition": {
      "StringEquals": {
        "kms:ViaService": [
            "s3.<REGION>.amazonaws.com",
            "rds.<REGION>.amazonaws.com"
        ]
      }
  }
}
```

## 重要先决条件
<a name="access-graph-opencypher-21-extensions-s3-read-permissions-prerequisites"></a>

这些权限和先决条件可确保将 S3 数据安全可靠地集成到 OpenCypher 查询中，同时保持适当的访问控制和数据保护措施。
+ **IAM 身份验证**：仅启用了 IAM 身份验证的 Neptune 集群支持此功能。有关如何创建和连接支持 IAM 身份验证的[集群的详细说明，请参阅保护您的 Amazon Neptune 数据库](security.md)。
+ **VPC 终端节点**：
  + Amazon S3 需要网关类型 VPC 端点，才能支持 Neptune 与 Amazon S3 进行通信。
  + 要在查询中使用自定义 AWS KMS 加密，需要接口类型的 VPC 终端节点，以允许 AWS KMS Neptune 与之通信。 AWS KMS
  + 有关如何配置此终端节点的详细说明，请参阅[创建 Amazon S3 VPC 终端节点](bulk-load-tutorial-IAM.md)。