You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

AWS Lambda中将敏感数据写入/tmp目录是否存在安全风险?

Lambda /tmp目录存储SSH私钥的安全风险说明

先纠正一个常见认知偏差

你提到paramiko仅接受文件名参数是误解,该库支持直接传入内存中的私钥对象,完全不需要将私钥落地到磁盘,可以从根源上规避写入/tmp的安全风险,参考实现代码:

import paramiko
from io import StringIO

# 从AWS Secrets Manager获取的私钥字符串
secret_private_key = "你获取到的私钥明文内容"

# 直接加载内存中的私钥,无需写入文件
pkey = paramiko.RSAKey.from_private_key(StringIO(secret_private_key))

# 建立SSH连接时直接传入pkey参数即可
ssh_client = paramiko.SSHClient()
ssh_client.set_missing_host_key_policy(paramiko.AutoAddPolicy())
ssh_client.connect(
    hostname="目标服务器IP/域名",
    username="SSH登录用户名",
    pkey=pkey
)

如果你确实有必须写入/tmp的场景,安全影响如下:

Lambda的/tmp是同执行环境独占的临时磁盘存储,执行环境销毁后数据会被彻底清除,默认不存在跨账号、跨函数的泄露风险,但仍有以下需要注意的安全问题:

  • 执行环境复用泄露风险:Lambda处理完请求后不会立刻销毁执行环境,同函数的后续请求大概率会复用同一个执行环境,/tmp下未删除的私钥会被后续的函数执行逻辑读取。如果函数存在代码注入、任意文件读取类的漏洞,攻击者可以通过复用环境获取到私钥内容。
  • 权限配置不当风险:如果写入文件时没有主动设置严格的文件权限,默认权限可能允许执行环境内的其他进程读取私钥内容,建议写入时直接设置权限为0o600。
  • 残留窗口过大风险:如果私钥写入后没有在使用完成后立刻删除,会在执行环境的生命周期内长期留存,进一步扩大泄露的可能性。

写入/tmp时的安全优化建议

  • 私钥使用完毕后立刻调用os.remove()删除文件,不要等待函数执行结束自动清理
  • 不要在函数全局初始化阶段写入私钥,仅在需要建立SSH连接前临时写入,用完即删
  • 写入文件时显式指定权限:os.chmod("/tmp/你的私钥文件名", 0o600)

内容的提问来源于stack exchange,提问作者rooni

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.29 10:09:03