快速入门

在生产环境中部署 .env.vault 文件

使用本快速入门指南,将加密的 .env.vault 文件部署到生产环境(或暂存环境或 CI 环境)。

构建 .env.vault

首先构建项目的加密 .env.vault 文件。它会以云无关的有效载荷安全地加密您的秘密。

npx dotenv-vault build

将该文件安全地提交到代码中。

git add .env.vault
git commit -am "Build encrypted .env.vault file for deploy"

获取 DOTENV_KEY

获取您的生产环境解密密钥,即 DOTENV_KEY,以解密您的 .env.vault 文件。

npx dotenv-vault keys production

这将输出您的生产环境 DOTENV_KEY

使用该 DOTENV_KEY 在本地运行您的应用程序,以进行快速测试。

DOTENV_KEY='dotenv://:[email protected]/vault/.env.vault?environment=production' node index.js
# visit https://127.0.0.1:3000

如果您看到日志消息 从加密的 .env.vault 加载环境,则说明它正在工作。

$ quickstart: DOTENV_KEY='dotenv://:[email protected]/vault/.env.vault?environment=production' node index.js
[[email protected]][INFO] Loading env from encrypted .env.vault
Example app listening on port 3000

DOTENV_KEY 会解密 .env.vault 的生产环境内容,并将它的秘密实时注入到您的运行进程中。剩下的就是将 DOTENV_KEY 设置到您的生产服务器上,并部署您的代码。

设置 DOTENV_KEY

在您的服务器上设置生产环境 DOTENV_KEY。例如,在 Heroku 上,您可以使用它们的 cli 设置它。

$ heroku config:set DOTENV_KEY='dotenv://:[email protected]/vault/.env.vault?environment=production'

这是一段演示整个过程的视频。

总结

恭喜!现在您了解了 .env.vault 文件的工作原理。

这比将您的秘密同步到第三方要安全得多,因为在第三方同步中,您的秘密可能会泄露。 CircleiCi 不久前就发生了秘密泄露事件.env.vault 会保护您免受此类泄露事件的影响。攻击者必须同时获取您的 DOTENV_KEY 和您的代码库。

此外,您现在拥有一个易于管理的单一事实来源。在 UI 中进行更改,运行构建命令,然后重新部署。花更少的时间处理秘密,花更多的时间编写代码。

最棒的是,该技术与平台和框架无关。我们已经编译了近 100 个指南(到目前为止)。以下是我们访问量最大的指南列表。点击一个徽标,开始使用。

感谢您使用 Dotenv!


常见问题

如果未设置 DOTENV_KEY 会怎样?

它会优雅地回退到从您的 .env 文件加载。这是开发环境的默认设置,这样您就可以专注于编辑您的 .env 文件,并在准备好部署这些环境变量更改时再运行 build 命令。

我应该提交我的 .env.vault 文件吗?

是的。建议您这样做,并且这样做是安全的。它包含您的加密环境和您的保险库标识符。

我可以共享 DOTENV_KEY 吗?

不可以。它是解锁加密的环境变量的密钥。请谨慎与谁共享此密钥。不要让它泄露。

我应该提交我的 .env 文件吗?

不可以。我们强烈建议不要将 .env 文件提交到版本控制。它只应包含特定于环境的值,例如数据库密码或 API 密钥。您的生产环境数据库应使用与您的开发环境数据库不同的密码。