如果讀者有些 CI/CD 工具使用經驗,你可能會發現 GitHub 某些功能與市面上多數的產品不同。舉例來說,我們在 GitHub DevOps 流程參考實現 文章所提到的專案管理,並沒有強調軟體開發流程(如:Agile、CMMI...等),主因為 GitHub 發展流程起源於 社群(Community),以開源協作為主軸提供功能。也因為如此,安全相關功能很早就納入為主要功能,而並非讓使用者以 選擇性方式 加入安全相關功能。 GitHub 所提供的基本安全功能如下:
以類似 GitHub README.md 方式建立 SECURITY.md,讓 Repo Owner 提供一個聯繫管道讓其他人秘密回報安全漏洞,並告知其他使用者目前那些版本有安全支援。一般來說,訪客進入 Repo 會直接看見 README 檔案,建議在 README 內加入 SECURITY.md 連結,讓所有人可以找到你的 Security Policy。
你可以開啟 Repo > Secuirty,左邊選單可以找到 Security Policy > 開始建立 Security Policy。
若尚未建立,你可以直接在 overview 內直接點選 set up a security policy 按鈕開始建立 Security Policy
你可以看見基本的範本,包含支援安全版本的圖表 與 回報漏洞的連絡資訊
點選右上角 Commit,可以檢視畫面狀態
在 Repo 的程式碼中提供私有討論與修復安全漏洞。你可以在修復後發佈安全公告,讓社群了解此安全漏洞並鼓勵使用者進行更新。此功能與 Security Policy 相輔相成,讓你的程式碼有一個良好的安全生態。
你可以開啟 Repo > Secuirty,左邊選單可以找到 Security advisories > 點選右上角 New draft security advisory 按鈕
依序輸入漏洞討論相關資訊,即可以建立
你也可以建立暫時私有的 repo 來修復漏洞
若修復完成,也能選擇發佈相關資訊,建議使用者更新
Dependabot 會檢查你 Repo 內相依的套件,並且對於這些相依套件提供已知安全性警告,甚至自動建立 Pull Request 來替換這些相依內容。
你可以在 Repo > Settings > security and analysis features 內找到 Dependabot alerts 與security updates 設定並啟用他
當有弱點出現時,Repo 畫面上會出現警訊
可以檢視詳細訊息,盡快更新以避免漏洞產生
Dependency graph 可以讓 Repo Owner 檢視儲存庫內的生態系,確認 Repo 相依那些 Package,也能檢視那些 Repo 與 Package 相依於你的 Repo。這個功能在 Repo > Insight > Dependency graph
閱讀完本篇文章,你應該對於 GitHub 所提供的安全相關功能有一定程度的了解。讀者應該不難發現:幾乎很少有管理工具提供這種像是 Security Policy 與 Security advisories 這類型回報/修復漏洞功能。透過這些良好的回報/修復機制,您可以透過社群的力量建立良好的安全維護生態系,進而大幅確保自身 Repo 的安全。
若喜歡我的文章,歡迎點 like, 分享與訂閱。
https://docs.github.com/en/code-security/getting-started/github-security-features