用户权限与模型密钥

补编设计稿,2026-10-20;实施状态见阅读导航。本文件依据现有项目约定补写,不是缺失原文的恢复,也不表示功能已经实现。

1. 依据与范围

  • 根 AGENTS.md 是开发协作的有效约定;本文件细化身份、授权及密钥生命周期。
  • 数据模型、稳定首版 API 和任务协议以正式开发规格为准。
  • 所有时限、容量、保留期和预算取自设计决策与参数基线,本文件不维护第二套数值。
  • 首个交付闭环包含账号、设备与能力授权、会话撤销和 browser.open_url;模型、BYOK、私人聊天及审批属于后续规划,默认关闭。
  • 未开放功能必须在后端和执行端拒绝调用;前端入口隐藏只改善体验,不构成权限边界。

2. 身份与对象

对象 身份或所有者来源 授权依据
Web 用户 服务端验证的当前会话 账号状态、角色、会话状态及对象权限
Windows 设备 配对后独立设备凭据 设备状态、凭据版本及已认证连接绑定
任务 创建事务中的当前用户 任务所有者、设备授权、能力授权和当前策略
任务输出、截图和文件 从所属任务继承所有者 任务内容权限与产物类型的独立限制
私人聊天及计划 当前认证用户 私有所有权;设备管理权不授予正文访问权
模型配置 当前认证用户 配置所有权;平台配置另有管理权限
排障访问授权 明确授权流程记录 被授权对象、用途、范围、期限和审计

客户端不得决定所有者,也不能通过提交 user_id、替换路径 ID 或 WebSocket 订阅参数获得其他用户权限。 设备配对仅建立设备身份,不自动产生任何普通用户的设备或能力授权。

3. 角色权限矩阵

操作 super_admin operator viewer
创建、禁用用户和重置访问 允许,需审计 拒绝 拒绝
配对、撤销设备及分配权限 允许,需审计 拒绝 拒绝
查看设备概要 全局管理范围 已授权设备 已授权设备
创建执行任务 全局设备权限,仍受能力策略限制 已授权设备及能力 拒绝
读取本人任务内容 对象仍获授权时允许 对象仍获授权时允许 对象仍获授权时允许
读取同设备其他人的任务正文或输出 需单独排障授权 拒绝 拒绝
查看任务运维摘要与脱敏审计 允许 仅本人可见任务事件,不开放审计查询入口 仅本人可见任务事件,不开放审计查询入口
取消任务 本人任务;独立管理取消入口后续规划 本人且仍有执行权限的任务 拒绝
读取他人私人聊天 需单独排障授权 拒绝 拒绝
管理本人模型配置(后续) 允许 允许 可配置问答模型,不授予执行权
读取他人模型密钥明文 拒绝 拒绝 拒绝
修改或删除审计记录 拒绝 拒绝 拒绝

viewer 读取本人历史任务适用于角色降级等场景,仍需保有相关设备读取权限。 全局设备权限不覆盖能力禁用、目标网络策略、审批要求和 Agent 本地策略。 运维摘要只包含必要标识、状态、时间和脱敏错误码,不包含任务参数、目标 URL、输出、聊天正文或密钥。 管理员独立管理取消入口属于后续规划,首版不开放;首版设备或权限撤销可由系统按任务规则触发取消。未来管理取消须有发起者与原因审计,不附带读取用户内容的权限。

4. 授权判定与撤销

  1. 验证用户、会话、设备和设备凭据状态,解析对象所有者。
  2. 验证角色允许该操作,以及相应设备读取或执行授权。
  3. 验证能力授权、参数 Schema、目标策略、有效期和适用审批。
  4. 使用统一授权 Service 返回允许或稳定错误码;路由不得复制一套判断。
  5. 在创建、分发、逻辑开始许可和每一步工作流分别重检,不能沿用创建时的永久快照。
  6. Agent 验证设备绑定、许可与任务内容绑定、有效期、去重记录及本地策略后才执行。

任务开始许可的数据库事务是逻辑开始点;许可与撤销采用总纲规定的相同加锁顺序。 撤销事务先提交时,不得批准新的开始许可;许可先提交时,任务可能已经产生副作用,只能发起取消并如实记录。 不得以“先检查、稍后无锁更新”的方式宣称消除了撤销竞态。 权限版本用于检测缓存过期,不能替代当前有效权限及事务检查。 用户禁用或重置访问后,失效相关会话并关闭控制台连接;设备或权限撤销后,移除对应订阅并拒绝新执行。 降级为 viewer 后保留符合读取条件的个人记录,立即失去创建和取消执行任务的权限。 已经开始的任务不因撤销被伪装为未发生;其事件和证据按真实结果保留。

5. 登录与会话

  • 禁用公开注册;首个管理员通过一次性初始化流程创建,初始化完成后关闭入口。
  • 密码采用安全哈希;不存在默认密码,后台不能读取或回传密码。
  • 首版采用同源部署的服务端会话和 Secure、HttpOnly、明确 SameSite 的 Cookie。
  • 状态变更请求校验 CSRF 令牌与 Origin;不能仅依赖 SameSite,退出登录也不能使用无保护的 GET。
  • /ws/console 校验会话和精确允许的 Origin,连接建立后仍验证每个订阅及敏感操作。
  • 会话标识只经 Cookie 传输;长期用户凭据不得进入 URL、localStorage 或 WebSocket 查询参数。
  • 登录按账号和来源组合限速;错误信息不区分账号不存在、密码错误与账号禁用等敏感细节。
  • 登录、会话轮换、退出、撤销、密码重置与管理禁用均留下脱敏审计记录。
  • 退出使当前会话失效;重置访问和账号禁用使该用户全部会话失效,并处理现有 WebSocket。
  • 生产管理员启用 MFA;MFA 恢复、设备更换和紧急访问须在开放生产前完成可审计设计与验证。
  • 会话失效后停止展示新增敏感内容,清理前端相关缓存;重新登录不能复用失效订阅。

