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
