Github的branch權限設定 – Required signed commits
這次介紹的protected branch的一項功能是 Required signed commits,這項功能的用途是用來驗證commit 的作者與github上的使用者是否符合,簡單來說就是做身分驗證,可避免身分被有心人士冒用,接來來馬上來介紹如何設定 Required signed commits。
第一步,賦予你的branch擁有Protected branch的Required signed commits功能,筆者以protected_branch為例子。
設定完之後,我們可以看到protected_branch已經出現在Branch protection rules清單了。
設定完成後,開啟終端機,筆者在這邊做個建立提交(commit)然後推(push)到github的protected_branch的測試,因為筆者已經賦予protected_branch擁有Required signed commits的功能,所以現在凡是未簽署(signature)以及驗證(verify)失敗的提交(commit)都不能推上protected_branch。
建立檔案 fileb然後新增到git,在做提交(commit),整個過程並沒有對commit做簽署動作,接下來推到github看看會發生什麼事!
上圖顯示 remote: error: Commits must have valid signatures,很明顯必須要有簽署才能通過,好的,那我們接下來看要如果對提交簽署。
對commit簽署可以用到兩種加密工具GPG 跟 S/MIME,筆者使用的是GPG,GPG安裝方式不在此介紹,如果安裝成功,在終端機輸入gpg會顯示下圖訊息。
接下來產生金鑰,我使用的是RSA and RSA key的長度為4096 期限為一天,設定完輸入y進入下一步。
輸入Real name Email address Comment,這邊要注意 Real name以及Email 要跟你提交(commit)的username以及email一樣。
然後設定密碼(passphrase)
設定完之後,輸入 gpg –list-secret-keys –keyid-format LONG,可查看目前的金鑰有哪些,下圖可看到剛剛建立好的金鑰資訊,接下來我們會需要DE3A41B253B03BE3這串KEY。
需要把DE3A41B253B03BE3這串KEY設定在GIT的設定檔裡
輸入 git config –global user.signingkey DE3A41B253B03BE3,然後確定git 設定是否正確。
接下來建立檔案filed然後新增到git建立提交(commit) ,建立一筆附加簽署的提交指令為 git commit -S -m “備註”
提交建立成功,接下來只差最後只差一步了,就是把提交推上github。
上github自己的帳號設定介面有個SSH and GPG keys。
將你的GPG key 匯出(export),然後複製以下字串
(從—–BEGIN PGP PUBLIC KEY BLOCK—–
到—–END PGP PUBLIC KEY BLOCK—–)
貼到下面的文字區塊裡,然後按下Add GPG key。
下圖表示金鑰在github 新增成功。
接下來推上github,看是否會成功。
恭喜!如果你也跟筆者一樣看到你的提交(commit)已經推上github,表示你已經成功的完成所有步驟,注意你的提交後面有個綠字字體的verified的標籤,表示這個提交是經過驗證的。
筆者範例所使用的帳號是e314520513jp,所以從提交的作者簽署的Real Name 到github的帳號都是e314520513jp,經過github對要推上github的提交做身分驗證,確定身分一致,讓提交可以推上github。這個功能算是很嚴格的一項功能,如果你的branch有此項功能,任何人都無法去冒用其他人的帳號作為提交的作者,除非你擁有他人的金鑰以及金鑰密碼。
我要留言