我有一个Glue作业,可以从一个s3存储桶中获取数据,然后将其传输/放入另一个存储桶中。如果禁用KMS加密但未启用KMS加密,则我的工作正常。
错误:调用o79.pyWriteDynamicFrame时发生错误。拒绝访问(服务:Amazon S3;状态代码:403;错误代码:AccessDenied)
我也添加了此政策
{
"Effect": "Allow",
"Action": [
"kms:Decrypt"
],
"Resource": [
"arn:aws:kms:region:account-name:key/kms-encryptionkey"
]
}
建议我如何使用启用了KMS加密的Glue在s3存储桶之间传输数据。
答案 0 :(得分:1)
首先,您必须检查KMS key policy是否允许访问Glue所使用的IAM角色,因为仅IAM权限是不够的。您还可以在关键策略中包含IAM角色,这将是一种方法。
如果要通过IAM策略授予KMS权限,请添加以下API操作:
1>要对PutObject进行加密,请添加具有密钥ID的"kms:GenerateDataKey"
作为资源。
2>要获取GetObject(并对其解密),"kms:Decrypt"
(您拥有)
答案 1 :(得分:0)
在Glue作业中启用加密意味着您要使用KMS密钥写入对象,因此必须允许“ kms:Encrypt”操作。
如果仅您的input data is SSE encrypted with KMS,则需要执行“ kms:Decrypt”操作:
如果您打算访问使用SSE-KMS加密的Amazon S3源和目标,请附加一个策略,该策略允许AWS Glue搜寻器,作业和开发终端节点解密数据。