主要观点:开发者常喜欢用环境变量存储应用配置和敏感信息,但这存在诸多安全风险,应停止这种做法,采用更好的秘密管理方式。
关键信息:
- 环境变量存储秘密易导致管理不善(难更改、不常轮换、难审计、未加密)、前端后端混淆泄露秘密、.env 文件易泄露、日志泄露秘密、子进程共享环境变量、环境变量在进程列表中可见、构建参数和.env 文件会泄露到 Docker 镜像等问题。
- 提出更好的秘密管理提案,包括分离应用配置和秘密、通过外部资源注入秘密或运行时请求、使用秘密管理服务等,还介绍了不同秘密管理方式的优缺点,如 1Password 等 secrets 存储工具及 Infisical 等秘密管理服务。
- 解答关于使用秘密管理服务仍需传递某些凭证、环境变量对恶意依赖的保护、秘密管理对恶意依赖的作用、如何遵循“秘密零”原则以及在 Lambda 环境中是否相关等常见问题。
重要细节:
- 以 Next.js、Nuxt 为例说明前端后端混淆导致的秘密泄露问题及相关案例。
- 以 Express 为例展示秘密通过日志泄露的情况及相关代码示例。
- 以 Seneca CVE-2019-5483 为例说明环境变量导致的信息暴露漏洞。
- 以 Docker 为例说明构建参数和.env 文件泄露到镜像的问题及相关研究数据。
- 详细阐述不同秘密管理方式的具体操作和注意事项,如 1Password 的使用及 Infisical 的示例代码等。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。