SAAS租户隔离技术
总结
对比其他多租户隔离方案
| 方案 | 优势 | 劣势 | 适用场景 |
|---|---|---|---|
| 租户ID隔离 | 成本低、扩展性强、运维简单 | 依赖严格权限控制,逻辑隔离风险略高 | 海量租户(如SaaS平台) |
| Schema隔离 | 物理隔离安全性高 | 资源浪费、管理复杂(数千租户即不可行) | 高安全需求、中小规模租户 |
| 独立数据库隔离 | 完全物理隔离,安全性最高 | 成本极高、扩展性差 | 金融/医疗等强合规场景 |
Salesforce 的多租户架构采用的是 逻辑隔离(租户ID隔离),而非物理隔离(如独立数据库或Schema)。所有租户的数据存储在共享的数据库和Schema中,通过租户唯一标识(如 Org ID)实现数据隔离。以下是详细说明:
Salesforce 多租户架构的核心设计
-
数据存储模式
- 共享数据库 + 共享Schema:所有租户(即客户组织)的数据存储在同一个数据库的同一Schema中,通过
Org ID字段区分不同租户的数据。 - 元数据驱动:表结构动态扩展(通过元数据表定义对象和字段),而非为每个租户创建独立表或Schema。
- 共享数据库 + 共享Schema:所有租户(即客户组织)的数据存储在同一个数据库的同一Schema中,通过
-
隔离机制
- 租户标识(Org ID):每条记录均包含
Org ID,所有查询强制附加WHERE Org_ID = ?条件,确保租户数据不可见其他租户。 - 行级权限控制:通过数据库视图或中间件(如ORM)自动注入租户过滤条件。
- 租户标识(Org ID):每条记录均包含
为何选择租户ID隔离而非Schema/数据库隔离?
-
资源利用率高
- 共享硬件和数据库实例,降低硬件成本,适合海量租户(Salesforce 支持数百万租户)。
- 避免为每个租户维护独立Schema或数据库的管理开销。
-
扩展性与维护性
- 动态扩展:新租户无需创建Schema或表,直接插入数据即可。
- 统一运维:备份、索引优化、版本升级等操作可集中处理。
-
性能优化
- 通过全局索引(包含
Org ID)优化查询性能。 - 数据分区(如按
Org ID分片)平衡负载,避免热点问题。
- 通过全局索引(包含
如何保障数据安全?
-
强制访问控制
- 所有数据库操作必须携带
Org ID,由平台框架(非租户代码)保证条件注入。 - 示例:查询
SELECT * FROM Account WHERE Org_ID = '00Dxxx' AND ...。
- 所有数据库操作必须携带
-
元数据权限模型
- 通过 Profile、Permission Set 等机制控制用户对数据的访问权限,即使在同一租户内也可精细化控制。
-
审计与加密
- 记录所有数据访问日志,支持审计追踪。
- 敏感数据加密存储(如字段级加密)。
总结
Salesforce 的租户ID隔离方案通过 逻辑隔离 + 严格权限控制,在成本、扩展性和安全性之间取得了平衡。这种设计适合需要支持超大规模租户且对成本敏感的SaaS平台。若您的系统需要更高的隔离级别(如合规要求),可结合业务场景选择 Schema 或独立数据库隔离。

浙公网安备 33010602011771号