安全架构设计流程标准
文档编号: SYS-STD-ARCH-SEC-001
版本: 1.0
创建日期: 2026-03-08
作者: 架构师
状态: ✅ 已生效
1. 目的
本文档定义安全架构设计的标准化流程,确保系统的认证授权、数据安全、传输安全等方案满足企业安全要求。
2. 适用范围
适用于System平台及同类项目的安全架构设计工作,包括:
- 认证授权架构设计
- 数据安全架构设计
- 传输安全设计
- 审计日志设计
- 密钥管理设计
3. 设计原则
3.1 认证授权原则
- 标准协议:采用OAuth 2.0 + JWT标准协议
- 双Token机制:Access Token + Refresh Token分离
- 最小权限:用户仅拥有完成工作所需的最小权限
- 无状态设计:服务端无会话状态,支持水平扩展
3.2 数据安全原则
- 传输加密:所有数据传输采用TLS 1.3加密
- 存储加密:敏感数据字段级加密存储
- 数据脱敏:敏感数据展示时脱敏处理
- 审计完整:所有数据操作可追溯
4. 设计流程
4.1 流程概览
┌─────────────────────────────────────────────────────────────┐
│ 安全架构设计流程 │
├─────────────────────────────────────────────────────────────┤
│ │
│ 1. 认证架构 ──▶ 2. 授权架构 ──▶ 3. 传输安全 │
│ │ │ │ │
│ ▼ ▼ ▼ │
│ ┌─────────┐ ┌─────────┐ ┌─────────┐ │
│ │JWT设计 │ │RBAC模型 │ │TLS配置 │ │
│ │Token存储│ │权限粒度 │ │证书管理 │ │
│ │前端安全 │ │数据权限 │ │HSTS │ │
│ └─────────┘ └─────────┘ └─────────┘ │
│ │
│ 4. 数据安全 ──▶ 5. 审计日志 ──▶ 6. 架构评审 │
│ │ │ │ │
│ ▼ ▼ ▼ │
│ ┌─────────┐ ┌─────────┐ ┌─────────┐ │
│ │加密方案 │ │操作日志 │ │技术评审 │ │
│ │脱敏规则 │ │数据日志 │ │签字确认 │ │
│ │密钥管理 │ │登录日志 │ │ │ │
│ └─────────┘ └─────────┘ └─────────┘ │
│ │
└─────────────────────────────────────────────────────────────┘4.2 详细步骤
步骤1:认证架构设计
输入:
- 业务需求文档
- 用户场景分析
- 多租户需求
活动:
JWT Token设计
- Access Token:2小时有效期,存内存
- Refresh Token:30天有效期,存HttpOnly Cookie
- Token Payload包含:userId, username, tenantId, roles, permissions
Token存储策略
- Access Token:Pinia/Vuex内存存储
- Refresh Token:HttpOnly + Secure + SameSite=Strict Cookie
- 权限信息:sessionStorage临时缓存
前端Token安全
- Axios请求拦截器自动添加Token
- 401自动刷新Token,请求队列处理并发
- XSS防护(HTML转义、URL净化)
- 页面可见性监听(长时间未激活清理数据)
多租户支持
- X-Tenant-Id请求头传递租户ID
- 后端拦截器自动解析租户上下文
输出:
- JWT Token设计方案
- 前端Token管理代码
- Token刷新流程图
验收标准:
- [ ] Token双机制设计完成
- [ ] 前端安全代码实现
- [ ] 多租户方案确定
步骤2:授权架构设计
输入:
- 业务功能清单
- 用户角色定义
- 数据权限需求
活动:
RBAC模型设计
- 用户-角色-权限三级模型
- 用户表、角色表、权限表、关联表设计
权限粒度定义
- 菜单权限:控制页面菜单显示
- 按钮权限:控制操作按钮显示
- 接口权限:控制API访问
- 数据权限:控制数据范围(全部/部门/个人)
权限注解设计
- @RequireLogin:要求登录
- @RequireRole:要求角色
- @RequirePermission:要求权限
- @DataPermission:数据权限
数据权限实现
- MyBatis Plus拦截器自动添加数据范围过滤
- 支持:ALL, DEPT_ONLY, DEPT_AND_CHILD, SELF_ONLY
输出:
- RBAC权限模型图
- 权限注解代码
- 数据权限拦截器
验收标准:
- [ ] RBAC模型设计完成
- [ ] 四级权限粒度定义
- [ ] 数据权限拦截器实现
步骤3:传输安全设计
输入:
- 部署架构设计
- 域名规划
活动:
TLS 1.3配置
- Nginx SSL配置
- 强制HTTPS跳转
- HSTS响应头
证书管理
- Let's Encrypt自动证书
- cert-manager自动续期
- 证书监控告警
安全响应头
- X-Frame-Options: DENY
- X-Content-Type-Options: nosniff
- X-XSS-Protection: 1; mode=block
- Content-Security-Policy
输出:
- Nginx SSL配置
- 证书管理配置
- 安全响应头配置
验收标准:
- [ ] TLS 1.3配置完成
- [ ] 证书自动续期配置
- [ ] 安全响应头配置完成
步骤4:数据安全设计
输入:
- 数据库设计
- 敏感字段清单
- 合规要求
活动:
数据库加密
- MySQL TDE透明数据加密
- 列级加密(AES-256-GCM)
- @Encrypted注解实现自动加解密
数据脱敏
- 手机号:138****8888
- 邮箱:z***@linsir.com
- 身份证号:110101********1234
- @Masked注解实现自动脱敏
密钥管理
- HashiCorp Vault密钥存储
- 密钥缓存(Redis,1小时TTL)
- 密钥轮换机制
数据分类分级
- 公开数据:无需保护
- 内部数据:需认证
- 敏感数据:需授权+加密
- 机密数据:严格授权+HSM
输出:
- 数据库加密方案
- 脱敏规则配置
- 密钥管理方案
验收标准:
- [ ] 列级加密实现
- [ ] 脱敏规则配置
- [ ] 密钥管理方案完成
步骤5:审计日志设计
输入:
- 业务操作清单
- 合规审计要求
活动:
操作日志
- @OperationLog注解
- AOP拦截记录操作
- 记录:模块、类型、用户、IP、参数、结果
数据变更日志
- MyBatis Plus拦截器
- 记录:表名、变更类型、旧数据、新数据、差异
登录日志
- 记录:用户、IP、地点、UA、状态
- 登录失败告警
日志存储
- MySQL结构化存储
- ELK全文检索
- 定期归档清理
输出:
- 审计日志表结构
- 日志注解代码
- 日志查询接口
验收标准:
- [ ] 三种日志类型实现
- [ ] 日志存储方案完成
- [ ] 日志查询接口完成
步骤6:架构评审
输入:
- 认证授权架构文档
- 数据安全架构文档
活动:
评审准备
- 组织评审会议
- 分发评审材料
- 确定评审人员
评审执行
- 认证授权方案评审
- 数据安全方案评审
- 传输安全评审
- 审计日志评审
问题跟踪
- 记录评审问题
- 制定修复计划
- 验证修复结果
评审结论
- 评审决议(通过/不通过)
- 签字确认
输出:
- 安全架构评审记录
- 问题跟踪表
- 评审签字表
验收标准:
- [ ] 评审问题已修复
- [ ] 所有评审人员签字
5. 关键设计要点
5.1 Token安全要点
| 要点 | 实现方式 | 说明 |
|---|---|---|
| Access Token | 内存存储 | Pinia/Vuex,页面刷新丢失 |
| Refresh Token | HttpOnly Cookie | SameSite=Strict, Secure=true |
| Token刷新 | 自动静默 | 401时自动刷新,用户无感知 |
| 并发控制 | 请求队列 | 刷新Token时排队等待 |
5.2 权限控制要点
| 要点 | 实现方式 | 说明 |
|---|---|---|
| 菜单权限 | 前端路由守卫 | 根据permissions过滤路由 |
| 按钮权限 | v-permission指令 | 无权限时隐藏按钮 |
| 接口权限 | @RequirePermission | 注解拦截校验 |
| 数据权限 | MyBatis拦截器 | 自动添加数据范围过滤 |
5.3 数据加密要点
| 要点 | 实现方式 | 说明 |
|---|---|---|
| 传输加密 | TLS 1.3 | 强制HTTPS |
| 存储加密 | AES-256-GCM | 列级加密 |
| 密钥管理 | HashiCorp Vault | 安全存储密钥 |
| 密码加密 | bcrypt | 10轮salt |
6. 文档模板
6.1 认证授权架构文档模板
markdown
# 认证授权架构设计
## 1. 概述
## 2. 认证授权架构总览
## 3. 认证架构设计
## 4. 授权架构设计
## 5. SSO单点登录架构
## 6. 前端Token安全处理
## 7. 后端安全配置
## 8. 接口安全设计6.2 数据安全架构文档模板
markdown
# 数据安全架构设计
## 1. 概述
## 2. 数据安全架构总览
## 3. 传输层安全
## 4. 存储层加密
## 5. 数据脱敏
## 6. 审计日志
## 7. 密钥管理
## 8. 数据分类与分级7. 检查清单
7.1 认证授权检查清单
- [ ] JWT Token设计完成(Access + Refresh)
- [ ] Token存储策略确定(内存 + HttpOnly Cookie)
- [ ] 前端Token安全代码实现
- [ ] 多租户支持(X-Tenant-Id请求头)
- [ ] RBAC权限模型设计
- [ ] 四级权限粒度定义
- [ ] 数据权限拦截器实现
- [ ] SSO单点登录方案
7.2 数据安全检查清单
- [ ] TLS 1.3配置完成
- [ ] 证书自动续期配置
- [ ] 数据库列级加密实现
- [ ] 数据脱敏规则配置
- [ ] 审计日志三种类型实现
- [ ] 密钥管理方案(Vault)
- [ ] 数据分类分级定义
8. 常见错误避免
❌ Token存储在localStorage
- 错误:易受XSS攻击窃取
- 正确:Access Token存内存,Refresh Token存HttpOnly Cookie
❌ 单Token机制
- 错误:Token过期需重新登录
- 正确:双Token机制,Access Token过期用Refresh Token刷新
❌ 明文存储敏感数据
- 错误:数据库明文存储手机号、身份证号
- 正确:列级AES加密存储
❌ 无审计日志
- 错误:无法追溯数据操作
- 正确:操作日志、数据变更日志、登录日志完整记录
9. 修订记录
| 版本 | 日期 | 作者 | 变更内容 |
|---|---|---|---|
| 1.0 | 2026-03-08 | 架构师 | 初始版本,定义安全架构设计流程标准 |
