4. 自助服务门户架构:微服务架构下的门户设计、前后端分离模式、API网关角色
自助服务门户作为混沌工程基线核验的交互入口,其架构设计直接影响安全权限模型的落地效率与接口调用的稳定性。本章从微服务架构视角拆解门户设计原则、前后端分离模式以及API网关的核心职责,为后续实现细粒度权限控制与混沌实验编排奠定架构基础。
4.1 微服务架构下的门户设计原则
自助服务门户不再是一个单体应用,而是由多个独立微服务协同构成的聚合层。设计时需遵循以下核心原则:
| 原则 | 说明 | 对混沌工程基线核验的影响 |
|---|---|---|
| 服务自治 | 每个门户功能模块(如用户管理、实验编排、报告查看)独立部署、独立扩展 | 基线核验服务可独立升级,不影响其他门户功能 |
| 去中心化数据管理 | 每个微服务拥有专属数据库,避免单点数据耦合 | 权限数据与实验配置数据隔离,降低泄露风险 |
| 弹性与容错 | 通过熔断、重试、限流机制保障局部故障不扩散 | 混沌实验执行期间,门户仍可响应权限校验请求 |
| 可观测性 | 统一日志、指标、链路追踪,支持快速定位问题 | 基线核验失败时可精确追踪到权限或接口调用环节 |
架构提示: 在混沌工程场景下,门户微服务应支持独立降级。例如,当实验编排服务因混沌注入而响应变慢时,用户管理服务仍能正常完成身份认证,避免整个门户不可用。
4.2 前后端分离模式
自助服务门户采用前后端分离架构,前端专注于用户交互与可视化,后端专注业务逻辑与数据安全。这种模式在混沌工程基线核验中带来明确的职责边界。
4.2.1 分层职责
- 前端层(SPA):使用 Vue.js / React 构建,负责路由管理、状态管理、UI 渲染。不直接访问数据库,所有数据通过 API 获取。
- BFF 层(Backend For Frontend):为前端定制聚合接口,负责数据组装、字段裁剪、会话管理。是权限校验的第一道关口。
- 微服务层:提供原子化业务能力,如用户服务、实验服务、报告服务。每个服务独立进行权限校验。
4.2.2 接口调用流程
用户浏览器 → 前端 SPA → BFF 层 → API 网关 → 微服务集群
↓ ↓ ↓
管理 请求聚合 权限校验
路由守卫 字段过滤 数据鉴权
安全要点: 前端不存储敏感权限信息,仅持有 JWT 。所有权限判定必须在后端完成,前端仅做 UI 层面的展示控制,防止绕过。
4.3 API 网关角色
API 网关是自助服务门户的流量入口,在混沌工程基线核验中承担安全防护、流量治理与协议转换三大核心角色。
4.3.1 核心功能矩阵
| 功能类别 | 具体能力 | 对基线核验的价值 |
|---|---|---|
| 安全防护 | 身份认证、 校验、IP 白名单、请求签名验证 | 确保只有合法用户能发起基线核验请求 |
| 流量治理 | 限流、熔断、重试、超时控制 | 防止混沌实验产生的异常流量冲击权限服务 |
| 协议转换 | HTTP ↔ gRPC、请求/响应格式适配 | 统一前端与后端微服务的通信协议 |
| 请求路由 | 基于路径、Header、权重将请求分发到对应微服务 | 实现基线核验服务的灰度发布与蓝绿部署 |
| 日志审计 | 全量请求日志记录、敏感操作追踪 | 为基线核验失败提供可追溯的调用链路 |
4.3.2 网关在混沌工程中的特殊设计
- 故障注入感知:网关应识别来自混沌实验的请求标签,对实验流量与正常流量采用不同的限流阈值。
- 权限缓存降级:当权限服务因混沌注入不可用时,网关可基于本地缓存进行短时权限判定,避免门户完全不可用。
- 请求复制与对比:网关支持将基线核验请求复制一份到影子服务,用于对比实验结果。
安全警告: 网关的权限缓存必须设置 TTL(建议不超过 30 秒),且缓存内容仅包含基础角色信息,不缓存敏感凭证。缓存降级期间应记录详细日志,供事后审计。
4.4 架构总览:门户、前端与网关的协作关系
下图展示了自助服务门户在微服务架构下的完整协作关系,突出前后端分离与 API 网关的枢纽位置。
4.5 接口调用安全设计要点
在前后端分离与网关架构下,接口调用的安全设计需重点关注以下环节:
- 传递:前端通过 Authorization Header 携带 JWT,网关校验 有效性后,将解析后的用户信息通过 Header 透传给下游微服务。
- 接口鉴权粒度:网关层做粗粒度鉴权(是否登录、是否在白名单),微服务层做细粒度鉴权(是否拥有实验执行权限、是否属于指定团队)。
- 请求防篡改:对敏感操作(如执行混沌实验、修改基线配置)要求携带请求签名,网关校验签名后再转发。
- 审计日志:网关记录每次接口调用的时间、来源 IP、请求路径、用户 ID、响应状态,日志不可篡改且保留至少 90 天。
基线核验场景示例: 用户通过门户发起“执行 CPU 压力实验”请求 → 前端携带 JWT 调用 BFF → BFF 聚合请求后发送至网关 → 网关校验 与签名 → 网关将请求路由至实验编排服务 → 实验服务调用权限服务校验用户是否拥有“实验执行”权限 → 权限服务返回校验结果 → 实验服务执行混沌注入 → 结果返回至前端展示。
通过上述架构设计,自助服务门户在微服务环境下实现了职责清晰、安全可控的接口调用体系,为混沌工程基线核验提供了稳定、可审计的交互基础。