本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
授予 Gremlin Amazon S3 导出功能的访问权限
所需的 IAM 策略
-
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 权限。
-
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:在导出数据之前验证存储桶是否是公有的所必需的一项安全措施。
-
-
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 查询结果,同时保持适当的访问控制和数据保护措施。