安全的隱憂
對於很多開發者而言,代碼既是資產,於是一小部分開發者身懷鉅富,將代碼放置在代碼託管平臺上時,顯得‘惴惴不安’,唯恐平臺泄密或者平臺人員窺探到這些財富。
git,svn,hg 幾乎所有的版本控制工具都不會將用戶的文件通過特定的方法加密,版本控制系統存儲的都是文件快照或者文件的差異變更。(版本控制工具是個好同志,尊重事實)
這樣一來,遠程服務器或者中央服務器上的數據相對於能接觸到這些數據的人來說也就是透明的。 實際上也是如此,幾乎所有的代碼託管平臺上的管理員可以看到你的遠程存儲庫或者中央存儲庫。當然平臺的管理員都有嚴格的規範限制這種數據泄密行爲,對於絕大多數開發者而言,在這方面是無需擔心的。
鄭重說一句:碼雲有非常健全的安全機制,來保障大家的私密項目是安全可靠的。
對於安全級別非常高的企業來說,他們往往會自己搭建私有化版本控制系統,而不是使用公有云上的代碼託管平臺。
代碼上的財富並不一定能支撐私有化的高額費用,如何消除這些人的隱憂呢?簡單的方案是在這些用戶將代碼推送到服務器前將其加密。git-secure 的目的正是如此。
這有一個簡單的解決方案
距離老闆提出存儲庫加密的需求已經過去兩週,git-secure 經過測試已經能在 Windows, Linux,macOS 上運行正常。
git-secure 是一組工具,用戶在使用 git-secure 創建 commit 時會自動的將修改的文件使用 AES-256 加密,然後提交推送到遠程服務器上。遠程服務器上有更新時,使用 git-secure pull 即可,用戶還可以使用 git-secure 克隆遠程服務器上已經被 AES 256 加密的存儲庫。
項目地址 git-secure
如何使用
安裝依賴
git-secure 需要安裝 git 工具,在 Windows 系統,不一定需要將 git 添加到環境變量中,git-secure 將自動搜索 git 安裝目錄。
由於 git-secure 是使用 Powershell 腳本編寫,用戶在使用前應當安裝 Powershell 6.0(Windows 系統需要 5.0 支持),Powershell 6.0 是一個跨平臺腳本工具,支持 Windows,Linux, macOS ,下載地址爲 https://github.com/PowerShell/PowerShell/releases
bash <(wget -O - https://raw.githubusercontent.com/PowerShell/PowerShell/master/tools/install-powershell.sh)
安裝
git-secure 非常容易使用, 用戶可以去碼雲主頁下載安裝包: git-secure/releases,值得注意,Windows 平臺的用戶在使用 git-secure 安裝包時,應當勾選添加 git-secure 安裝目錄到環境變量,這樣可以省去用戶輸入命令時的麻煩。
使用
在 git-secure 項目主頁,有一些基本操作的命令,實際上和 git 相關命令一致。
Git Secure utilies 1.0
Usage: git-secure cmd args
add add file contents to the index
clone clone a encrypted repository
config config your secure repository
commit create a commit
diff show commit changes between commit worktree
init initialize a secure repository
key create a aes key
pull Fetch from and integrate with another repository or a local branch
push Update remote refs along with associated objects
remote set remote for secure repositroy
status Show the working tree status
help print help message
使用例子截圖:
這是如何做到的
git-secure 是一個簡單的存儲庫加密方案,因此,內部實現應當非常簡單。git-secure 使用雙存儲庫機制,用戶可見的存儲庫是一個臨時的存儲庫,主要的功能是提供 diff,add 等功能,git-secure commit 時將先提交到臨時存儲庫中,然後比較臨時存儲庫的 commit id 與 記錄的前次 commit id 比較,然後將修改的文件加密輸入到隱藏的存儲庫 .git/secure
中,然後在隱藏的存儲庫中創建提交,成功後刷新記錄文件。
git-secure 是開源工具,因此有興趣的人士可以通過源碼瞭解 git-secure。同時也非常歡迎用戶提交 PR。
最後
Powershell 是個好夥計,希望大家喜歡它,git-secure 也是個好夥計,希望大家喜歡它。
最後 項目地址 git-secure