

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

# 授予 Gremlin Amazon S3 导出功能的访问权限
<a name="granting-access-gremlin"></a>

 **所需的 IAM 策略** 

1.  **Neptune 查询读取权限** 

   ```
   {
     "Sid": "NeptuneQueryRead",
     "Effect": "Allow",
     "Action": ["neptune-db:Read*"],
     "Resource": "arn:aws:neptune-db:us-east-1:123456789012:cluster-ABCD12/*"
   }
   ```

    **为什么需要它：**此权限支持从 Neptune 数据库读取数据，这是执行要导出的 Gremlin 查询所必需的。前面的示例支持读取查询。对于 read/write 查询，需要 write/delete 权限。

1.  **Amazon S3 导出权限** 

   ```
   {
     "Sid": "NeptuneS3Export",
     "Effect": "Allow",
     "Action": [
       "s3:ListBucket",
       "s3:PutObject",
       "s3:AbortMultipartUpload",
       "s3:GetBucketPublicAccessBlock"
     ],
     "Resource": "arn:aws:s3:::{{neptune-export-bucket}}/*"
   }
   ```

    **为什么需要每项权限：**
   +  `s3:ListBucket`：验证存储桶是否存在并列出内容所必需的。
   +  `s3:PutObject`：将导出数据写入 Amazon S3 所必需的。
   +  `s3:AbortMultipartUpload`：当导出失败时，清理未完成的分段上传所必需的。
   +  `s3:GetBucketPublicAccessBlock`：在导出数据之前验证存储桶是否是公有的所必需的一项安全措施。

1.  **AWS KMS权限-可选**。仅在使用自定义 AWS KMS 加密时才是必需的。

   ```
   {
     "Sid": "NeptuneS3ExportKMS",
     "Effect": "Allow",
     "Action": [
       "kms:Decrypt",
       "kms:GenerateDataKey",
       "kms:DescribeKey"
     ],
     "Resource": "arn:aws:kms:{{<REGION>}}:{{<AWS_ACCOUNT_ID>}}:key/mrk-48971c37"
       "Condition": {
       "StringEquals": {
         "kms:ViaService": [
           "s3.{{<REGION>}}.amazonaws.com",
           "rds.{{<REGION>}}.amazonaws.com"
         ]
       }
     }
   }
   ```

    **为什么需要每项权限：**
   +  `kms:Decrypt`：需要解密密密AWS KMS钥以进行数据加密。
   +  `kms:GenerateDataKey`：生成用于加密导出数据的数据密钥所必需的。
   +  `kms:DescribeKey`：需要验证和检索有关AWS KMS密钥的信息。
   +  `kms:ViaService`：通过强制该角色不能将密钥用于任何其他AWS服务来提高安全性。

**重要先决条件**
+  **IAM 身份验证：**必须在 Neptune 集群上启用，才能实施这些权限。
+  **VPC 终端节点：**
  +  Amazon S3 需要网关类型 VPC 端点，才能支持 Neptune 与 Amazon S3 进行通信。
  +  要在查询中使用自定义AWS KMS加密，需要接口类型的 VPC 终端节点，以允许 AWS KMS Neptune 与之通信。AWS KMS
+  **Amazon S3 存储桶配置：**
  +  不得是公有的。
  +  应该有一条生命周期规则来清理未完成的分段上传。
  +  会自动加密新对象。

 这些权限和先决条件可确保安全可靠地导出 Gremlin 查询结果，同时保持适当的访问控制和数据保护措施。