我无法创建 SES 规则将电子邮件放入已启用加密的 S3 存储桶(在存储桶上)。
- 创建了一个存储桶并启用了加密。
- 添加 SESPut 存储桶策略以允许 SES。https://docs.aws.amazon.com/ses/latest/DeveloperGuide/receiving-email-permissions.html
- 配置 SES S3 规则以将电子邮件放入所述存储桶,但在保存期间出现错误:“无法写入存储桶”
- 更改存储桶,删除加密
- SES 规则保存现已成功。
这可能只是因为某个地方需要另一个策略,或者我是否遗漏了有关 AWS 加密的某些信息,从而解释了上述步骤失败的原因以及为什么 SES 将客户端加密作为选项?
更新
我已向在存储桶的加密属性下配置的 KMS 密钥添加了一项策略(感谢 @shonkylinuxuser)(根据AWS 文档):
{
"Sid": "Allow SES to encrypt messages using this master key",
"Effect": "Allow",
"Principal": {"Service": "ses.amazonaws.com"},
"Action": [
"kms:Encrypt",
"kms:GenerateDataKey*"
],
"Resource": "*",
"Condition": {
"Null": {
"kms:EncryptionContext:aws:ses:rule-name": false,
"kms:EncryptionContext:aws:ses:message-id": false
},
"StringEquals": {"kms:EncryptionContext:aws:ses:source-account": "1234567890"}
}
}
EXCEPT:保存 SES 规则时,该策略仍然会导致相同的错误。但是,如果我删除所有“条件”,那么我可以成功保存它吗?
--
答案1
回复真的很晚,但刚刚遇到了同样的问题。我能够让 SSE-KMS 运行,并更新 KMS 密钥策略以允许 S3 访问 KMS。
{
"Condition": {
"StringEquals": {
"kms:ViaService": "s3.<your s3 bucket region>.amazonaws.com"
},
"StringLike": {
"kms:EncryptionContext:aws:s3:arn": "arn:aws:s3:::<your S3 bucket name>/*"
}
},
"Action": [
"kms:Encrypt",
"kms:Decrypt",
"kms:ReEncrypt*",
"kms:GenerateDataKey*",
"kms:DescribeKey"
],
"Resource": "*",
"Effect": "Allow",
"Principal": {
"Service": "ses.amazonaws.com"
},
"Sid": "SES Access to CMK for S3 SSE-KMS"
}
当您使用 SSE KMS 时,实际上是 S3 代表执行将操作放入 S3 存储桶的主体访问 KMS 密钥。因此,当 SES 尝试将密钥与 S3 一起使用时,此策略允许 S3 访问 KMS 密钥。