1. 课程导学与项目背景
1.1 多租户 SaaS 架构概述
多租户(Multi-Tenancy)是 SaaS 服务的核心架构模式,指单个应用实例同时服务多个租户(客户/组织),且每个租户在逻辑上完全隔离。这种架构直接决定了 SaaS 平台的资源利用率、运维成本和数据安全边界。
| 架构维度 | 隔离粒度 | 典型场景 | 运维复杂度 |
|---|---|---|---|
| 数据库级隔离 | 每个租户独立数据库 | 金融、医疗等高合规行业 | 高 |
| Schema 级隔离 | 共享数据库,独立 Schema | 中型企业级 SaaS | 中 |
| 表级隔离 | 共享数据库与 Schema,通过 tenant_id 区分 | 通用型、高密度 SaaS | 低 |
课程选型说明:本课程采用表级隔离 + 共享数据库模式,这是当前主流 SaaS 平台(如 Salesforce、Shopify 早期架构)的通用选择,兼顾资源密度与开发效率。
1.2 鉴权拦截链路的重要性
在多租户环境中,鉴权(Authentication)与授权(Authorization)不再是简单的用户登录校验,而是需要贯穿整个请求生命周期的拦截链路。任何一个环节的缺失或配置错误,都可能导致租户数据泄露或越权操作。
典型的 SaaS 鉴权拦截链路包含以下关键节点:
- 网关层拦截 — 识别请求来源,校验 API Key / JWT 签名
- 租户上下文注入 — 从请求头或 Token 中提取 tenant_id
- 权限策略评估 — 基于 RBAC / ABAC 模型判断操作许可
- 数据隔离过滤 — 所有数据库查询自动追加 tenant_id 条件
- 审计日志记录 — 记录每次鉴权决策与拦截行为
常见陷阱:很多团队只关注登录鉴权,忽略了租户上下文透传和数据隔离过滤两个环节,导致出现“水平越权”漏洞——租户 A 的用户可以访问租户 B 的数据。
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 仓库并跟随操作。
1.5 课程章节速览
本课程共 30 章,按阶段划分为以下 6 个模块:
- 模块一(第 1-4 章):架构设计与环境搭建 — 多租户模型、鉴权链路设计、开发环境与 K8s 集群初始化
- 模块二(第 5-10 章):核心代码实现 — 网关鉴权、租户上下文、RBAC 权限引擎、数据隔离过滤器
- 模块三(第 11-16 章):CI/CD 流水线构建 — 代码扫描、单元测试、集成测试、镜像构建与推送
- 模块四(第 17-22 章):部署与发布策略 — Helm Chart 编写、蓝绿部署、金丝雀发布、自动回滚
- 模块五(第 23-27 章):监控与安全加固 — Prometheus + Grafana 监控、审计日志、安全扫描集成
- 模块六(第 28-30 章):生产实战与总结 — 压测调优、故障演练、课程总结与扩展建议
学习建议:建议学员按顺序学习,每章结束后完成配套练习。模块二和模块三是本课程的核心难点,建议投入更多时间动手实践。