AWS:SES 规则:S3 操作:选择启用了加密的存储桶时失败

AWS:SES 规则:S3 操作:选择启用了加密的存储桶时失败

我无法创建 SES 规则将电子邮件放入已启用加密的 S3 存储桶(在存储桶上)。

这可能只是因为某个地方需要另一个策略,或者我是否遗漏了有关 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 规则时,该策略仍然会导致相同的错误。但是,如果我删除所有“条件”,那么我可以成功保存它吗?

--

有关的:AWS SES 加密与 S3 存储桶加密

答案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 密钥。

相关内容