在 AWS lambda 中使用 /tmp 目录有多安全?

Ash*_*Ash 6 amazon-web-services python-3.x aws-lambda

我一直在考虑在aws_encryption_sdklambda 中实现 来处理上传到 s3 存储桶中的加密文件。

我已经能够通过将文件下载到/tmp目录中(给文件一个唯一的名称),在同一目录中解密文件,然后将解密的文件上传回 s3 来使其工作。我也在操作完成后删除系统中的文件,但在退出 lambda 之前

虽然使用文件系统是常见用例,但我担心/tmp目录的使用及其安全性。

谁能建议我是否应该担心?启动 Lambda 时文件系统的排他性如何?

谢谢

Ser*_*lev 9

/tmp在 Lambda 中使用它有点安全,这意味着您的/tmp文件夹不会与其他 AWS 客户端共享。同时:

  1. 没有证据表明分配给的任何磁盘空间/tmp实际上已被擦除。由于 AWS Lambda 不提供对底层磁盘的低级块访问,因此它足够安全,但不是军用级。RAM 内存擦除:

Lambda 在将内存分配给执行环境之前对其进行清理,这有效地防止了属于同一帐户和不同客户帐户的函数之间的内存共享。

因此,对于高安全性应用程序,您可能会考虑将解密的内容保存在内存中。

  1. 请记住,/tmp不会在每次 Lambda 调用时重新创建/清除。恰恰相反,如果您的 Lambda 在短时间内多次运行,则调用将在相同的上下文中运行并且/tmp内容将被保留。这是一个功能,而不是一个错误。

在执行 Lambda 函数后,AWS Lambda 会在一段时间内维护执行上下文,以期待另一个 Lambda 函数调用。

每个执行上下文在 /tmp 目录中提供 512 MB 的额外磁盘空间。当执行上下文被冻结时,目录内容仍然存在,提供可用于多次调用的临时缓存。您可以添加额外的代码来检查缓存是否包含您存储的数据。

如果您真的关心 Lambda 的安全方面,我建议您阅读AWS Lambda 的安全概述:深入了解 Lambda 安全白皮书。