在使用 Proxmox VE (PVE) 結合 Proxmox Backup Server (PBS) 進行虛擬機備份時,常會遇到安全性、身份驗證及權限管理等問題。以下記錄了一次完整的 PBS 架構安全優化過程,包含中間的繞路與最終穩定解法,供參考。
🎯 架構設計初衷
PBS 須對外開放端口以便遠程備份與集中管理,但同時需要限制超級用戶(root)暴露在公網。目標是讓 root 僅用於管理,所有備份操作均交由低權限帳號執行,以降低風險。
🔥 第一階段:使用超級用戶直接執行備份
最初,PVE 直接使用 PBS 的 root 帳號執行備份,操作簡單且無報錯。然而,這種方式的問題在於:
- 超級用戶權限過高,一旦外洩風險極大。
- 即使啟用兩步驗證(TFA),若密碼被攻擊,管理界面仍有風險。
🌀 第二階段:嘗試使用 API Token(失敗經驗)
接著,測試透過 PBS 提供的 API Token 功能,計劃在 root 帳號下創建專用 token,只賦予最少的 Datastore 備份權限。理論上這樣可以讓主帳號啟用兩步驗證,同時 token 維持精簡權限。
然而,在部分舊版 PBS 或 PVE 環境中,存在以下錯誤:
backup owner check failed (root@pam!token-name != root@pam)
這表示 PBS 嚴格區分 token 身份與主帳號,無法自動視為相同 owner,導致驗證失敗。這是早期版本已知限制,尚未完善 token 與 owner 驗證邏輯。
🔎 第三階段:建立獨立備份專用帳號
為了解決上述問題,最終方案改為在 PBS 中額外創建一個獨立備份專用帳號(如「backup-user」),只授予必要的備份、驗證、校驗等權限,且不啟用兩步驗證,避免因 TFA 導致 PVE 認證失敗。
此時,PVE 配置中使用該專用帳號連接 PBS。但此時仍遇到報錯:
backup owner check failed (backup-user != root@pam)
原因是,所有虛擬機在默認情況下,owner 設置為 root 帳號,與備份帳號身份不一致。
🟢 最終方案:修改 VM owner
為完全解決驗證失敗問題,決定將所有虛擬機的 owner 改為專用備份帳號,從而實現身份一致性。操作示例:
for vmid in <id1> <id2> <id3> ...; do
qm set $vmid --owner backup-user
done
修改後可使用以下命令驗證:
for vmid in <id1> <id2> <id3> ...; do
echo -n "VM $vmid: "
qm config $vmid | grep owner
done
完成後,PBS 即可正常執行備份,錯誤完全消失。
✅ 架構總結
- PBS 超級用戶:啟用兩步驗證,僅限管理用途,不作備份認證使用。
- PBS 備份帳號:擁有精簡備份權限,不啟用兩步驗證,用於 PVE 自動備份操作。
- VM owner 統一:所有虛擬機修改為備份專用帳號作 owner,確保身份驗證成功。
- 高強度密碼:備份帳號使用複雜密碼,增加暴力破解成本。
- 網路限制:結合防火牆策略限制 PBS 對外端口來源,加強整體安全性。
💬 經驗總結
- 如果 PBS 或 PVE 版本較舊,token 驗證機制不完善時,使用獨立帳號搭配修改 VM owner 是最穩定、可持續的解決方案。
- VM owner 一旦調整完成,後續無需再次更改,且架構能長期穩定運行。
- 建議新建虛擬機時即指定 owner,避免遺漏,後續維護更簡單。
⭐ 建議
- 不需要執著於 token,如果版本或架構無法完全支持,可直接採用專用帳號方案,既安全又兼顧穩定性。
- 定期審核 PBS 帳號權限與密碼安全,保持最小權限原則。
- 適當限制 PBS 網路訪問來源,實現多層次防護。