用 Cloudflare Zero Trust 保護 Ghost 後台管理頁面
只需幾分鐘設定,讓 Ghost /ghost 路徑在進入前必須通過 Cloudflare Email OTP 驗證,免費且不影響讀者瀏覽。
Ghost 後台(/ghost)是整個部落格的核心,一旦被暴力破解或滲透,所有內容與設定都會曝露。本文介紹如何用 Cloudflare Zero Trust 在後台前面加上一層身份驗證,讓只有通過驗證的人才能進入 Ghost Admin。
什麼是 Cloudflare Zero Trust?
Cloudflare Zero Trust(前身為 Cloudflare Access)是 Cloudflare 提供的身份驗證閘道,可以保護任何放在 Cloudflare 後面的路徑。它的運作方式很簡單:
- 使用者訪問受保護的路徑
- Cloudflare 跳出登入頁面,要求身份驗證
- 驗證通過後才放行到你的應用程式
對 Ghost 而言,我們只需保護 /ghost 路徑,讀者正常瀏覽文章完全不受影響。
事前準備
- 網域已使用 Cloudflare 管理(NS 指向 Cloudflare)
- 一個 Cloudflare 帳號
Step 1:開啟 Cloudflare Zero Trust
- 前往 Cloudflare Zero Trust Dashboard
- 選擇你的帳號
- 第一次使用需要設定一個 Team name(例如
myblog),這會成為驗證頁面的子網域(myblog.cloudflareaccess.com) - 選擇免費方案(Free)即可
Step 2:建立 Access Application
你可以透過 Cloudflare API 或 Dashboard 操作。以下是 API 的請求格式(需先取得你網域的 Zone ID):
POST /zones/ZONE_ID/access/apps
{
"type": "self_hosted",
"name": "Ghost Admin",
"domain": "yourdomain.com/ghost",
"session_duration": "24h",
"http_only_cookie_attribute": true,
"enable_binding_cookie": true
}
或直接在 Dashboard 操作:
- 進入 Zero Trust → Access → Applications
- 點選 Add an application → Self-hosted
- Application name:
Ghost Admin - Application domain:填入
yourdomain.com/ghost - Session duration:
24 hours - 儲存
Step 3:建立 Access Policy
Policy 決定誰可以通過驗證。最簡單的做法是用 Email OTP,只允許特定 Email 進入:
POST /zones/ZONE_ID/access/apps/APP_ID/policies
{
"name": "Allow Owner",
"decision": "allow",
"precedence": 1,
"include": [
{ "email": { "email": "[email protected]" } }
]
}
Dashboard 操作方式:
- 在剛建立的 Application 裡點選 Add a policy
- Policy name:
Allow Owner - Action:Allow
- 在 Include 區塊新增規則:Emails → 填入你的 Email
- 儲存
實際效果
設定完成後,訪問 /ghost 路徑時,會先看到 Cloudflare Access 的登入頁面,要求輸入 Email:

輸入 Email 後,Cloudflare 會發送一封包含 6 位數驗證碼的信件:

輸入驗證碼後才會進入 Ghost 後台。Session 預設 24 小時,期間同一瀏覽器不需要重新驗證。
注意事項
- 不影響讀者:Zero Trust 只保護
/ghost路徑,前台文章頁面完全正常 - Ghost 本身的登入不受影響:通過 Cloudflare 驗證後,仍需輸入 Ghost 帳號密碼,形成雙層保護
- 免費方案限制:Cloudflare Zero Trust 免費方案每月最多 50 位使用者,個人部落格完全足夠
- Team name 不可修改:設定後無法更改,請謹慎選擇
結語
整個設定只需幾分鐘,完全免費,卻能大幅提升後台的安全性。尤其對放在公開網路上的 Ghost 部落格來說,這是一個非常值得加上的防護層。