SaaS “可配置”和“多租戶”架構的幾種技術實現方式
1、資料儲存方式的選擇
多租戶(Multi-Tenant ),即多個租戶共用一個例項,租戶的資料既有隔離又有共享,說到底是要解決資料儲存的問題。
常用的資料儲存方式有三種。
方案一:獨立資料庫
一個Tenant,一個Database“的資料儲存方式。隔離級別最高、最安全,但成本也高。
優點:
a.為不同租戶提供獨立資料庫,有助於簡化資料模型的擴充套件設計,滿足個性化需求;
b.資料恢復簡單;
缺點:增大了資料庫的安裝數量,購置和維護成本高;
方案二:共享資料庫,隔離資料架構
多個租戶或所有租戶共享Database,但一個Tenant,一個Schema的方式。
優點:
a.一定程度的邏輯資料隔離(並非完全),可滿足較高程度的安全性保障;
b.每個資料庫,可支援更多租戶數量;
缺點:
a.恢復資料較困難,因為將牽扯到其他租戶資料;
b.跨租戶統計資料,實現難度大;
方案三:共享資料庫,共享資料架構
一種租戶共享同一個Database、同一個Schema,而另行通過TenantID區分租戶資料的方式。
優點:
a.每個資料庫可支援租戶數量多,維護和購置成本低;
缺點:
a. 隔離級別低,安全性低,開發時需做大量安全開發工作;
b. 逐表逐條備份和還原資料,資料備份和恢復困難。
三種資料儲存方案的比較
但究竟選擇何種方式,則取決於產品定價策略和租戶對資料安全的接受程度。
2. 系統安全性設計
系統級:
A. 使用HTTPS傳輸協議,以SSL(Security Socket Layer)交換資料,加強通訊安全
B. 使用數字簽名,防止傳輸過程被篡改;
C. 使用DES資料加密演算法,設計使用者身份識別;
D. 定時備份業務資料;
程式級:
A. 許可權配置(功能許可權、資料許可權等)
B. 客戶端輸入校驗,防止JS和XXS攻擊、SQL注入等;
C. 輔助安全設計,如密碼控制元件、圖片驗證、手機驗證等。
3. 租戶管理
註冊、訂購、計費等管理。
註冊
Tenant:租戶
User: 租戶下 的使用者,同一租戶下可以有多個使用者;
Tenant的status屬性,用於定義租戶狀態(待稽核、已稽核、啟用、禁用、取消),賦予租戶能否登陸的許可權。
訂購
PricePolicy:價格策略,支援按時間(年、月、日)、次數計價,以unit表示;
Subsciber: 訂購記錄,記錄租戶選用了何種價格策略,以及服務期限或服務次數。
計費
Journal:流水賬,記錄租戶使用服務的日誌,用於生成賬單和報表;
4、資料隔離
為每個需要隔離的業務表加上Tenant_ID欄位,以實現租戶資料間的隔離,這是最通常的做法。
本文轉自連結:https://www.jianshu.com/p/c11b19fc8110