使用 blackbox 加密 git 裡的檔案 — Part2

Luyo
Luyo
Jul 21, 2017 · 7 min read

前一篇文章介紹了如何在 CentOS/Redhat 7 環境下安裝 blackbox,以及如何在 git repository 裡初始化 blackbox,這篇文章將簡單介紹一些 blackbox 的使用經驗。

以下都假設 username 為 xxx,用來產生 gpg key 的 email 為 xxx@ooo.com,請讀者自己轉換成自己的 username 及 email。

把自己加入 blackbox 管理者名單

切換到 git repository 的目錄底下,以 blackbox_addadmin 將自己加入 blackbox 的管理者名單

$ blackbox_addadmin xxx@ooo.com
gpg: `/home/xxx/work/crawler/keyrings/live/secring.gpg' 鑰匙圈已建立
gpg: `/home/xxx/work/crawler/keyrings/live/pubring.gpg' 鑰匙圈已建立
(略)
NEXT STEP: You need to manually check these in:
git commit -m'NEW ADMIN: myemail@mycompany.com' keyrings/live/pubring.gpg keyrings/live/trustdb.gpg keyrings/live/blackbox-admins.txt

依照最後一行的指示做 git commit 的動作:

$ git commit -m'NEW ADMIN: xxx@ooo.com' keyrings/live/pubring.gpg keyrings/live/trustdb.gpg keyrings/live/blackbox-admins.txt

這樣就完成了,很簡單吧,接下來就可以試試看加密檔案的功能是否有作用了。

但這邊有些人也許會遇到一個的狀況,就是你不小心在 blackbox_admin 時輸入了不對的 email,這將導致後面加密檔案的動作失敗,這時候你必須先把這個錯誤的 email (假設為 xxx@xxx.xxx) 移除:

$ blackbox_removeadmin xxx@xxx.xxx

你可以查看 keyrings/live/blackbox-admins.txt 的內容來確認目前的管理者名單是否正確:

$ cat keyrings/live/blackbox-admins.txt
xxx@ooo.com

如果這個名單的 email 對應的 gpg key 都存在,那麼加解密的動作應該就能正常運作。

加密檔案

要將檔案加密,就要將它加到 blackbox 的加密名單之中。我們按照官方的範例,新增一個檔案 foo.txt:

$ rm -f foo.txt.gpg foo.txt$ echo This is a test. >foo.txt$ blackbox_register_new_file foo.txt
========== PLAINFILE foo.txt
========== ENCRYPTED foo.txt.gpg
========== Importing keychain: START
(略)
[master 1976d98] registered in blackbox: foo.txt
2 files changed, 1 insertion(+)
create mode 100644 foo.txt.gpg
========== UPDATING VCS: DONE
Local repo updated. Please push when ready.
git push

這樣就完成加密檔案的動作了,接下來你可以按照指示做 git push 將變更同步到 remote 端。

但實際上到底發生了什麼事?我們如果下 git log -p 指令,就可以發現 blackbox_register_new_file foo.txt 這個指令自動幫我們做了三件事情:

  1. 將 foo.txt 加密成新檔案 foo.txt.gpg
  2. 將 foo.txt 加至 keyrings/live/blackbox-files.txt 名單
  3. 把上述兩個變更提交成一個 commit

此外,還有第四件事情是 git log -p 看不到的:如果你觀察 .gitignore 檔案會發現 foo.txt 也被加到裡面了,這樣就可以避免檔案被解密後忘記砍掉,又不小心被 commit 成 new file 的狀況,這樣檔案內容就又都跑上雲端了。

編輯加密過的檔案

假設被加密過的檔案名為 foo.txt.gpg,欲編輯可下指令:

$ blackbox_edit foo.txt.gpg

這個指令會自動把檔案解密成 foo.txt,然後如果沒有特別設定 $EDITOR 環境變數的話預設會以 vi 開啟 foo.txt,當你編輯完成離開編輯器之後,會再自動將 foo.txt 加密回 foo.txt.gpg,然後砍掉 foo.txt。

我覺得一般情況下,使用 blackbox_edit 應該就夠了,但如果你需要將加解密的動作寫成腳本,或有其他需要看到未加密內容的需求,可以改以 blackbox_edit_startblackbox_edit_end 指令來處理。

新增帳號至 blackbox 管理者名單

若要新增一個帳號到管理者名單之中,需要兩個人共同合作,以下分成兩個 part 來解說。

Part A

第一個是「要被加入的人」這個人必需要先用 email 產生自己的 gpg key (方法可參考前一篇文章)。

假設這個人的 username 為 zzz,用來生成 gpg key 的 email 是 zzz@ooo.com,那麼就請他切換到 repository 目錄底下,執行指令:

$ blackbox_addadmin zzz@ooo.com
(略)
NEXT STEP: You need to manually check these in:
git commit -m'NEW ADMIN: zzz@ooo.com' keyrings/live/pubring.gpg keyrings/live/trustdb.gpg keyrings/live/blackbox-admins.txt

接下按照指示下指令做 git commit 的動作,然後 git push 到 remote 端即可。

Part B

第二個必需要是「已在管理者名單裡的人」,隨便一個都可以。這位仁兄第一件事是要先做 git pull,把 Part A 的更新先同步下來。

接著就按照官方文件,下指令:

$ gpg --homedir=keyrings/live --list-keys
gpg: WARNING: unsafe permissions on homedir `keyrings/live'
gpg: keyring `keyrings/live/pubring.gpg' created
gpg: keyrings/live/trustdb.gpg: trustdb created

這裡會看到一個警告訊息,告訴你 keyrings/live 這個資料夾是不安全的。我們可以試著變更這個目錄的權限:

$ chmod 700 keyrings/live

如果以後再下指令 gpg --homedir=keyrings/live --list-keys 就不會看到這個警告訊息了。因為這個資料夾是在 .gitignore 名單之中的,所以每個管理者都必需自己做一次這個動作。

接下來再繼續下指令:

$ gpg --import keyrings/live/pubring.gpg
(略)
$ blackbox_update_all_files
========== blackbox administrators are:
(略)
[master ed5cb3a] Re-encrypted keys
3 files changed, 1 insertion(+)
rewrite foo.txt.gpg (100%)
========== DONE.
Likely next step:
git push

接著依照指示 git push,Part B 的工作就完成了。

最後,剛被加入管理者名單的人先執行 git pull 做更新之後,理論上就可以使用 blackbox_edit foo.txt.gpg 來編輯被加密過的檔案了。

至此,基本的 blackbox 使用方法大致上都記錄到了,其餘的功能例如將檔案從 blackbox 名單中移除,以及方便佈署的相關指令如 blackbox_shred_all_filesblackbox_postdeploy 等等,就留給讀者自行研究囉。

verybuy-dev

VeryBuy 研發手札

)

Luyo

Written by

Luyo

Founder, Developer of VeryBuy — https://www.verybuy.cc

verybuy-dev

VeryBuy 研發手札

Welcome to a place where words matter. On Medium, smart voices and original ideas take center stage - with no ads in sight. Watch
Follow all the topics you care about, and we’ll deliver the best stories for you to your homepage and inbox. Explore
Get unlimited access to the best stories on Medium — and support writers while you’re at it. Just $5/month. Upgrade