程式忍者PGNinja

GitHub Blog

GitHub 用 Evergreen 機器人自動清理組織的過期權限

· GitHub 工程團隊打造 Evergreen 機器人,用排程自動清查外部協作者權限與閒置儲存庫,減少人工維運。

GitHub 內部有一個供 1,400 多名員工與大量外部合作夥伴共用的組織,過去外部協作者的存取權限、以及哪些儲存庫已經閒置沒人維護,都要靠人工追蹤與提醒,很容易出現該收回的權限沒收回、該封存的專案一直放著的情況。GitHub 工程團隊因此打造了一套名為 Evergreen 的 GitHub App,把「誰能存取什麼」與「哪些儲存庫該退休」這兩件維運工作整個自動化。

Evergreen 用排定好的 GitHub Actions 定期執行,並透過一個獨立的控制儲存庫當作系統的「時鐘與記憶」,把每一輪檢查的狀態寫成 JSON 檔案提交進 Git,留下完整歷史紀錄可供回溯。整套流程分成四個時間點依序進行:先標記看起來閒置的儲存庫,再透過 GitHub Issue 請相關負責人複核外部協作者的權限,接著封存確定沒人要的儲存庫,最後針對逾期沒人回應的權限直接收回,過程中也用自訂屬性(custom properties)標記可以豁免檢查的儲存庫與負責人。

這個系統在設計上採用兩個很明確的原則:一是「預設安全」,複核逾期沒人回應就直接收回權限,不會因為沒人處理而放著不管;二是「絕不真的刪除」,確定要清理的儲存庫一律封存而非刪除,之後還能救回來。因為組織規模大,Evergreen 呼叫 GitHub API 時也會刻意放慢速度、分批處理,避免一次打爆平台的流量限制。

這篇文章講的是 GitHub 公司內部怎麼管理自己龐大組織的存取權限,比較偏工程維運與資安管理的產業面議題,跟小朋友學寫程式沒有直接關聯。不過「與其每次人工檢查,不如寫一套程式自動幫你做」這個思維,其實正是程式設計最實用的價值之一,家長和孩子都可以從中體會自動化能解決哪些重複又容易出錯的工作。

開發工具資安自動化

其他新聞