Trust Boundary
信任邊界的意義是明確定義不同區域之間的責任與信任條件,並規定每一次邊界跨越所需出示的通行證等級。首先排除「內網就是安全」的思維,系統的安全模型應該怎麼規劃。
邊界等級
如果粗略的分割,大概有三個等級:
| 信任等級 | 定義 | 適用對象 |
|---|---|---|
| L0 : Public | 任何可連線的外部來源 | 使用者瀏覽器、第三方 Webhook。 |
| L1 : Restricted | 授權的外部系統或商業夥伴 | 合作平台、外部遊戲供應商伺服器。 |
| L2 : Isolated | 存放高價值資產的內部系統 | 內部的特殊服務、內部系統才能查看的資料庫 |
這樣的分級,確保系統不會因為「位置相近」或「網路可達」而自動提升信任等級。
身分與環境
除了公共網路、私有網路,也依賴「身分來源」與「執行環境」。
開發環境與正式環境在身分體系上完全分離,不同環境的認證服務使用不同的簽章金鑰匙與憑證鏈,開發模式的 Token 會在產品環境被拒絕。避免了測試憑證、開發工具或誤用設定滲入上線的系統。
系統中的每一個客戶都被視為一個獨立的邏輯信任邊界。即使多個遊戲或服務部署於同一組基礎設施,其資料存取與操作權限,仍被嚴格限制在所屬客戶範圍內。客戶邊界的優先級高於角色與服務類型,用以防止橫向影響與資料外洩。
越界行為與身分提升
當請求從低信任等級進入高信任等級時,系統不允許直接通行,而必須經過身分轉換與再驗證。
以反向代理為例子,客戶端永遠沒辦法直接觸碰到內部服務,網頁要先經過反向代理才能存取 REST API,然後 REST API 在幫忙查詢資料庫。但這還是「同一個身分,跨越多個網路區段」,因此要進一步導入身分提升的概念:
- Client 只帶 Session / Cookie
- 反向代理驗證後,轉換為 內部 JWT 或 Service Token
- 內部 API 只信任代理簽發的 Token
代理程式把「外部使用者身分」轉成「內部的身分」,或者說內部系統只接受 JWT 而不接受 Cookie,而 JWT 必須要有特定的簽章才能發放,把外部的 Cookie 轉換成內部可使用的 JWT,該過程也是身分提升。