返回业务与用例设计模块
Business Testing / Tutorial 07
权限、数据隔离与访问审计测试教程
从用户页面一直测到接口、数据范围和运维入口,验证任何身份对任何资源都只能做被授权的事,并留下可追溯证据。
01
权限测试要同时验证功能与数据
能做什么 × 能看什么授权模型
| 维度 | 问题 | 例子 |
|---|---|---|
| 身份认证 | 你是谁 | 登录用户、Token、设备会话 |
| 功能权限 | 能做什么 | 菜单、查询、编辑、审核、导出 |
| 数据权限 | 能操作哪些记录 | 集团、本级及以下、本级、个人 |
| 资源归属 | 这条数据属于谁 | 机构、部门、个人、租户 |
| 审计约束 | 谁在何时做了什么 | 操作日志、审批、会话录像 |
页面上看不到按钮,不等于没有权限。真正的授权判断必须在服务端对功能、数据归属和当前身份一起完成。
02
菜单、按钮、URL、接口四层都要测
隐藏不是拒绝四层防线
| 入口 | 有权用户 | 无权用户 |
|---|---|---|
| 菜单 | 可见并可进入 | 不可见 |
| 按钮 | 可见且操作成功 | 不可见或禁用 |
| URL 直达 | 页面正常加载 | 拒绝访问且不泄露内容 |
| 接口直调 | 按授权范围返回或写入 | 返回拒绝结果且业务不生效 |
固定测试动作
- 先用有权账号完成一次,记录 URL、接口和资源 ID。
- 切换无权账号,不经过页面直接访问相同入口。
- 分别修改角色、机构、资源 ID 和操作参数。
- 同时断言响应状态、响应内容和业务是否真正生效。
03
把角色与数据归属画成矩阵
每条数据对号入座常见数据范围
| 角色范围 | 应可见 | 不应可见 |
|---|---|---|
| 集团 | 全集团授权数据 | 明确排除的敏感域 |
| 本级及以下 | 本机构和下级机构 | 上级与平级机构 |
| 本级 | 本机构 | 上级、下级与平级 |
| 个人 | 本人数据 | 任何其他用户数据 |
每个矩阵格至少验证
- 列表是否出现。
- 详情是否可打开且字段完整。
- 编辑、删除、审批是否可执行。
- 统计和金额合计是否只计算授权范围。
- 导出文件是否与页面范围一致。
04
水平越权与垂直越权必须分别验证
拒绝且零泄露两类越权
| 类型 | 动作 | 典型风险 |
|---|---|---|
| 水平越权 | 同级用户替换资源 ID 访问他人记录 | 个人或机构数据泄露 |
| 垂直越权 | 低权限用户直调管理员接口 | 执行审核、删除或配置操作 |
| 跨租户越权 | 替换 tenant_id 或关联键 | 租户隔离失效 |
双重判据
- 访问被拒绝:按产品约定返回 403、404 或统一错误。
- 内容不泄露:响应体、文件名、数量、金额和状态都不包含目标资源信息。
- 操作不生效:数据库、消息、审计日志中没有越权产生的业务结果。
只断言状态码不够。有的接口返回错误提示,却已经写入数据库;有的接口拒绝页面访问,却在响应体里带回完整业务数据。
05
权限变更后要验证生效时机
不要自己猜时限变更场景
| 场景 | 要核对的会话 |
|---|---|
| 移除功能权限 | 当前会话、刷新后、重新登录后 |
| 改变数据范围 | 列表、详情、接口缓存与导出 |
| 删除角色 | 关联用户旧 Token 是否仍可用 |
| 禁用用户 | 当前会话何时失效,其他设备如何处理 |
| 退出登录 | 当前设备失效,其他设备按需求处理 |
立即生效、重新登录生效还是 Token 到期生效,必须依据需求或安全策略。需求未定义时列为待确认,不在用例中臆造“5 分钟后”。
06
附件、导出与统计同样受权限控制
隐蔽泄露点高风险资源
| 资源 | 测试重点 |
|---|---|
| 附件直链 | 替换文件 ID、复制 URL、Token 失效后访问 |
| 批量导出 | 导出范围、字段脱敏、任务下载权限 |
| 统计报表 | 数量与金额只计算授权数据 |
| 搜索联想 | 不可通过关键词探测无权记录 |
| 错误提示 | 不暴露资源是否存在、真实路径和内部标识 |
用例标题示例
当个人数据范围用户替换导出任务 ID 下载他人文件时,系统拒绝下载且不返回文件名、大小或临时地址。
07
把运维访问也纳入授权与审计
统一入口与留痕访问控制链路
个人身份一人一账号
访问审批服务器与时段
代理登录不直接暴露密码
操作留痕命令与会话记录
高危拦截确认或拒绝
堡垒机解决的边界
堡垒机主要治理内部运维访问:统一入口、个人身份、最小权限、会话审计和高危操作拦截。它不替代 WAF、漏洞修复或抗 DDoS,测试时要区分内部访问治理与外部攻击防护。
访问审计测试
| 检查 | 预期 |
|---|---|
| 未授权服务器 | 资产列表不可见,直连被网络策略阻断 |
| 授权过期 | 审批时段外无法建立会话 |
| 高危命令 | 按策略拦截、二次审批或完整告警 |
| 审计回放 | 能关联个人、目标、时间、输入和结果 |
| 账号离职 | 个人入口及时停用,目标密码无需散发 |
08
用清点、结对、断言生成权限用例
矩阵化设计访问控制链路
清点入口菜单/URL/接口/文件
准备身份有权/无权/跨域
准备数据本人/下级/平级/他人
执行断言状态/内容/业务结果
优先级判断
- P0/P1:越权访问、数据隔离、敏感字段与高危操作。
- P1:权限变更残留、导出范围与统计泄露。
- P2:低风险入口展示、多设备体验;仍按真实业务影响调整。
- 优先级来源于损失和暴露面,不按用例复杂度决定。
09
为一个业务模块完成权限验收
练习与检查清单练习
- 列出一个业务模块的菜单、按钮、URL、接口、附件和导出入口。
- 准备有权、无权、同级他人和跨机构账号与数据。
- 画出角色 × 数据归属 × 操作矩阵。
- 执行水平、垂直和跨租户越权,并核对数据库结果。
- 修改角色和用户状态,验证当前会话与重新登录后的差异。
- 若项目使用堡垒机,验证审批、会话审计与高危命令策略。
完成检查
四层入口全部覆盖
列表详情操作分别断言
拒绝时零内容泄露
越权操作未写入业务结果
权限生效时机有需求依据
导出统计遵守数据范围
运维访问可关联到个人