☁Zero Trust 上手指南
繁體中文
Telegram Cloudflare 文件 ↗

模組 4 — ZTNA:用 Access 釋出私有應用

目標: 讓一個內部應用可從任何地方安全訪問——無需 VPN、無需開放任何入站防火牆埠——並精確控制誰能訪問。

👤 誰來做 應用負責人 + 安全團隊
⏱️ 用時 約 60 分鐘
🎯 完成後你將擁有 一個釋出在真實網址上的私有應用,僅你放行的人可訪問
✋ 開始前 模組 1–3 已完成;一個可測試的私有 Web 應用(如內部 wiki、Grafana、開發工具),執行在你可控之處;一臺能訪問該應用的伺服器/虛擬機器

🧭 原理: 你在應用旁執行一個名為 cloudflared 的小程式。它向 Cloudflare 建立一條安全的僅出站連線(“Tunnel”)——因此你永遠不必把應用暴露到網際網路。然後 Access 在其前面加上一道登入校驗。

流程:(A) 建立 Tunnel →(B) 連線應用 →(C) 新增 Access 應用 →(D) 編寫策略 →(E) 測試 →(F) 構建可複用的組。


A 部分 — 建立 Tunnel

  1. 👉 Zero Trust → Networks → Tunnels。
  2. 👉 點選 Create a tunnel。
  3. 👉 選擇 Cloudflared → Next。
  4. ⌨️ 按位置命名,如 datacenter-1 → Save tunnel。

📺 你會看到: 一個 “Install and run a connector” 頁面,含各作業系統的命令,且已內建一長串安裝令牌。

  1. 👉 選擇你伺服器作業系統對應的選項卡(Windows / macOS / Debian / Red Hat / Docker)。
  2. 👉 複製顯示的命令——它已包含你的唯一令牌。

⚠️ 注意: 該命令含有一個秘密令牌。像對待密碼一樣對待它;不要貼上進聊天或工單。


B 部分 — 連線你的應用

B1 步 — 在伺服器上執行聯結器

  1. 👉 登入到能訪問你應用的伺服器/虛擬機器。
  2. 👉 貼上並執行你複製的命令。例如在 Debian/Ubuntu 上大致如下:
    curl -L https://pkg.cloudflare.com/install.sh | sudo bash   # 若尚未安裝 cloudflared
    sudo cloudflared service install eyJhIjoiZXhhbXBsZS...      # 你的令牌
    
  3. 📺 回到控制台,隧道的 Connector status 變為 Connected / Healthy(約 30 秒)。

✅ 檢查點: 控制台顯示你的聯結器為 Healthy。點選 Next。

B2 步 — 告訴 Cloudflare 你的應用在哪(公共主機名)

現在把一個公共網址對映到你的內部應用。

  1. 📺 你在 Route tunnel / Public Hostnames 步驟。
  2. 👉 點選 Add a public hostname 並填寫:
    欄位 示例 含義
    Subdomain wiki 使用者將輸入的名字
    Domain yourcompany.com 你 Cloudflare 賬戶裡的域名
    Type HTTP cloudflared 在本地如何訪問你的應用
    URL localhost:3000 應用在該伺服器上執行的位置
  3. 👉 點選 Save tunnel。

📺 你會看到: wiki.yourcompany.com 現已釋出,並被代理到你的內部應用。

💡 Cloudflare 裡還沒有域名? 你需要新增一個域名(zone)才能用自有主機名做自託管 Access 應用。請管理員新增域名,或用你已在 Cloudflare 管理的域名。

✅ 檢查點: 訪問 https://wiki.yourcompany.com——你能開啟你的應用(此刻它對任何人開放;下一部分會鎖定它)。


C 部分 — 新增一個 Access 應用

這會在 wiki.yourcompany.com 前面加上登入校驗。

  1. 👉 Zero Trust → Access controls → Applications。
  2. 👉 點選 Create new application(新增應用)。
  3. 👉 選擇 Self-hosted and private。

📺 你會看到: 一個應用配置頁面。

  1. ⌨️ 應用名稱: Internal Wiki。
  2. 👉 點選 Add public hostname,填入你剛釋出的相同主機名:子域 wiki,域名 yourcompany.com。
  3. 👉 將 Session Duration 設為 24h(敏感應用用更短,如 1h)。
  4. 👉 在認證下選擇模組 2 的身份提供商。
    • 💡 若只有一個 IdP,開啟 Apply instant authentication 讓使用者跳過選擇介面。
    • 💡 開啟 Authenticate with Cloudflare One Client,讓已登入的 WARP 使用者無縫進入。
  5. 先別點 Create——先在 D 部分新增策略(嚮導支援內聯新增),或先點 Create 再隨即新增策略。兩者均可。

