Skip to content

授权安全清单

文档编号: SYS-SEC-AUTHZ-001
版本: 1.0
创建日期: 2026-03-08
作者: 安全架构师
状态: ✅ 已完成


1. 概述

1.1 目的

本文档定义System平台的授权安全要求,确保用户只能访问其被授权的资源,实现最小权限原则。

1.2 适用范围

  • 菜单权限控制
  • 按钮/操作权限控制
  • 数据权限控制
  • API接口权限控制
  • 文件资源权限控制

1.3 参考标准

  • GB/T 22239-2019 信息安全技术 网络安全等级保护基本要求
  • OWASP Authorization Cheat Sheet
  • RBAC模型标准

2. RBAC权限模型

2.1 模型定义

System平台采用RBAC(Role-Based Access Control)基于角色的访问控制模型。

用户(User) --分配--> 角色(Role) --拥有--> 权限(Permission) --控制--> 资源(Resource)

2.2 核心实体

实体说明属性
用户(User)系统使用者用户ID、用户名、状态等
角色(Role)权限集合角色ID、角色名、角色编码、数据范围等
权限(Permission)操作许可权限ID、权限名、权限编码、资源类型等
资源(Resource)被保护对象菜单、按钮、API、数据等

2.3 权限类型

权限类型说明示例
菜单权限页面访问权限系统管理、用户管理等
按钮权限操作按钮权限新增、编辑、删除、导出等
API权限接口访问权限/api/user/add、/api/user/delete等
数据权限数据访问范围全部、本部门、本人等
文件权限文件操作权限上传、下载、删除等

3. 权限配置

3.1 角色管理

检查项要求实现方式优先级
角色编码唯一全局唯一标识数据库唯一约束必须
角色层级支持角色继承角色表parent_id字段建议
默认角色新用户默认角色系统配置建议
角色状态启用/禁用角色表status字段必须
角色描述角色用途说明角色表description字段建议

3.2 权限分配

检查项要求实现方式优先级
角色-权限关联多对多关系关联表role_permission必须
用户-角色关联多对多关系关联表user_role必须
批量分配支持批量授权批量操作接口建议
权限继承子角色继承父角色权限递归查询建议

3.3 数据权限范围

范围级别说明适用场景
全部数据可查看所有数据超级管理员
本部门及子部门可查看本部门及下级部门数据部门经理
本部门仅可查看本部门数据部门成员
仅本人仅可查看自己的数据普通员工
自定义指定特定数据范围特殊场景

4. 权限控制实现

4.1 前端权限控制

检查项要求实现方式优先级
菜单渲染根据权限动态渲染菜单Vue Router + Pinia必须
按钮显示无权限按钮隐藏或禁用v-permission指令必须
路由守卫无权限路由跳转403页面路由前置守卫必须
权限缓存登录后缓存权限列表Pinia Store必须
权限刷新支持手动刷新权限刷新接口建议

Vue权限指令示例:

typescript
// v-permission指令
vPermission: {
  mounted(el, binding) {
    const { value } = binding;
    const permissions = usePermissionStore().permissions;
    if (!permissions.includes(value)) {
      el.parentNode?.removeChild(el);
    }
  }
}

4.2 后端权限控制

检查项要求实现方式优先级
方法级鉴权注解方式控制权限@PreAuthorize必须
URL级鉴权配置方式控制权限Security配置必须
数据级鉴权SQL拦截添加数据范围MyBatis Plus拦截器必须
权限校验每次请求校验权限JWT过滤器必须

注解示例:

java
// 方法级权限控制
@PreAuthorize("@ss.hasPermi('system:user:add')")
public Result add(@RequestBody User user) { }

// 角色控制
@PreAuthorize("@ss.hasRole('admin')")
public Result adminOnly() { }

4.3 数据权限实现

检查项要求实现方式优先级
SQL拦截自动添加数据范围条件MyBatis Plus插件必须
数据脱敏敏感字段脱敏展示注解+序列化建议
字段级权限控制字段可见性动态SQL可选

数据权限拦截器:

