文件
hyb-oa/docs/trialrun/权限直连审计记录.md

3.1 KiB

权限直连审计记录

文档状态:当前审计证据,用于 R3 发布前权限直连审计。 对应 Issue:issues/2026-05-10_12-39-37-release-readiness-live-smoke.csv / R3。

1. 审计目标

本轮验证 A7 的导航收口没有掩盖服务端授权缺口。直连页面或 API 时,用户只能访问其角色授权或数据范围内的内容;前端隐藏不能替代服务端权限。

2. 自动化覆盖

新增 client/tests/e2e/permission-direct-access.spec.ts,覆盖:

  • 页面直连:/budgets、/ap-operations、/system/integrations/erp、/travel-requests、/invoice-pool、/contracts-registry、/payment-batches。
  • API 直连:/api/budgets、/api/ap-operations、/api/payment-batches、/api/integrations/erp/master-data/status、/api/invoice-pool、/api/travel-requests、/api/contracts-registry、/api/auth/wecom/config。
  • 角色:普通员工、主管、财务、财务主管、管理员。

3. 权限矩阵

角色 直连路径/API 期望 自动化结论
普通员工 预算、AP、ERP、付款批次 页面进入 /403;API 返回 403 或功能门禁 409,不得返回业务数据 通过
普通员工 差旅、票据、合同台账 可以进入自助或范围型页面;接口必须收敛到本人、本人票据、本人项目或功能门禁 通过
主管 AP、ERP、付款批次 页面进入 /403;API 返回 403 或功能门禁 409,不得返回业务数据 通过
主管 预算 允许访问角色授权范围 通过
财务 票据、付款/AP 允许访问财务授权范围或功能门禁 通过
财务 ERP 管理 页面和 API 均拒绝 通过
财务主管/管理员 ERP 或系统配置 允许访问授权范围;配置探活不得返回 secret/password/token 明文字段 通过

说明:AP 和付款批次接口存在 feature gate;当功能门禁先返回 409 时,结论是“未泄露数据”,但不等同于证明权限拒绝。

4. 验证命令

cd client && npm run typecheck
cd client && npm run build
cd client && npm run test:e2e -- permission-direct-access.spec.ts settings-governance.spec.ts login-portal-ux.spec.ts --workers=1
python3 /home/shunli/.codex/skills/plan/scripts/validate_issues_csv.py issues/2026-05-10_12-39-37-release-readiness-live-smoke.csv
git diff --check

5. 执行结果

2026-05-10 已执行:

  • cd client && npm run typecheck:通过。
  • cd client && npm run build:通过。
  • cd client && npm run test:e2e -- permission-direct-access.spec.ts settings-governance.spec.ts login-portal-ux.spec.ts --workers=1:本地服务启动后通过,10 passed。
  • python3 /home/shunli/.codex/skills/plan/scripts/validate_issues_csv.py issues/2026-05-10_12-39-37-release-readiness-live-smoke.csv:通过。
  • git diff --check:通过。

第一次 E2E 执行失败原因为 http://127.0.0.1:3000 未启动;启动本地 OA 服务后重跑通过,未发现权限泄漏。R3 可进入完成状态,下一步才允许进入 R4 只读部署预检。