启用KMS加密后,无法使用粘胶作业将数据/对象放入S3存储桶

时间:2018-08-22 08:00:42

标签: amazon-web-services amazon-s3 amazon-iam aws-glue aws-kms

我有一个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存储桶之间传输数据。

2 个答案:

答案 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搜寻器,作业和开发终端节点解密数据。