概述
平台授权在整个生命周期上的全部已知缺口的总追踪 issue —— 覆盖包开发、分发安装、环境组合、运行时强制、生产/企业加固五个阶段。源自 #2557 / ADR-0086(PR #2559)工作中同步完成的全生命周期评估。
核心结论: 运行时强制层已相当扎实(约 18 个原语已强制,由 ADR-0056 D10 一致性矩阵在 CI 中守护)。缺口集中在两头——包开发端与生产/企业端。
✅ 状态更新(2026-07-04 收尾):所有 P0 关闭,P1 全部落地,P2 里三项已完成。上线所需的授权 + 认证能力已就绪。
📌 优先级重排(2026-07-04,面向本次生产上线)
本次上线不评估 AI 相关能力:ADR-0086 objectui 升 P0;强制 agent visibility(#1901)降 P3(唯一 AI 专属项);其余不变。
P0 — 上线阻断(全部关闭 ✅)
P1 — 高优先级(生产必需,全部落地 ✅)
P2 — 模型完备性
P3 — 企业 / 合规纵深
依据来源 / 关联
概述
平台授权在整个生命周期上的全部已知缺口的总追踪 issue —— 覆盖包开发、分发安装、环境组合、运行时强制、生产/企业加固五个阶段。源自 #2557 / ADR-0086(PR #2559)工作中同步完成的全生命周期评估。
核心结论: 运行时强制层已相当扎实(约 18 个原语已强制,由 ADR-0056 D10 一致性矩阵在 CI 中守护)。缺口集中在两头——包开发端与生产/企业端。
P0 — 上线阻断(全部关闭 ✅)
transfer/restore/purge补 RBAC 门 —— 已合并(feat(security)!: secure-by-default requireAuth flip + RBAC gates for transfer/restore/purge (#2561 P0) #2562):三操作预映射到权限位 +modifyAllRecords旁路;审查中补齐行级防护(RLS 预镜像 / controlled-by-parent 覆盖破坏性操作类)。→ [P0][security] Permission lifecycle ops ungated (allowTransfer/allowRestore/allowPurge) #1883(开启追踪 M2 操作){ packageId }限定作用域 + 保存切片合并;关闭「84 对象泄漏」+ 跨包数据丢失;带中途迁移守卫,对齐 framework feat(security): permission-set package provenance + bootstrapDeclaredPermissions (ADR-0086 P1) #2566 的记录级package_id。requireAuth安全默认翻转 —— 已合并(feat(security)!: secure-by-default requireAuth flip + RBAC gates for transfer/restore/purge (#2561 P0) #2562):specdefault(true)+ rest?? true,显式退出 boot warn;一致性矩阵requireAuth-default-flip→ enforced;浏览器实测 401/200/201 闭环;ObjectStackDefinitionSchema.api让 defineStack 层退出开关生效。→ ADR-0056 D2P1 — 高优先级(生产必需,全部落地 ✅)
PermissionSetSchema.packageId+ 每记录managedBy+sys_permission_set.package_id/managed_by列;bootstrapDeclaredPermissions播种stack.permissions(幂等/升级感知/不沾染环境行);一致性矩阵行declarative-permission-seeding+ dogfood 证明;关闭 ADR-0078 惰性违规。content/docs/concepts/authorization.mdx,九份 ADR 缝成单篇(六道强制门链 + 组合语义 + 包来源 + 生命周期五阶段 + CI 治理)。P2 — 模型完备性
requiredPermissions—— 对象级{ read, create, update, delete }映射。→ ADR-0066 ⑤sys_permission能力定义 + authoring/publish-gate lint(ADR-0066 ⑨)。→ ADR-0066 D1access.default:'private'。→ ADR-0066 D2/④allowed_ip_ranges记录级字段([security][P2] Per-org / per-user IP allow-list (record-levelallowed_ip_ranges) — ADR-0069 D5 #2571,带「收紧 vs 替换」设计决策)。resolvePermissionSets吞异常改为 fail-closed + warn 日志。→ [security][observability] resolvePermissionSets swallows dbLoader failures silently — custom permission sets vanish with no log #2565 ✅P3 — 企业 / 合规纵深
visibility—— AI 专属项,本次不评估、不阻断上线(2026-07-04 由 P1 下移)。→ [P1][security] Enforce agentvisibility(organization/private) — needs tenant/owner in request context #1901[EXPERIMENTAL];需设计+强制或移除。→ ADR-0056 D8current_user能力检查。→ ADR-0066 ⑥、ADR-0068EvalUser依据来源 / 关联
packages/dogfood/test/authz-conformance.matrix.ts(ADR-0056 D10)visibility(organization/private) — needs tenant/owner in request context #1901(P3)、Design: authorization model — metadata vs environment-config boundary + cross-package composition #2557、[security][observability] resolvePermissionSets swallows dbLoader failures silently — custom permission sets vanish with no log #2565(fix(security): surface swallowed permission-set resolution failures (#2565) #2568 ✅)、[security] Anonymous posture inconsistent across surfaces: /meta, dispatcher /graphql, and raw hono /data bypass enforceAuth #2567(anonymous 门跨面一致性,pre-existing)、[security][P2] Per-org / per-user IP allow-list (record-levelallowed_ip_ranges) — ADR-0069 D5 #2571(per-org IP,P2 deferred)、objectui#2221 / fix(objectql): findData 返回真实 total/hasMore (#2212) #2222(P0 ✅)