使用 CMK 的 SQS 加密

SQS Encryption using CMK

我正在尝试从加密的 SQS 中读取消息。对象落在 S3 存储桶上 -> 触发 S3 事件 -> 消息发送到 SQS -> SQS 触发 Lambda 进行处理。

我已经使用 AWS 管理的 CMK 完成了这项工作。但是,我无法使用 AWS 拥有的 CMK 使其正常工作,例如alias/aws/sqs

消息只是进入 messages in flight 并且不调用 Lambda 函数。

根据此处的 AWS 文档 https://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/sqs-server-side-encryption.html#sqs-encryption-what-does-sse-encrypt If you don't specify a custom CMK, Amazon SQS uses the AWS managed CMK for Amazon SQS。但是我们不能附加任何针对 AWS 拥有的 CMK 的策略,例如

{
   "Version": "2012-10-17",
      "Statement": [{
         "Effect": "Allow",
         "Principal": {
            "Service": "<<service>>.amazonaws.com"
         },
         "Action": [
            "kms:GenerateDataKey*",
            "kms:Decrypt"
         ],
         "Resource": "*"
       }]
}

我的问题是:是否可以在 SQS 上使用 AWS 拥有的 CMK 并让 Lambda 函数能够从该队列中读取?

上面 URL 中有一段叫做 Enable Compatibility between AWS Services Such as Amazon CloudWatch Events, Amazon S3, and Amazon SNS and Encrypted Queues

它提到将策略附加到 CMK。但是,有一个选项可以使用 alias/aws/sqs。我想知道我是否在这里遗漏了什么。

我与 AWS 交谈过,KMS AWS 托管密钥在这种情况下不起作用。我们无法更改 KMS AWS 托管密钥的密钥策略,因此对于以下场景是不可能的:S3 Bucket -> Trigger S3 Event -> Message sent to SQS -> SQS triggers Lambda to Process

我使用了 KMS AWS 客户托管密钥,它运行良好。