角色与范围

已被取代(2026-10-21):按范围授予的管理员、成员、访客,两人规则和服务客户端已随旧服务器退役。现在只有用户与管理员两种权限角色;运行与结果默认只有运行者和管理员可见,缺失与无权一律显示“对你不可用”。见通用模型的 R01、R02;本文只作记录保留。

主体两类:人、服务客户端。服务客户端是机器身份,只有 scope 串(例如 jumphost:run),没有角色。

三种角色,按范围授予

人的角色按范围授予:管理员、成员、访客。根范围的管理员就是 hub 管理员。按范围的角色是唯一的人权限源;今天散落的动作串(assets.approve、decisions.approve、cases.execute…)收进三个预设,只做一次迁移;界面只显示角色。预设是数据,以后可自定义。

能做什么 管理员 成员 访客
读资料、证据、登记簿、本范围任务状态 ✓ ✓ ✓
交活、运行(走执行链,不审批)、回应自己的任务 ✓ ✓ —
推送技能包、上传原件、登记资源、建 bot ✓(变更集) ✓(变更集,需管理员批) —
批变更集 ✓,不批自己 — —
人员、角色、范围策略 ✓(变更集) — —
worker、运行 profile、服务客户端 ✓ — —

原有的 targets / readers 继续限制具体资源和来源的可见范围;根管理员管角色与范围,不自动继承子范围的资料读取。

会话与令牌

  • 开发身份源只在显式配置时启用,它不是企业认证;账号与授权只来自服务端的配置与策略,请求体里自报的身份、角色或租户不授予任何权限。
  • 会话令牌默认八小时有效(可配置,一秒到二十四小时);显式请求的更短期限有效。续期只接受仍有效、未吊销、身份未禁用的会话:不要求密码,不接受自报的期限、身份或范围,范围按当前策略重取。续期轮换令牌,旧令牌留五秒并发宽限;会话族的绝对寿命是二十四小时,续期不能突破。已过期是 401,不从过期凭据恢复会话;显式注销立即吊销同族令牌。密码失败锁定、请求桶与散列并发有上限,超额是 RATE_LIMITED,错误不回显凭据或用户名。
  • 短期 run token 不属于会话:不能续期、不能注销,只由持有效租约的 worker 按操作期限续到该操作的期限为止。
  • 开发身份文件里的角色只做初次种子;之后的角色经范围变更集管理,重启不用身份文件覆盖已治理的角色。身份从配置移除后,重启即失效。

角色登记与资格披露

  • 人的登录响应带 roles(每个范围一个角色),不暴露内部动作串;机器身份只有授权范围串。范围接口披露每个范围的 twoPersonRule、policyVersion、adminCount、singleAdminMode;角色登记簿的每条记录带修订、平台核验与变更集引用。
  • 角色与范围策略的变更是变更集:登记为冻结草稿,独立决定后才生效,回应必须原样回传绑定三项。只有同租户的人能获得角色;最后一名根管理员不能移除。
  • 资格与决定的披露是固定的:decisionMode 为 self 或 independent,singleAdminMode 原样给出,审计同样记录这些字段与 policyVersion。自决有决定记录,不是静默批准。verification 只表示规则 id/版本的程序核验,不当作人的批准。
  • 动作与目标授权仍在每次访问时实时检查;人的角色不取代来源 readers 与资源策略,机器范围串不冒充人的角色。
  • 任何带凭据引用的 provider,其 Tool 最低要求成员角色,目录与调用都拒绝访客;访客只能调用无凭据的只读 provider。静态资源的共享不扩大人的角色。
  • 工具调用与个人运行的任务初始归调用者个人:范围内其他人不能读到它的内容与候选,列表在分页前先过滤;来源 ACL 与任务范围权限不互相代替。个人结果要变成团队知识,走知识审核与发布,不直接公开个人任务。

两人规则

范围策略 twoPersonRule(布尔,默认开)。审批资格:

  • 成员的变更集永远要管理员决定。
  • 管理员自己的变更集:规则开,要另一位管理员;规则关,或该范围只有一名管理员,允许本人决定,记录 decisionMode: self,带范围标志 singleAdminMode。自决不是静默放行:列表里和他决并排显示,页面顶部有提示。
  • 角色变更本身是变更集:加管理员要现有管理员批,两人规则开时要另一位。

开源默认:两人规则开;首个管理员建范围时自动进入单管理员模式并提示。一句公式:谁需要审批 = 成员,或管理员且该范围两人规则开。

这回答了什么

  • 「Circle 用管理员身份连 hub 就能自己批自己吗」:能,在单管理员模式或规则关时;但记录标注自决,决定仍绑定摘要,审计不变。
  • 「用户提交才需要审批吗」:是,成员提交永远需要管理员。
  • 「权限太散」:人只有角色,机器只有 scope 串,别的都是数据。

本文是 circle-hub 的设计规范之一,按 CC BY 4.0 授权:引用、借鉴须署名 Circle Hub 与 qingshanfeihu 并注明原始出处链接。见设计规范索引。