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

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

管理 neptune.read () 的权限

所需的 IAM 策略

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

此外,您需要访问包含您的数据文件的 S3 存储桶的权限。Neptunes3Access 策略声明授予所需的 S3 权限:

  • s3:ListBucket:验证存储桶是否存在并列出内容所必需的。

  • s3:GetObject:需要访问指定对象,以便可以读取其内容以集成到 OpenCypher 查询中。

如果您的 S3 存储桶使用服务器端加密 Amazon 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" ] } } }

重要先决条件

这些权限和先决条件可确保将 S3 数据安全可靠地集成到 OpenCypher 查询中,同时保持适当的访问控制和数据保护措施。

  • IAM 身份验证:仅启用了 IAM 身份验证的 Neptune 集群支持此功能。有关如何创建和连接支持 IAM 身份验证的集群的详细说明,请参阅保护您的 Amazon Neptune 数据库

  • VPC 终端节点

    • Amazon S3 需要网关类型 VPC 端点,才能支持 Neptune 与 Amazon S3 进行通信。

    • 要在查询中使用自定义 Amazon KMS 加密,需要接口类型的 VPC 终端节点,以允许 Amazon KMS Neptune 与之通信。 Amazon KMS

    • 有关如何配置此终端节点的详细说明,请参阅创建 Amazon S3 VPC 终端节点