3

我创建了一个 S3 存储桶并将默认 SSE 配置为使用 KMS。

aws-cli只要我通过--sse aws:kms标志, 我就可以将文件上传到存储桶,例如: aws s3 cp --sse aws:kms test.txt s3://my-bucket

但我希望这可以在没有--sse aws:kms标志的情况下工作,因为这是默认加密,即它应该在没有指定加密标头时应用。

当我尝试没有标题时,它失败了: aws s3 cp test.txt s3://my-bucket upload failed: ./test.txt to s3://my-bucket/test.txt An error occurred (AccessDenied) when calling the PutObject operation: Access Denied

如果我从使用 AWS KMS 更改为 S3 托管的 SSE,它可以在没有任何--sse标志的情况下工作,但我需要使用 AWS KMS。我已尝试向发出请求的 IAM 用户添加以下策略,但仍然失败: { "Version": "2012-10-17", "Statement": [ { "Sid": "VisualEditor0", "Effect": "Allow", "Action": [ "s3:*", "kms:*" ], "Resource": [ "arn:aws:s3:::my-bucket", "arn:aws:s3:::my-bucket/*", "arn:aws:kms:eu-west-2:1111112222:key/aaaabbbb-1122-2222-4444-eeeeff3333" ] } ] }

为了让这个工作,我缺少什么?

4

1 回答 1

1

这仅是因为您的 KMS 密钥策略未指定您用于执行上传的用户/角色可以针对该密钥执行 GenerateDataKey、Encrypt 和 Decrypt。

将其添加到您的密钥策略(将您自己列为关键用户),它应该可以工作。

于 2019-03-06T23:15:11.973 回答