我用 Rust 构建了一个零配置的 Secret Manager,因为 .env 文件是安全戏剧

发布: (2026年3月30日 GMT+8 14:21)
3 分钟阅读
原文: Dev.to

Source: Dev.to

.env 的真实问题

让我具体说明一下有哪些问题:

  1. 它们是明文的。 你的 DATABASE_URL 就放在磁盘上的一个文本文件里,和代码放在一起。如果你的笔记本电脑被攻破,所有的密钥也会一起泄露。
  2. 它们通过不安全的渠道传播。 新来的开发者怎么获取这些密钥?Slack 私信、电子邮件,甚至是 Google 文档。这些内容在存储时并未加密,会被索引并长期保留。
  3. 它们是静态的。 你在 2022 年的 .env 中的 STRIPE_SECRET_KEY 仍然有效吗?仍然保存在旧笔记本的备份里。永不过期的静态凭证就是不断送给攻击者的礼物。
  4. Git 是永久的。 即使使用 .gitignore,密钥仍会进入仓库。误提交后又删除——但 git log 仍然记得所有历史。GitHub 甚至推出了密钥扫描功能,正是因为这种情况屡见不鲜。
  5. 没有审计日志。 谁在上周二凌晨 3 点访问了 PROD_DATABASE_URL?使用 .env 文件时:根本不知道,毫无可视性。

我改而构建的东西

我实在是受够了,于是花了一个周末打造了 zenv —— 一个零配置的运行时密钥注入工具,专为开发者设计。源码已在 GitHub 上公开:github.com/arvytechnolgies/zenv

思路很简单:用加密保险库取代 .env 文件,在运行时注入密钥。

# Before zenv
cp .env.example .env
# edit .env with secrets from Slack...
npm start

# After zenv
zenv init
zenv vault import .env  # one‑time migration
zenv run -- npm start   # secrets injected at runtime
0 浏览
Back to Blog

相关文章

阅读更多 »

天哪,我讨厌 .env 文件

评论 > vincentabolarin https://news.ycombinator.com/user?id=vincentabolarin – 23分钟前 https://news.ycombinator.com/item?id=47501509 > 没有什么比 cha...