Files
Agent-System/.doc/audit/2026-09-12-phase0-api-authz-matrix.md
T
weichenandCursor 511864bad0 docs(ops): scaffold doc taxonomy and relocate audit/remediation
Establish .doc/{status,audit,remediation,archive} structure with README
maps, migrate 15 root audit/remediation docs, and add redirect stubs.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-09-13 02:50:23 +00:00

4.1 KiB
Raw Blame History

Phase 0 API 授权矩阵与术语冻结

依据:2026-09-11-production-ready-workflow-governance-plan.md Phase 0
状态:Phase 0 止血基线(非完整 RBAC 权威化)

一、术语冻结

术语 定义 Phase 0 权威来源
系统角色 如 role-admin,决定系统级管理能力 服务端 users.role_id(内存/后续持久化)
项目成员角色 owner / member / viewer 数据库 project_members + internal/authz
文档职责 单文档 author / reviewer / approver DocGov + 文档任务(Phase 1+ 解耦)
登录主体 当前会话用户 仅 Bearer / X-Session-Token → principalFromContext
前端权限 hasPermission / localStorage roles 非安全边界,仅 UI 体验层

Phase 0 红线:

  • 禁止新增依赖 localStorage 的权威业务状态。
  • 禁止产品 UI 身份模拟、X-User-ID 请求头、body user_id 覆盖 principal。
  • 对象级授权以服务端 middleware + 已挂载的 requireProjectAccess 为准。

二、公开路由(无需认证)

方法 路径 说明
GET /, /health, /api/v1/health SPA / 健康检查
POST /api/v1/auth/login 登录
POST /api/v1/auth/register 注册(若启用)
* 非 /api/* 静态资源 / SPA fallback

三、API 资源—动作—条件矩阵

图例:authn=需登录;admin=需 role-admin;proj=需 requireProjectAccess;—=未挂对象级授权(Phase 1 补齐)

路由 authn admin proj Phase 0 备注
POST /api/v1/projects ✓ — — 创建人来自 token
GET /api/v1/projects ✓ — — 列表按 user_id 过滤
GET /api/v1/projects/{id} ✓ — ✓
GET /api/v1/projects/{id}/workflows ✓ — ✓
PUT /api/v1/projects/{id}/active-workflow ✓ — ✓
POST /api/v1/projects/{id}/workflows/{key}/run ✓ — ✓
GET /api/v1/projects/{id}/workflows/{key}/runs ✓ — ✓
GET /api/v1/projects/{id}/lineage ✓ — ✓
GET /api/v1/projects/{id}/documents ✓ — ✓
POST/GET /api/v1/projects/{id}/assets ✓ — ✓
GET /api/v1/workflows ✓ — —
POST /api/v1/chat ✓ — — user_id 来自 principal
POST/GET /api/v1/chat/stream ✓ — — SSE;principal 强制
GET /api/v1/chat/turns/{id} ✓ — —
POST/GET /api/v1/tasks/run/stream ✓ — —
POST /api/v1/tasks/runs 等 ✓ — 部分 task_run_auth
POST /api/v1/admin/workspaces/reconcile ✓ ✓ —
GET/PUT /api/v1/context/user* ✓ — —
GET /api/v1/context/project ✓ — —
GET/POST /api/v1/chat/sessions 等 ✓ — — 会话归属校验
GET/POST /api/v1/freeform-documents* ✓ — — owner 校验在 service
GET/POST /api/v1/docgov/* ✓ — — DocGov 三权
POST /api/v1/auth/logout 等 ✓ — —
GET/POST /api/v1/admin/users ✓ ✓ —
GET/PUT /api/v1/admin/config ✓ ✓ —

四、Phase 0 已知 P0-gap(→ Phase 1)

缺口 说明
无 DB 时 authz 降级 authorizer.enabled()==false 时任意已登录用户可访问任意 project_id(仅 dev/stub)
localStorage RBAC 前端按钮可见性仍非服务端 capabilities
阶段/文档 ABAC 未实施;BD 跨阶段隔离在 Phase 3

五、Phase 0 验收对照

门禁 验证方式
无身份切换 UI scripts/check-prod-bundle.sh + 人工
匿名 API 401 TestP0_AnonymousBusinessAPIReturns401
X-User-ID 无效 TestP0_XUserIDCannotAuthenticate
body user_id 不覆盖 principal TestP0_BodyUserIDCannotOverridePrincipal
生产无种子用户 TestMemoryStore_MainEnvNoSeedUsers
main 禁止 AllowInMemory TestValidateProductionSecrets_RejectsAllowInMemory
CORS 无 * TestP0_CORSAllowlist