【加密】如何同步.env重要私密檔案 dotenv-vault

有時候在專案中有一些機敏資訊,例如帳號密碼、密鑰等敏感資料
不想把它放進專案,於是就會創建 .env 檔案進行控管
並且在.gitignore 中加入.env檔案,不被git控管,也避免上傳至gituhb等網站

但是如果要跨平台同步這個重要資料呢,該如何做?






首先先安裝Node.js
並且預先寫好自己的.env檔案
用以下指令新增.env.vault

$ npx dotenv-vault new

輸入專案名稱以及email (或者可以創建帳號登入)
會在資料夾下,自動產生一份.env.vault
裡面包含加密過後的.env資料

會出現一組id DOTENV_VAULT 
以及後續步驟會出現 DOTENV_VAULT_DEVELOPMENT、DOTENV_VAULT_PRODUCTION的檔案,為對稱式加密過後的.env
然後會新增一份(或修改).gitignore






接著用Google Email登入

$ npx dotenv-vault@latest login

他會寄一封信件致剛剛輸入的信箱,等於用SSO來登入你具有此env專案的權限

Login步驟完成後,會產生一份 .env.me
裡頭的DOTENV_MEAPI Token,代表使用者身份






開啟專案URL頁面

$ npx dotenv-vault@latest open

可以管理專案,包括刪除已上傳的專案、刪除organization
(若要自訂organization名稱,可以先新建專案後,直接在頁面中更改。
或者創建新的org需選擇plan 可以點選free,創建slug 再create project)



然後會看到這段預設的.env
接著要把它改成自己專案的.env,所以需要覆蓋過去





$ npx dotenv-vault@latest push

推上後再回頭看網頁,就會是專案內原始的.env檔案





DOTENV_KEY 是系統用來解密.env.vault 的密鑰
查看自己的 DOTENV_KEY
這是透過 API Token 從雲端服務來取得,並非儲存在本地


$ npx dotenv-vault keys






之後為了同步
必須將 .env.vault 檔案 推送到git remote repo上
放心推送吧,因為是加密後的 .env,內容本身不可讀,沒有DOTENV_KEY密鑰的話解不開。

然而 .env.env.me 這兩個檔案千萬不能上傳至github




同步方式

$ npx dotenv-vault@latest pull

因為有.env.vault 這份檔案,平台可以去對應這個vault是誰的,誰有權限

如果是沒有權限的其他帳戶,會出現 You do not have access to this organization and its projects.
所以能確保只有擁有權限的人能看得到






可用指令查看加密過程,加密是在本機完成。

$ npx dotenv-vault build

然而若平台有加密過後的檔案、以及密鑰,是可以解密的


身為第三方平台的dotenv-vault儲存我們的資料,會不會有危險呢?答案是有的









心得感想:
不知道怎麼地,
為了方便,試圖透過一個repo來管理所有程式碼
於是人類創造了git,出現了github等平台


後來人們開始不相信github、不相信平台

為了安全性,人類將一個repo一分為二,區隔出可公開與不可公開
於是人類建立了.env檔案,出現了dotenv vault平台來託管
然而平台卻不是100%可相信的
...



沒有留言:

張貼留言