1. 课程导学与项目背景

1.1 多租户 SaaS 架构概述

多租户(Multi-Tenancy)是 SaaS 服务的核心架构模式,指单个应用实例同时服务多个租户(客户/组织),且每个租户在逻辑上完全隔离。这种架构直接决定了 SaaS 平台的资源利用率、运维成本和数据安全边界。

架构维度 隔离粒度 典型场景 运维复杂度
数据库级隔离 每个租户独立数据库 金融、医疗等高合规行业 高
Schema 级隔离 共享数据库,独立 Schema 中型企业级 SaaS 中
表级隔离 共享数据库与 Schema,通过 tenant_id 区分 通用型、高密度 SaaS 低
课程选型说明:本课程采用表级隔离 + 共享数据库模式,这是当前主流 SaaS 平台(如 Salesforce、Shopify 早期架构)的通用选择,兼顾资源密度与开发效率。

1.2 鉴权拦截链路的重要性

在多租户环境中,鉴权(Authentication)与授权(Authorization)不再是简单的用户登录校验,而是需要贯穿整个请求生命周期的拦截链路。任何一个环节的缺失或配置错误,都可能导致租户数据泄露或越权操作。

典型的 SaaS 鉴权拦截链路包含以下关键节点:

  1. 网关层拦截 — 识别请求来源,校验 API Key / JWT 签名
  2. 租户上下文注入 — 从请求头或 Token 中提取 tenant_id
  3. 权限策略评估 — 基于 RBAC / ABAC 模型判断操作许可
  4. 数据隔离过滤 — 所有数据库查询自动追加 tenant_id 条件
  5. 审计日志记录 — 记录每次鉴权决策与拦截行为
常见陷阱:很多团队只关注登录鉴权,忽略了租户上下文透传和数据隔离过滤两个环节,导致出现“水平越权”漏洞——租户 A 的用户可以访问租户 B 的数据。
多租户 SaaS 鉴权拦截链路全景图 客户端请求 网关鉴权 租户上下文注入 权限策略评估 数据隔离过滤 审计日志记录 业务服务 链路关键原则 任何请求必须依次通过 ①→②→③→④→⑤→⑥→⑦,任一环节拒绝则立即拦截并返回 401/403

1.3 课程目标

本课程旨在帮助学员掌握从零构建一套生产级多租户 SaaS 鉴权拦截链路,并通过 CI/CD 流水线实现自动化部署与持续交付。具体目标如下:

  • 架构设计能力 — 理解多租户鉴权拦截链路的完整架构与组件职责
  • 代码实现能力 — 使用 Spring Boot / Node.js 实现网关鉴权、租户上下文、RBAC 权限引擎
  • 流水线编排能力 — 基于 Jenkins / GitLab CI 构建包含代码扫描、单元测试、集成测试、安全审计的 CI/CD 流水线
  • 生产级交付能力 — 掌握容器化部署、蓝绿发布、回滚策略与监控告警集成

1.4 前置知识要求

知识领域 必备程度 具体要求
Java / Spring Boot 高 熟悉 REST API 开发、拦截器/过滤器机制、JWT 处理
Docker & Kubernetes 中 掌握 Dockerfile 编写、K8s Deployment/Service 基础操作
CI/CD 工具 中 了解 Jenkins Pipeline 或 GitLab CI 基本语法
数据库 中 MySQL/PostgreSQL 基础 SQL、MyBatis/JPA 多租户查询
Linux 基础 低 常用命令行操作、环境变量配置
课程配套资源:每章均提供完整代码仓库(GitHub)、Docker Compose 本地运行环境、以及 CI/CD 流水线模板文件。学员可直接 fork 仓库并跟随操作。
课程知识体系与前置依赖关系 Java / Spring Boot Docker & K8s CI/CD 工具 鉴权拦截链路 CI/CD 流水线 生产级 SaaS 自动化部署平台

1.5 课程章节速览

本课程共 30 章,按阶段划分为以下 6 个模块:

  • 模块一(第 1-4 章):架构设计与环境搭建 — 多租户模型、鉴权链路设计、开发环境与 K8s 集群初始化
  • 模块二(第 5-10 章):核心代码实现 — 网关鉴权、租户上下文、RBAC 权限引擎、数据隔离过滤器
  • 模块三(第 11-16 章):CI/CD 流水线构建 — 代码扫描、单元测试、集成测试、镜像构建与推送
  • 模块四(第 17-22 章):部署与发布策略 — Helm Chart 编写、蓝绿部署、金丝雀发布、自动回滚
  • 模块五(第 23-27 章):监控与安全加固 — Prometheus + Grafana 监控、审计日志、安全扫描集成
  • 模块六(第 28-30 章):生产实战与总结 — 压测调优、故障演练、课程总结与扩展建议
学习建议:建议学员按顺序学习,每章结束后完成配套练习。模块二和模块三是本课程的核心难点,建议投入更多时间动手实践。