dotenv-vault
快速入門 ⚡️
使用此快速入門指南,以 dotenv-vault 的方式同步、管理和部署您的機密。
初始設定
以您選擇的語言安裝應用程式所需的函式庫。
npm install dotenv --save
撰寫應用程式程式碼。
// index.js
require('dotenv').config()
const PORT = process.env.PORT || 3000
const http = require('http')
const server = http.createServer((req, res) => {
res.statusCode = 200
res.setHeader('Content-Type', 'text/plain')
res.end(`Hello ${process.env.HELLO}`)
})
server.listen(PORT, () => {
console.log(`Server running on port:${PORT}/`)
})
建立您的 .env
檔案。
.env
# .env
HELLO="World"
執行您的應用程式。
node index.js
# visit https://127.0.0.1:3000
如果您看到「Hello World」,則表示成功。
接下來,同步您的 .env
檔案。
同步
推送和拉取對 .env
檔案的變更。首先建立專案的 env 保管庫並針對其進行驗證。
npx dotenv-vault@latest new
npx dotenv-vault@latest login
安全地推送和拉取您的 .env 檔案。
npx dotenv-vault@latest push
npx dotenv-vault@latest pull
就這樣!您已同步我們的 .env
檔案。接下來,設定您的生產機密。
管理
開啟生產環境以編輯生產 HELLO
值。
npx dotenv-vault@latest open production
編輯 HELLO
值,使您的生產機密將呈現為 Hello production
。
看起來不錯。接下來,使用您加密的 .env.vault
檔案部署您的生產機密。
部署
首先建置專案的加密 .env.vault
檔案。它會以與雲端無關的有效負載安全地加密您的機密。
npx dotenv-vault@latest build
將其安全地提交至程式碼。
git add .env.vault
git commit -am "Build encrypted .env.vault file for deploy"
是的,提交 .env.vault
檔案至程式碼是安全且建議的。它包含環境機密的 AES-256 GCM 加密密碼,這些密碼會使用環境 DOTENV_KEY
即時解密。
擷取您的生產解密金鑰 - DOTENV_KEY
- 以解密您的 .env.vault
檔案。
npx dotenv-vault@latest 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
如果您看到記錄訊息 Loading env from encrypted .env.vault
,則表示正在運作。
$ hello-world: 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
的生產內容,並將其機密即時注入到您正在執行的程序。
結論
恭喜!您現在了解 .env.vault
的運作方式。這比將機密同步到可能洩漏機密的第三方更安全。CircleiCi 不久前發生了機密洩漏事件。.env.vault
可保護您免受此類洩漏的影響。攻擊者必須同時取得您的 DOTENV_KEY
和您的程式碼庫。這要困難得多。
此外,您現在擁有一個易於管理的單一事實來源。在 UI 中進行變更、執行建置命令並重新部署。減少處理機密的時間,並將更多時間用於撰寫程式碼。
剩下要做的就是在您的生產伺服器上設定您的 DOTENV_KEY
並部署您的程式碼。
例如,在 heroku 上,這很容易
$ heroku config:set DOTENV_KEY='dotenv://:[email protected]/vault/.env.vault?environment=production'
常見問題
如果未設定 DOTENV_KEY
會發生什麼事?
它會正常回復為從您的 .env
檔案載入。這是開發的預設值,因此您可以專注於編輯您的 .env
檔案,並保留 build
命令,直到您準備好部署這些環境變數變更。
我應該提交我的 .env
檔案嗎?
否。我們強烈建議不要將您的 .env
檔案提交至版本控制。它應該僅包含特定於環境的值,例如資料庫密碼或 API 金鑰。您的生產資料庫應該有與開發資料庫不同的密碼。
我應該提交我的 .env.vault
檔案嗎?
是。這樣做是安全且建議的。它包含您加密的環境和您的保管庫識別碼。
我可以分享 DOTENV_KEY
嗎?
否。它是解鎖加密環境變數的金鑰。請非常小心您與誰分享此金鑰。不要讓它洩漏。