SAAS租户隔离技术


总结

对比其他多租户隔离方案

方案 优势 劣势 适用场景
租户ID隔离 成本低、扩展性强、运维简单 依赖严格权限控制,逻辑隔离风险略高 海量租户(如SaaS平台)
Schema隔离 物理隔离安全性高 资源浪费、管理复杂(数千租户即不可行) 高安全需求、中小规模租户
独立数据库隔离 完全物理隔离,安全性最高 成本极高、扩展性差 金融/医疗等强合规场景

Salesforce 的多租户架构采用的是 逻辑隔离(租户ID隔离),而非物理隔离(如独立数据库或Schema)。所有租户的数据存储在共享的数据库和Schema中,通过租户唯一标识(如 Org ID)实现数据隔离。以下是详细说明:


Salesforce 多租户架构的核心设计

  1. 数据存储模式

    • 共享数据库 + 共享Schema:所有租户(即客户组织)的数据存储在同一个数据库的同一Schema中,通过 Org ID 字段区分不同租户的数据。
    • 元数据驱动:表结构动态扩展(通过元数据表定义对象和字段),而非为每个租户创建独立表或Schema。
  2. 隔离机制

    • 租户标识(Org ID):每条记录均包含 Org ID,所有查询强制附加 WHERE Org_ID = ? 条件,确保租户数据不可见其他租户。
    • 行级权限控制:通过数据库视图或中间件(如ORM)自动注入租户过滤条件。

为何选择租户ID隔离而非Schema/数据库隔离?

  1. 资源利用率高

    • 共享硬件和数据库实例,降低硬件成本,适合海量租户(Salesforce 支持数百万租户)。
    • 避免为每个租户维护独立Schema或数据库的管理开销。
  2. 扩展性与维护性

    • 动态扩展:新租户无需创建Schema或表,直接插入数据即可。
    • 统一运维:备份、索引优化、版本升级等操作可集中处理。
  3. 性能优化

    • 通过全局索引(包含 Org ID)优化查询性能。
    • 数据分区(如按 Org ID 分片)平衡负载,避免热点问题。

如何保障数据安全?

  1. 强制访问控制

    • 所有数据库操作必须携带 Org ID,由平台框架(非租户代码)保证条件注入。
    • 示例:查询 SELECT * FROM Account WHERE Org_ID = '00Dxxx' AND ...
  2. 元数据权限模型

    • 通过 Profile、Permission Set 等机制控制用户对数据的访问权限,即使在同一租户内也可精细化控制。
  3. 审计与加密

    • 记录所有数据访问日志,支持审计追踪。
    • 敏感数据加密存储(如字段级加密)。

总结

Salesforce 的租户ID隔离方案通过 逻辑隔离 + 严格权限控制,在成本、扩展性和安全性之间取得了平衡。这种设计适合需要支持超大规模租户且对成本敏感的SaaS平台。若您的系统需要更高的隔离级别(如合规要求),可结合业务场景选择 Schema 或独立数据库隔离。

参考资料

posted @ 2025-05-04 11:44  向着朝阳  阅读(67)  评论(0)    收藏  举报