授予 Gremlin Amazon S3 导出功能的访问权限 - Amazon Neptune
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

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

授予 Gremlin Amazon S3 导出功能的访问权限

所需的 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 权限。

  2. 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:在导出数据之前验证存储桶是否是公有的所必需的一项安全措施。

  3. Amazon KMS权限-可选。仅在使用自定义 Amazon 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:需要解密密密Amazon KMS钥以进行数据加密。

    • kms:GenerateDataKey:生成用于加密导出数据的数据密钥所必需的。

    • kms:DescribeKey:需要验证和检索有关Amazon KMS密钥的信息。

    • kms:ViaService:通过强制该角色不能将密钥用于任何其他Amazon服务来提高安全性。

重要先决条件
  • IAM 身份验证:必须在 Neptune 集群上启用,才能实施这些权限。

  • VPC 终端节点:

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

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

  • Amazon S3 存储桶配置:

    • 不得是公有的。

    • 应该有一条生命周期规则来清理未完成的分段上传。

    • 会自动加密新对象。

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