# 實踐 Zero Trust:使用 Cloudflare Access 整合 GitHub Organization 實現精準存取控制 [TOC] --- 在當前「零信任」(Zero Trust)的安全架構下,驗證使用者身份不再僅僅依賴於密碼。對於開發團隊而言,利用現有的 GitHub Organization 成員名單作為存取門神,是既安全又高效的方案。 本文將詳細介紹如何透過 Cloudflare Access 整合 GitHub OAuth,確保您的內部工具或服務「僅限特定組織成員」存取,並避開常見的設定陷阱。 ## 一、 為什麼選擇 Cloudflare Access + GitHub? 對於開發者而言,維持一個獨立的員工帳號系統(如 LDAP 或 AD)成本極高。而 GitHub 組織通常已經定義好了團隊成員與權限。透過 Cloudflare Access,我們可以在不需要修改任何程式碼的情況下,為任何 Web 服務加上一層強大的身份驗證。 ## 二、 Step-by-Step 設定流程 1. 在 GitHub 端建立 OAuth 應用程式 - 首先,我們需要讓 GitHub 信任來自 Cloudflare 的驗證請求。 - 登入 GitHub,前往組織或個人設定中的 Settings > Developer settings > OAuth Apps。 -  - 點擊 New OAuth App。 -  - 填寫以下資訊: - **Application name:** 建議填寫 Cloudflare Access - [Your Team Name]。 - **Homepage URL:** 填入您的 Cloudflare Team Domain(例如 https://<your-lab>.cloudflareaccess.com)。 - **Authorization callback URL:** 這是最關鍵的欄位,格式固定為: https://<your-team-name>.cloudflareaccess.com/cdn-cgi/access/callback - 點擊 Register application。 - 在設定頁面中,記下 Client ID,並點擊 Generate a new client secret。請務必立即保存此密鑰,關閉頁面後將無法再次查看。 -  2. 在 Cloudflare 中設定身分提供者 (IdP) - 接著,我們將 GitHub 的憑證交給 Cloudflare。 - 進入 Cloudflare Zero Trust 控制台。 -  - 前往 Integrations > Identity providers。 -  - 在 Login methods 區塊點擊 Add new,並在清單中選擇 GitHub。 -  - 填入剛才從 GitHub 取得的 Client ID 與 Client Secret。 -  - 點擊 Save。 - 如果您為 GitHub 組織管理員,請按下完成設定,並完成 GitHub 驗證。 -  3. 關鍵步驟:授權組織存取 (Organization Access) - 這是許多人會忽略的一步。如果您的組織開啟了第三方存取限制,Cloudflare 將無法讀取成員名單,導致驗證失敗。 - 在 GitHub 組織頁面中,前往 Settings > Third-party access > OAuth application policy。 - 確認 Policy 是否為 Access restricted。 - 如果 Cloudflare 的應用程式出現在 Pending requests,請點擊 Approve。 - 若未看到申請,請確保在 Cloudflare 設定 GitHub IdP 時,彈出的 GitHub 授權視窗中,您已針對特定組織點擊了 Grant。 4. 配置 Access 原則 (Policies) —— 避開邏輯漏洞 - 這是本文的核心。設定 Access 原則時,必須正確理解 Include(包含)與 Require(需要)的邏輯。 - ❌ 錯誤範例(會導致安全性漏洞): - 如果您在同一個原則中並列了兩個 Include 選取器: - Include: Emails (user@gmail.com) - Include: Login Method (GitHub) - 結果:任何擁有 GitHub 帳號的人都能進入,因為邏輯是「滿足其中一個即可(OR)」。 - ✅ 正確範例: - 如果您希望限制「特定組織」且「特定地區」,應如此設定: - 前往 Access > Applications,選擇您的應用程式。 - 在 Policies 分頁,新增一條原則(Action 設為 Allow)。 - Configure rules 設定如下: - Include (必須滿足其一): - Selector: GitHub Organization - Value: NZ-s-LAB (注意:必須填寫網址名稱 Slug,而非顯示名稱) - Require (強制滿足): - Selector: Country - Value: Taiwan - 範例 - 記得原則建立完後,要去需要啟用的應用程式加入原則及登入方式。 -  -  -  ## 三、 常見疑難排解 (Troubleshooting) 1. 出現 no such github organization 錯誤 檢查 Slug:GitHub 組織名稱不是顯示名稱。請查看網址 github.com/org-name ,這裡的 org-name 才是正確的填寫值。 檢查授權:回到 GitHub 檢查 OAuth App 是否被組織管理員批准。 ## 四、 總結 透過 Cloudflare Access 與 GitHub Organization 的整合,我們成功建立了一道強大的防線。這不僅解決了身份驗證的問題,更透過地理位置限制(Country Require)進一步縮小了攻擊面。 這種「配置即安全」的模式,正是現代資訊安全從業員應該掌握的利器。
×
Sign in
Email
Password
Forgot password
or
By clicking below, you agree to our
terms of service
.
Sign in via Facebook
Sign in via Twitter
Sign in via GitHub
Sign in via Dropbox
Sign in with Wallet
Wallet (
)
Connect another wallet
New to HackMD?
Sign up