D 部分 — 編寫訪問策略(誰被允許)

  1. 👉 在應用中進入 Policies 區 → Add a policy(或 Create new policy)。

  2. ⌨️ 策略名稱: Allow — Employees on healthy devices。

  3. 👉 Action: Allow。

  4. 👉 構建規則:

    規則型別 選擇器 運算子 取值
    Include Emails ending in — @yourcompany.com
    Require Device Posture in Disk encrypted(來自模組 3)

    (若模組 2 中你的 IdP 群組測試正常,可改用 Include → IdP Groups → Engineering 以獲得更嚴格控制。)

  5. 👉 Save 策略,然後 Save/Create 應用。

💡 最佳實踐——加一道預設拒絕網: 再建一條更低優先順序的策略,名為 Block — Everyone,Action = Block、Include = Everyone。由於策略自上而下讀取,Allow 會先匹配到你的人,其餘人則命中 Block。

⚠️ 注意: 敏感應用絕不要用 Bypass 動作——它會徹底移除登入校驗。


E 部分 — 測試(最有成就感的部分)

測試 1 — 被允許的使用者

  1. 👉 在你的試點裝置上(以被允許的員工身份登入),開啟 https://wiki.yourcompany.com。
  2. 📺 你被送到企業登入(或因即時認證 + WARP 會話而直接進入)。登入後,應用載入。✅

測試 2 — 被阻止的使用者

  1. 👉 在無痕視窗用未被允許的人(或個人郵箱)登入同一網址。
  2. 📺 你看到 Cloudflare 的 “You don't have access” 攔截頁。✅

測試 3 — 檢視日誌

  1. 👉 Zero Trust → Logs → Access(或 Access → Logs)。
  2. 📺 你能看到兩次嘗試:一次 Allowed、一次 Blocked,各自帶使用者郵箱和決策所依據的策略。

✅ 檢查點: 對的人進得來、錯的人被擋住,且你能在日誌裡看到。你剛剛替代了這個應用的 VPN。 🎉


F 部分 — 構建可複用的組(避免重複勞動)

現在你的規則是寫在一個應用裡的。當你新增第 2、3、10 個應用時,你不會想重新鍵入它們。先一次性構建一個可複用的 Access 組。

  1. 👉 Zero Trust → Access controls → Policies → Groups(或 Reusable components → Groups)。
  2. 👉 點選 Add a group。
  3. ⌨️ 名稱:Secure employees。
  4. 👉 一次性新增規則,例如:
    • Include → Emails ending in → @yourcompany.com
    • Require → Device Posture → Disk encrypted
  5. 👉 點選 Save。

此後在任何應用的策略裡,只需選擇 Include → Access Groups → Secure employees。改一次組,所有應用同步更新。

💡 提示: 也可建立可複用的 Lists(Zero Trust → Reusable components → Lists),用於如 Offboarding 郵箱列表或已批准的裝置序列號——然後在所有應用中 Exclude → Emails in list → Offboarding。


✅ 模組 4 完成!

你現在擁有:

  • ✅ 一個經 Tunnel 釋出的私有應用(未開放任何入站埠)
  • ✅ 一條放行對的人、阻止其他人的 Access 策略
  • ✅ 一次可用的放行/阻止測試,且日誌可見
  • ✅ 一個可套用到後續應用的可複用組

想要更多應用型別?

  • SaaS 應用(Salesforce 等): Applications → Create new application → SaaS → 經 SAML/OIDC 整合。
  • SSH / RDP 伺服器: 經同一 Tunnel 釋出,並用 Access for Infrastructure(可選瀏覽器渲染,無需客戶端)。
  • 非受管裝置回退: 保留對健康裝置的 Allow,並加一條 Gateway → Isolate 規則(模組 5),讓高風險裝置在安全的遠端瀏覽器中開啟應用,而非被阻止。

快速排障

問題 解決辦法
應用網址顯示 Cloudflare 錯誤而非你的應用 聯結器不健康,或本地 URL/埠寫錯——複查 B 部分
所有人(包括你)都被阻止 你的 Include 規則太窄,或 Block 策略在 Allow 之上——修正順序(D 部分)
群組規則永不匹配 模組 2 的 Test 沒帶出群組——先修 IdP
已放行卻一直要求登入 會話時長太短,或 Cookie 被攔——調高會話時長
“DNS record already exists” 該主機名已有記錄;刪除它或換一個子域

🔌 想全面瞭解聯結器? 本模組僅用一條 Cloudflare Tunnel 連線單個應用。要連線整個子網、做站點間/裝置網狀,或讓整個辦公室上線,見 模組 4b — 聯結器:Tunnel、Mesh 與 Appliance。

👉 下一步:模組 4b — 聯結器 · 或 模組 5 — Gateway

模組 4b 深入講解 Tunnel、Mesh 與 Cloudflare One Appliance。或直接進入 Gateway 開始過濾流量。