6. 设备凭据

配对码高熵、短期、一次性,仅存哈希;消费与设备身份创建必须使用事务避免并发复用。 Agent 凭据独立于 Web 会话,服务端仅保存可验证的受保护表示,注册响应中的秘密不得进入日志。 Agent 使用 DPAPI 的用户作用域或适当的 Credential Manager 存储,并配置文件或条目访问权限。 DPAPI 的机器作用域允许同一机器其他用户解密,不应将其视为用户隔离;参见 Microsoft CryptProtectData 文档。 凭据绑定运行 Agent 的 Windows 用户,明确用户迁移、凭据丢失与重新配对流程,不以明文备份绕过保护。 轮换使用明确凭据版本和生效规则,旧版本撤销后不得通过旧连接继续获得新任务。 设备撤销立即阻止新许可并关闭相关连接;客户端拒绝跳过证书校验,不能自动退回不安全传输。

7. 模型配置与 BYOK:后续规划

模型调用默认经后端代理;浏览器仅提交用户输入和选择的配置 ID,不直接持有平台密钥。 个人配置的候选元数据为配置 ID、所有者、服务商标识、已批准地址、模型标识、secret_ref、密钥版本和状态。 这些是设计字段,正式开放前必须纳入版本化 Schema、迁移和对象授权测试。 配置的读取结果只含元数据及“已配置”标志,不包含可还原的秘密或不必要的密钥片段。 平台管理员可管理平台配置及可用服务商名单,不能因此读取或使用他人的 BYOK。 配置选择以当前用户授权为依据;配置 ID 可见或可猜测不代表有权调用。

生命周期操作 必须执行的规则
创建 校验配置所有者、服务商和目标地址;秘密写入密钥管理服务或独立加密存储
保存 业务库优先只保存 secret_ref;加密主密钥独立于业务库、源码和普通日志
测试 当前用户有权;只向批准地址发出最小请求,消耗受控预算,返回脱敏诊断
使用 每次调用重检所有权、启用状态、密钥版本、出站授权和预算
替换或轮换 创建新版本,切换引用并失效旧缓存,避免半写入配置
撤销 先禁用新调用和缓存引用,再安排销毁;记录在途调用的已发生用量
删除 移除业务可用引用,安排秘密销毁;审计仅保留必要标识和生命周期事件
恢复备份 保持已撤销版本不可用;不能因旧数据库恢复重新激活已销毁或撤销的秘密

跨数据库与密钥存储的操作无法假设原子提交,应使用可恢复状态记录和补偿清理处理孤立秘密。 删除成功的语义首先是“不能再使用”,密钥销毁状态必须可追踪;服务商端的密钥吊销与本地删除分别记录。 已经发送给服务商的请求不能承诺撤回,停用后应停止后续请求并保留实际费用事实。 故障转移只能使用预先批准且用户授权的数据出站目标,不得把 BYOK 或正文转发给未授权服务商。 用户输入、异常堆栈、网络诊断和模型响应均按可能含秘密处理,界面呈现前执行适用脱敏。

8. 私人内容与排障

私人聊天、任务参数、任务输出和截图分别进行对象授权,不能因能够查看任务列表而开放所有明细。 后续排障授权必须列明授权人、受访人、对象范围、读取目的、有效期及实际访问记录。 首版未实现排障授权时,管理员读取他人内容的接口保持关闭,不提供临时超级管理员绕过开关。 授权到期或主动撤销后停止新读取并失效缓存链接;历史访问审计仍保留。 下载链接若未来引入,必须短期、限定对象且满足撤销规则,不能变成永久公开 URL。

9. 验收要求

  • 使用两个普通用户与同一设备验证:授权设备可见不代表可以读取他人的任务、输出或订阅事件。
  • 验证 viewer 无法通过直接 API、WebSocket 或修改请求创建或取消任务。
  • 验证禁用用户、降级、撤销设备和能力权限后,已有会话与订阅按规则失效。
  • 在真实 MySQL 8.4 上并发运行撤销与开始许可,核对事务提交顺序、结果和审计。
  • 验证管理员可看运维摘要,直接请求他人私聊或输出被拒绝;授权不足不泄露对象存在性。
  • 验证登录限速、CSRF、错误 Origin、已撤销 Cookie 和重复配对码的拒绝路径。
  • 在真实 Windows 上验证凭据受保护存储、运行身份变化、轮换、撤销及重新配对。
  • 模型功能开放前验证跨用户配置访问、密钥替换与删除、缓存失效、备份恢复和日志脱敏。
  • 模型与 BYOK 关闭时,相关服务不可通过直接请求、任务参数或模型输出被间接启用。

上述内容是待实施验收标准;测试记录应区分单元模拟、MySQL 集成、真实 Windows 和真实服务商验证。