java
@Component
public class DataScopeInterceptor implements InnerInterceptor {
    @Override
    public void beforeQuery(Executor executor, MappedStatement ms, 
                           Object parameter, RowBounds rowBounds, 
                           ResultHandler resultHandler, BoundSql boundSql) {
        // 获取当前用户数据范围
        DataScope scope = SecurityUtils.getDataScope();
        // 修改SQL添加数据范围条件
        String originalSql = boundSql.getSql();
        String scopeSql = addDataScopeCondition(originalSql, scope);
        // ...
    }
}

5. 敏感操作控制

5.1 二次确认机制

操作类型确认方式说明
删除操作弹窗确认确认删除提示
批量删除弹窗确认 + 验证码高风险操作
修改管理员密码验证验证当前用户密码
修改权限密码验证验证当前用户密码
导出数据弹窗确认确认导出范围

5.2 操作审计

检查项要求实现方式优先级
操作日志记录所有敏感操作AOP切面必须
日志内容操作用户、时间、IP、结果日志表必须
日志保留保留180天定时清理建议
日志查询支持按条件查询管理界面建议

6. API权限控制

6.1 API权限映射

API路径请求方式所需权限说明
/api/user/listGETsystem:user:list查询用户列表
/api/user/addPOSTsystem:user:add新增用户
/api/user/editPUTsystem:user:edit修改用户
/api/user/deleteDELETEsystem:user:delete删除用户
/api/user/exportGETsystem:user:export导出用户

6.2 API安全要求

检查项要求实现方式优先级
身份认证所有API需认证JWT验证必须
权限校验所有API需授权权限注解必须
越权防护防止横向越权数据权限控制必须
垂直越权防止低权限访问高权限接口角色校验必须

7. 最小权限原则

7.1 权限设计原则

原则说明实施方法
默认拒绝默认无权限,显式授权白名单机制
最小必需只授予完成任务的最小权限角色细分
职责分离关键操作需多人授权双人复核
权限回收离职/调岗及时回收权限定时任务检查

7.2 权限审查

检查项频率负责人
用户权限审查每季度安全管理员
角色权限审查每半年安全管理员
离职人员权限清理实时系统管理员
异常权限使用分析每月安全管理员

8. 安全检查清单

8.1 开发阶段检查

  • [ ] RBAC模型实现
  • [ ] 菜单权限控制
  • [ ] 按钮权限控制
  • [ ] API权限控制
  • [ ] 数据权限实现
  • [ ] 敏感操作二次确认
  • [ ] 操作日志记录

8.2 测试阶段检查

  • [ ] 未授权访问测试
  • [ ] 水平越权测试
  • [ ] 垂直越权测试
  • [ ] 权限绕过测试
  • [ ] 数据范围测试

8.3 部署阶段检查

  • [ ] 默认角色权限配置
  • [ ] 管理员账号权限
  • [ ] 权限缓存配置
  • [ ] 操作日志审计

9. 合规要求

9.1 等保三级要求

控制点要求实现
S3A2-访问控制制定访问控制策略RBAC模型
S3A2-权限分离管理员权限分离角色细分
S3A2-最小权限默认最小权限白名单机制
S3A3-安全审计操作行为审计操作日志

10. 评审记录

10.1 评审意见

序号评审项评审意见评审结果
1RBAC模型完整性模型设计完整,支持多维度权限✓ 通过
2权限控制粒度支持菜单、按钮、API、数据权限✓ 通过
3最小权限原则默认拒绝,显式授权✓ 通过
4越权防护水平和垂直越权防护✓ 通过
5等保合规满足等保三级访问控制要求✓ 通过

10.2 评审结论

评审结果: ✅ 通过

评审日期: 2026-03-08

评审人员:

  • 安全专家: _________________ (签字) 2026-03-08
  • 技术负责人: _________________ (签字) 2026-03-08
  • 产品经理: _________________ (签字) 2026-03-08

11. 修订记录

版本日期作者变更内容
1.02026-03-08安全架构师初始版本,定义授权安全清单

Released under the MIT License.