iT邦幫忙

2025 iThome 鐵人賽

DAY 17
0
Cloud Native

江湖在走,Cloudflare 要懂,懂得天天吃板橋湳雅夜市系列 第 17

第17天,Cloudflare Access 零信任閘道 / 小楊脆腸 | 30天板橋湳雅夜市

  • 分享至 

  • xImage
  •  

在現代企業與開發團隊中,內部系統、測試環境與後台管理工具,往往需要被嚴格保護。傳統做法可能是 VPN 或 IP 白名單,但這些方式維護成本高,使用體驗也不佳。

Cloudflare Access 就是 Cloudflare Zero Trust 平台中的核心產品之一,它提供了 「零信任存取控制」 的能力,讓你可以像 Google BeyondCorp 一樣,不用 VPN,就能安全管控內部應用的存取權限。


為什麼需要 Cloudflare Access?

  1. 零信任模型 (Zero Trust)

    • 傳統 VPN 預設「進到內網就全部信任」。
    • 零信任架構則是「每一次存取都要驗證身份」。
  2. 細粒度控制

    • 可以設定「誰能存取哪個應用程式」,支援 Email、群組、IdP(身份提供者)整合。
  3. 取代 VPN

    • 不需要在機器上安裝 VPN,用瀏覽器或 Cloudflare WARP 就能完成安全連線。
  4. 整合身份驗證

    • Cloudflare Access 可以和 Google Workspace、Azure AD、Okta 等 IdP 整合,驗證員工身份後才允許存取。
  5. 審計與紀錄

    • 每次登入、存取都會記錄,方便稽核。

Cloudflare Access 架構原理

  1. 應用程式放在 Cloudflare 網路後面(DNS 設定到 Cloudflare Proxy)。
  2. 使用者嘗試存取受保護的 URL。
  3. Cloudflare Access 攔截請求,檢查使用者是否已驗證。
  4. 跳轉到身份驗證頁面(例如 Google、GitHub、Azure AD)。
  5. 驗證通過後,Cloudflare 發一個 JWT Token(Access Token)給瀏覽器。
  6. 應用程式收到請求時,可以檢查 JWT Token 來確定使用者身份與權限。

Cloudflare Access Flow
來源:Cloudflare Access Docs


實際範例:保護一個內部網站

假設我們有一個內部管理網站:

https://admin.example.com

我們希望:

  • 只有公司成員(@example.com 的 Email)可以存取
  • 其他人一律拒絕

步驟 1:設定應用程式

進入 Cloudflare Zero Trust DashboardAccessApplicationsAdd an application

選擇:

  • Application type: Self-hosted
  • Application name: Admin Portal
  • Subdomain: admin.example.com

步驟 2:設定存取規則 (Access Policy)

建立一個 policy,例如:

  • Rule name: Allow Example Staff
  • Action: Allow
  • Include → Email domain → @example.com

再加一個規則:

  • Rule name: Default Deny
  • Action: Deny
  • Everyone

步驟 3:整合身份提供者 (IdP)

可以選擇:

  • Google Workspace
  • Azure AD
  • GitHub
  • Okta
  • One-time PIN (寄驗證碼到 Email)

例如選擇 Google Workspace,這樣員工只要用 Google 帳號登入即可。


步驟 4:使用者體驗

  1. 員工打開 https://admin.example.com
  2. 會被導向 Cloudflare Access 的登入頁
  3. 使用 Google 帳號登入並驗證通過
  4. 回到原本網站,並帶有 Cloudflare Access 發的 JWT Token
  5. 應用程式可以選擇驗證這個 JWT,確保存取合法

範例:驗證 Access Token(Node.js)

後端應用程式可以驗證 Cloudflare Access JWT,以下是 Node.js 範例:

import jwt from "jsonwebtoken";
import jwksClient from "jwks-rsa";
import express from "express";

const app = express();

// Cloudflare Access 發行的 JWKS URL
const client = jwksClient({
  jwksUri: "https://yourteam.cloudflareaccess.com/cdn-cgi/access/certs",
});

function getKey(header, callback) {
  client.getSigningKey(header.kid, (err, key) => {
    const signingKey = key.getPublicKey();
    callback(null, signingKey);
  });
}

app.get("/secure", (req, res) => {
  const token = req.headers["cf-access-jwt-assertion"];
  if (!token) return res.status(401).send("No token provided");

  jwt.verify(token, getKey, {}, (err, decoded) => {
    if (err) return res.status(403).send("Invalid token");
    res.send(`Hello ${decoded.email}, welcome to the admin portal!`);
  });
});

app.listen(3000, () => console.log("Server running on port 3000"));

這樣就能確保只有通過 Cloudflare Access 驗證的人能訪問 /secure API。


小結

Cloudflare Access 提供了一個「無需 VPN 的零信任存取方案」,重點特性包含:

  1. 用戶身份驗證(支援多種 IdP)
  2. 細粒度存取控制(依據 Email、群組、IP、地區等)
  3. 統一的安全入口(所有應用透過 Access 保護)
  4. 方便的審計與日誌

應用場景:

  • 保護內部後台、測試環境
  • 限定團隊成員存取的工具(Jenkins、Grafana、Kibana)
  • 保護 API 與內部文件

它既能簡化維運,又能提升安全性,是傳統 VPN 的替代方案。

三和夜市小楊脆腸 南亞分店

  • 店名:三和夜市小楊脆腸 南亞分店
  • 地址:新北市板橋區南雅東路114號
  • 營業時間:晚上
  • Google Maps
  • 本系列地圖

https://ithelp.ithome.com.tw/upload/images/20251001/20163416BWWWIfL1gp.jpg

這家在三重三和夜市是排隊名店,有一次特別跑去吃小楊脆腸,結果才發現湳雅夜市就有,調味很鮮,脆腸超好吃,配菜都很讚

https://ithelp.ithome.com.tw/upload/images/20251001/201634164t9y7qYQeD.jpg


上一篇
第16天,Cloudflare Tunnel / 上海手撕雞小館 | 30天板橋湳雅夜市
下一篇
第18天,Cloudflare Gateway 裝置網路守門員 / 蚵仔之家 | 30天板橋湳雅夜市
系列文
江湖在走,Cloudflare 要懂,懂得天天吃板橋湳雅夜市18
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言