S3 上 SSE-C 加密对象的上传后处理:如何向 Lambda 函数提供密钥?

Post-upload processing of SSE-C encrypted objects on S3: how to provide the key to the Lambda function?

提问人:Pat Lee 提问时间:11/9/2023 最后编辑:Mark BPat Lee 更新时间:11/9/2023 访问量:34

问:

使用 SSE-C 时,AWS 文档指出,在将对象放入 S3 上的存储桶后,加密密钥会立即从 RAM 中删除。

我需要在上传对象后立即从对象中提取和处理一些数据,但原始对象将无限期存档。我正在努力寻找一种可靠且安全的模式来为将完成这项工作的 Lambda 函数提供加密密钥。

我的想法是使用 SQS 队列(该队列也具有自己的加密功能,因此可以包含带有密钥的事件)来触发 Lambda,但似乎没有办法将密钥放入事件中。

坦率地说,我能想到的所有其他设计模式似乎都很糟糕。关于如何设计一个干净的架构来实现这一目标的任何想法?

amazon-web-services 安全性 amazon-s3 aws-lambda 架构

评论

2赞 Mark B 11/9/2023
重点是,您可以自己将密钥存储在 Amazon 之外,而不是将其存储在 AWS KMS 或 HSM 等服务中,其他 AWS 服务可以在这些服务中访问密钥(如果您授予它们适当的 IAM 权限)。Lambda 无法访问该密钥,除非您将其存储在 HashiCorp Vault 服务器等位置,并以某种方式使该服务器可供 Lambda 函数使用。SSE-C
2赞 Peter Cordes 11/9/2023
如果我们要为 SSE-C 创建一个标签,它可以是 aws-sse-c 还是其他什么?已经有 [sse] [sse2] 等(x86 SIMD 指令集)经常在 [server-sent-events] 问题上被错误标记,因为它通常也缩写为 SSE。(我在这里只是因为我的问题提要包含与最初具有的新标签相匹配的标签通配符。这本身并不是一个障碍,SSE-C 不会与任何 x86 汇编内容发生冲突,但我的经验是,简短的缩写标签往往会被错误地标记,因为人们没有检查鼠标悬停。sse*[sse-c]
0赞 Pat Lee 11/9/2023
听起来很公平😑 @MarkB如果你将此评论复制粘贴到答案中,我会接受它!
1赞 Mark B 11/9/2023
@PeterCordes我已经删除了标签,并用更相关的标签替换了它。[sse-c]
0赞 Peter Cordes 11/9/2023
@MarkB:我看到了;这就是我说“如果”的部分原因。未来的问题可能需要这个新事物的标签,所以我认为它仍然值得一提,它可能会被关注 AWS 标签的人看到。

答:

3赞 Mark B 11/9/2023 #1

SSE-C 的全部意义在于,您可以自己将密钥存储在 Amazon 外部,而不是将其存储在 AWS KMS 或 HSM 等服务中,其他 AWS 服务可以在其中访问密钥(如果您授予它们适当的 IAM 权限)。Lambda 无法访问该密钥,除非您将其存储在 HashiCorp Vault 服务器等位置,并以某种方式使该服务器可供 Lambda 函数使用。