1.1 多租户SaaS概述

1.1.1 多租户定义与核心特征

多租户(Multi-Tenancy)是SaaS架构的基石,指单一软件实例同时服务多个租户(Tenant),每个租户在逻辑上相互隔离,感知不到其他租户的存在。租户可以是企业、部门、项目组或独立用户,取决于业务模型。

特征 说明 与传统单租户对比
共享实例 所有租户共用同一套应用进程与数据库 单租户需为每个客户独立部署
逻辑隔离 通过租户ID(Tenant ID)区分数据与配置 单租户使用物理隔离(独立服务器)
可扩展性 新增租户无需重新部署,仅需注册与初始化 单租户扩展需重复部署流程
成本分摊 基础设施与运维成本由所有租户共同承担 单租户成本由单一客户全额承担
关键认知:多租户不是简单的"多个用户登录",而是租户级资源隔离与权限边界。鉴权拦截链路必须确保:一个租户的用户无法访问另一个租户的数据,即使两个租户使用相同的应用代码。

1.1.2 SaaS架构演进路线

SaaS架构从单租户到成熟多租户,通常经历四个阶段。理解演进路径有助于在鉴权设计中做出正确的架构取舍。

  1. 阶段一:单租户托管 — 每个客户独立部署一套应用+数据库,无共享逻辑。鉴权简单(仅用户级),但运维成本随客户数线性增长。
  2. 阶段二:共享应用+独立数据库 — 所有租户共用应用层,但每个租户拥有独立数据库。鉴权需在连接层区分数据源,租户隔离强但资源利用率低。
  3. 阶段三:共享应用+共享数据库(Schema隔离) — 同一数据库实例内,每个租户使用独立Schema。鉴权需在SQL执行前注入租户过滤条件,隔离性中等。
  4. 阶段四:共享应用+共享数据库(行级隔离) — 所有租户数据存储在同一表中,通过tenant_id列区分。鉴权拦截链路必须在请求入口、服务调用、数据访问三层强制校验租户上下文。
架构演进对鉴权的影响:阶段越靠后,对租户上下文传递和数据级权限拦截的要求越高。阶段四必须依赖统一的鉴权中间件,而非分散在各业务代码中。

1.1.3 租户隔离的核心挑战

多租户隔离不是单一维度的技术问题,而是数据、性能、安全、合规四维交织的复杂挑战。以下是SaaS架构中必须解决的五大核心挑战:

挑战维度 具体问题 典型风险
数据隔离 租户A的查询结果中混入租户B的数据 数据泄露、违反GDPR/等保
性能隔离 一个租户的慢查询拖慢所有租户的响应 服务质量下降、SLA违约
配置隔离 租户A修改了全局配置,影响租户B的业务逻辑 业务异常、功能错乱
密钥隔离 租户A的API密钥被用于访问租户B的资源 未授权访问、数据篡改
审计隔离 无法区分操作日志属于哪个租户 合规审计失败、责任追溯困难
常见误区:很多团队在初期只关注"数据隔离",忽略了密钥隔离和审计隔离。一旦SaaS产品通过API对外提供服务,密钥隔离缺失将直接导致租户越权攻击;而审计隔离缺失会在等保测评中直接判定为不合格。

1.1.4 多租户鉴权拦截链路全景

下图展示了多租户SaaS中完整的鉴权拦截链路,从请求入口到数据持久化,每一层都必须嵌入租户上下文校验:

多租户SaaS鉴权拦截链路全景 客户端请求 API网关 租户识别 + Token校验 鉴权中间件 租户上下文注入 业务服务 数据访问层(ORM/DAO) 自动注入 tenant_id 过滤条件 数据库(行级/Schema隔离) 数据按 tenant_id 物理/逻辑分离 审计日志服务 记录租户操作轨迹 租户配置中心 隔离的配置命名空间 鉴权拦截链路关键原则 ① 租户上下文必须在请求入口处识别,并贯穿整个调用链 ② 数据访问层必须自动注入租户过滤条件,禁止业务代码手动拼接 ③ 审计日志必须携带租户ID,确保操作可追溯

1.1.5 租户隔离策略对比

选择隔离策略时,需在隔离强度与资源效率之间做权衡。以下是三种主流策略的对比:

隔离策略 实现方式 隔离强度 资源效率 适用场景
独立数据库 每个租户一个数据库实例 ⭐⭐⭐⭐⭐ ⭐⭐ 金融、医疗等强合规行业
独立Schema 同一数据库,每个租户一个Schema ⭐⭐⭐⭐ ⭐⭐⭐ 中型企业SaaS,需一定隔离性
行级隔离 同一表,通过tenant_id区分 ⭐⭐⭐ ⭐⭐⭐⭐⭐ 通用SaaS,成本敏感型产品
实战建议:对于大多数SaaS产品,推荐采用混合策略——核心敏感数据(如支付、密钥)使用独立数据库或Schema,非敏感业务数据(如日志、配置)使用行级隔离。这样既满足合规要求,又控制基础设施成本。

1.1.6 本章小结

多租户SaaS的鉴权拦截链路设计,本质上是在共享基础设施上构建逻辑隔离边界。核心要点包括:

  • 租户识别必须在请求入口完成,并作为不可篡改的上下文传递到每一层。
  • 数据隔离策略的选择直接影响鉴权拦截的复杂度,行级隔离对中间件要求最高。
  • 密钥隔离和审计隔离是容易被忽视但必须覆盖的安全维度。
  • 架构演进路径决定了鉴权系统的迭代方向,建议从阶段二或阶段三起步,逐步向阶段四演进。