Skip to content

安全架构基本原则

文档编号: SYS-TR-AR-004
版本: 1.0
日期: 2026-03-10
编制: 系统架构师
审核: 审核通过 ✅


1. 安全目标

系统平台安全架构设计遵循以下原则:

  • 机密性:保护敏感数据不被未授权访问
  • 完整性:确保数据不被非法篡改
  • 可用性:保障系统持续稳定运行
  • 可追溯性:所有操作可审计、可追溯

2. 安全架构分层

┌─────────────────────────────────────────────────────────────┐
│                      应用安全层                              │
│         XSS防护 / CSRF防护 / SQL注入防护 / 文件上传安全         │
└─────────────────────────────────────────────────────────────┘


┌─────────────────────────────────────────────────────────────┐
│                      认证授权层                              │
│              身份认证 / 权限控制 / 会话管理 / JWT令牌           │
└─────────────────────────────────────────────────────────────┘


┌─────────────────────────────────────────────────────────────┐
│                      传输安全层                              │
│                    HTTPS / TLS 1.3 / 证书管理                 │
└─────────────────────────────────────────────────────────────┘


┌─────────────────────────────────────────────────────────────┐
│                      网络安全层                              │
│              防火墙 / VPN / 网络隔离 / DDoS防护                │
└─────────────────────────────────────────────────────────────┘


┌─────────────────────────────────────────────────────────────┐
│                      数据安全层                              │
│              数据加密 / 脱敏 / 备份 / 审计日志                 │
└─────────────────────────────────────────────────────────────┘

3. 认证方案

3.1 认证流程

┌─────────┐     ┌─────────────┐     ┌─────────────┐     ┌─────────────┐
│  用户   │────>│   前端      │────>│   后端      │────>│  认证中心    │
│         │     │  (Vue)      │     │(SpringBoot) │     │ (SpringAuth)│
└─────────┘     └─────────────┘     └──────┬──────┘     └──────┬──────┘
     │                                     │                   │
     │                                     │                   │
     │                                     ▼                   ▼
     │                              ┌─────────────┐     ┌─────────────┐
     │                              │   Redis     │     │   MySQL     │
     │                              │  (会话缓存)  │     │  (用户数据)  │
     │                              └─────────────┘     └─────────────┘
     │                                     │
     │<────────JWT Token───────────────────│

     │ ──(后续请求携带Token)──────────────>│
     │                                     │
     │<────────受保护资源───────────────────│

3.2 认证机制

机制说明实现方案
用户名密码基础认证BCrypt加密存储
JWT令牌无状态认证Access Token + Refresh Token
双因素认证增强安全短信/邮箱验证码(可选)
单点登录多系统统一认证OAuth 2.0 + OIDC

3.3 Token策略

java
// Access Token配置
有效期:30分钟
刷新阈值:5分钟(过期前5分钟可刷新)

// Refresh Token配置
有效期:7天
使用次数:单次使用(刷新后失效)
存储位置:HttpOnly Cookie

// Token内容
{
  "sub": "user_id",
  "username": "admin",
  "roles": ["admin", "user"],
  "iat": 1700000000,
  "exp": 1700001800
}

4. 授权方案

4.1 RBAC权限模型

┌─────────────┐       ┌─────────────┐       ┌─────────────┐
│    用户     │<─────>│    角色     │<─────>│    权限     │
│   (User)    │  N:M  │   (Role)    │  N:M  │ (Permission)│
└─────────────┘       └─────────────┘       └─────────────┘



┌─────────────┐
│   部门      │
│ (Department)│
└─────────────┘

4.2 权限类型

权限类型说明示例
菜单权限页面访问权限用户管理页面、角色管理页面
按钮权限操作权限新增用户、删除用户
数据权限数据范围权限本部门数据、全部数据
API权限接口访问权限GET /api/users、POST /api/users

4.3 权限校验流程

用户请求 ──> Gateway ──> Token验证 ──> 权限拦截器


                              查询用户角色权限


                              校验是否有权限

                    ┌─────────────────┴─────────────────┐
                    ▼                                   ▼
              有权限 ──> 执行业务逻辑              无权限 ──> 返回403

5. 安全防护

5.1 常见攻击防护

攻击类型防护措施实现方案
XSS输入过滤 + 输出转义前端Vue自动转义,后端XSS过滤器
CSRFToken验证 + SameSite CookieJWT天然防御,Cookie设置SameSite
SQL注入参数化查询MyBatis #{}预编译
暴力破解登录限流 + 验证码Redis计数,5次失败锁定15分钟
越权访问权限校验方法级别权限注解 @PreAuthorize

5.2 接口安全

java
// 接口权限控制示例
@RestController
@RequestMapping("/api/v1/users")
@PreAuthorize("hasRole('ADMIN')")  // 类级别权限
public class UserController {

    @GetMapping
    @PreAuthorize("hasAuthority('user:read')")  // 方法级别权限
    public Result listUsers() {
        // ...
    }

    @PostMapping
    @PreAuthorize("hasAuthority('user:create')")
    public Result createUser(@RequestBody UserDTO user) {
        // ...
    }
}

5.3 限流策略

限流类型阈值说明
全局限流1000 QPS系统整体保护
用户限流100 QPS/用户防止单用户刷接口
登录限流5次/15分钟防止暴力破解
验证码限流3次/小时防止短信轰炸

6. 数据安全

6.1 敏感数据加密

数据类型加密方式说明
密码BCrypt单向哈希,cost=12
手机号AES数据库加密存储,展示脱敏
身份证号AES数据库加密存储,展示脱敏
邮箱AES数据库加密存储

6.2 密钥管理

密钥分级:
├─ 一级密钥:主密钥(HSM/硬件加密机存储)
├─ 二级密钥:数据加密密钥(由主密钥加密存储)
└─ 三级密钥:应用密钥(由数据加密密钥加密存储)

密钥轮换:
- 数据加密密钥:每季度轮换
- 应用密钥:每月轮换
- JWT签名密钥:每半年轮换

7. 安全审计

7.1 审计日志内容

json
{
  "timestamp": "2026-03-10T10:30:00Z",
  "userId": "10001",
  "username": "admin",
  "operation": "CREATE_USER",
  "resource": "USER",
  "resourceId": "10002",
  "result": "SUCCESS",
  "ip": "192.168.1.100",
  "userAgent": "Mozilla/5.0...",
  "requestParams": "{\"username\":\"test\"}",
  "responseCode": 200,
  "duration": 150
}

7.2 审计范围

操作类型是否审计说明
用户登录/登出包括成功和失败
用户增删改所有写操作
权限变更角色、权限调整
系统配置变更参数修改
数据导出敏感数据导出
查询操作只读操作不审计

8. 安全运维

8.1 安全监控

监控项告警阈值响应时间
登录失败次数>10次/分钟立即
异常IP访问陌生IP高频访问5分钟
权限越权尝试403错误>100次立即
数据导出量>1000条/次立即

8.2 应急响应

安全事件响应措施
账户被盗冻结账户,强制下线,通知用户
暴力破解封禁IP,通知管理员
数据泄露启动应急预案,通知相关方
系统入侵隔离受影响系统,启动调查

9. 下一步行动

  1. [ ] 配置Spring Security安全框架
  2. [ ] 实现JWT认证过滤器
  3. [ ] 配置HTTPS证书
  4. [ ] 实现权限拦截器
  5. [ ] 配置审计日志
  6. [ ] 制定安全运维手册

文档版本历史

版本日期修改内容修改人
1.02026-03-10初始版本系统架构师

Released under the MIT License.