快速入门
在生产环境中部署 .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"
是的,将 .env.vault
文件提交到代码中是安全且推荐的做法。它包含您的环境秘密的 AES-256 GCM 加密密码,这些密码会使用环境 DOTENV_KEY
进行实时解密。
获取 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 密钥。您的生产环境数据库应使用与您的开发环境数据库不同的密码。