Ovlt: 一款輕量級、由 Rust 驅動的自託管身份驗證伺服器
身份驗證與授權基礎設施通常是系統中最關鍵但也最繁瑣的部分。對於想要避免託管平台沉重開銷或 JVM 解決方案複雜性的團隊來說,尋找一個輕量級、安全且可自託管的替代方案是一項挑戰。
Ovlt 是一款自託管的 OAuth2 與 OIDC 伺服器,旨在提供專業級的身份驗證基礎設施,且不具備「平台臃腫」的問題。Ovlt 完全使用 Rust 編寫,專注於高性能、嚴格的租戶隔離以及極小的資源佔用——通常僅需 20MB 的 RAM 即可運行。
核心架構與關鍵特性
Ovlt 以單一 Rust 二進位檔的形式交付,整合了現代身份驗證的核心組件:OAuth2、用戶管理、多租戶架構以及多因素身份驗證 (MFA)。
透過 PostgreSQL RLS 實現租戶隔離
Ovlt 在架構上最重大的選擇之一是如何處理多租戶架構。Ovlt 並非僅僅依賴應用程式層級的邏輯來過濾數據,而是利用了 PostgreSQL Row-Level Security (RLS)。
在此模型中,每個請求都會解析出租戶上下文,接著開啟一個租戶範圍的事務 (transaction)。資料庫本身會強制執行邊界,確保在查詢執行之前,來自其他租戶的資料列對應用程式程式碼是不可見的。這顯著降低了租戶間數據洩漏的風險,將安全邊界提升到了數據層。
安全性與「符合審計」的加密技術
為了應對安全審計與 CTO 的疑慮,Ovlt 使用 hefesto crate 來採用雙信封加密策略。敏感欄位——例如電子郵件、TOTP 密鑰以及 SMTP 密碼——在進入資料庫之前,都會先經過 AES-256-GCM 加密保護。
透過使用文件化的密鑰層級結構與透明的加密層,Ovlt 允許安全團隊審計數據在靜態存放時是如何被加密的確切機制。這種「零知識」方法確保了即使資料庫遭到入侵,敏感欄位仍然保持封閉狀態。
透過 TUI 進行管理
與許多需要複雜 Web 管理控制台的身份驗證伺服器不同,Ovlt 提供了一個 終端用戶介面 (TUI)。此 TUI 用於管理身份驗證伺服器的整個生命週期,包括:
- 租戶與用戶創建
- 客戶端與角色管理
- Passkey 與會話 (session) 配置
- 每個租戶的 SMTP 設定與 Google/GitHub IdP 整合
- 審計日誌
性能與資源效率
Ovlt 將自己定位為傳統身份驗證提供者的輕量級替代方案。透過避免使用 JVM、Redis 與各種 sidecar 程序,它實現了比單個瀏覽器分頁還要小的記憶體佔用。這使其成為邊緣部署或資源受限環境(即每一 MB 的 RAM 都至關重要)的理想選擇。
開源與社群
Ovlt 在 ELv2 授權條款下提供原始碼,並採取公開開發模式。該專案鼓勵社群貢獻,且其路線圖 (roadmap) 對公眾開放檢視,讓開發者可以清楚看到專案的發展方向。
雖然社群建議將其與 Kanidm 等其他輕量級身份管理工具進行比較,但開發者目前專注於開放的路線圖與根據用戶回饋進行迭代開發。