启用 KMS 加密后无法使用胶水作业将 data/object 放入 S3 存储桶

Not able to Put data/object into S3 bucket using Glue Job when KMS Encryption is enabled

我有一个 Glue 作业,它从一个 s3 存储桶中获取数据,然后 transfer/Put 将其放入另一个存储桶中。如果我禁用 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 存储桶之间传输数据。

在 Glue 作业中启用加密意味着您想使用 KMS 密钥写入对象,因此您必须允许 "kms:Encrypt" 操作。

需要操作 "kms:Decrypt" 如果只有您的 input data is SSE encrypted with KMS:

If you plan to access Amazon S3 sources and targets that are encrypted with SSE-KMS, then attach a policy that allows AWS Glue crawlers, jobs, and development endpoints to decrypt the data.

首先,您必须检查 KMS key policy 是否允许访问 Glue 使用的 IAM 角色,因为只有 IAM 权限是不够的。您还可以在密钥策略中包含 IAM 角色,这将是一种方法。

如果您想通过 IAM 策略授予 KMS 权限,请添加以下 API 操作:

1> 要 PutObject 并对其进行加密,添加 "kms:GenerateDataKey" 和密钥 ID 作为资源。

2> GetObject(并解密它),"kms:Decrypt"(你有)