跳到正文

角色、预设与权限 ​

在 Beacon 里行动的是三种角色之一:人,用账号登录,带一个角色;Agent,属于某个人,带一个预设;或独立的令牌,按名字带 scope——机器的(检测点、主机、心跳、规则引擎、变更发送方、指标读取方),或账号出现之前的旧式令牌。谁能做什么,每个请求都重新解析,所以降级或停用一个人立刻限制住它的 Agent。人和 Agent 都不逐个挑选 scope;只有机器的令牌和专家的才按名字授予。流程见邀请你的团队;每条路径需要什么 scope,见 REST API 和 MCP 工具 参考。

角色 ​

人的角色,从弱到强;后一个能做前一个能做的一切,再多一些:

角色Scope用来做什么
viewerstatus:read、sessions:read看发生了什么:告警、证据、会话、控制台
oncall+ alerts:write、machines:ssh处理告警:认领、静默、备注,以及经 SSH 通道上机器
operator+ maintenance:write、incidents:write、machines:write改运行的东西:维护窗口、机器和它们的密钥
owner+ config:write、accounts:write部署本身:监控什么,以及上面的人

预设 ​

Agent 永远不超过其所有者的角色:只有预设给了它、且其所有者的角色也给了它的 scope 才能用。没有预设给 accounts:write——Agent 管人,只可能是 owner 在命令行里以自定义 Agent 的方式给了它这个 scope。

预设它要的 scope谁的 Agent 拿到它
readonlystatus:read、sessions:readviewer 的 Agent 至多拿到它
oncall+ alerts:write、machines:ssh值班的人的 Agent 至多拿到它
operator+ maintenance:write、incidents:write、machines:writeoperator 或 owner 的 Agent 至多拿到它
custom自己列一份,从人和 Agent 的九个 scope 里选,至少一个有意选择的:beacon agent add -scopes,或认领一个 scope 恰好不匹配任何预设的旧式令牌;认领绝不会放大令牌的权限

一个人的 Agent 默认拿其所有者角色允许的最强预设,除非特意选低的(beacon agent add -preset,或控制台);所有者被降级后,下一个请求起 Agent 就被按新角色约束。

OAuth 登录(Claude Code、Codex)在此之外还被限制在授权页允许的预设和机器里——它可以比 Agent 本身要得更少。Agent 经 OAuth 登录添加的 SSH 密钥,也带着那次登录的上限。

Scope ​

前九个属于人和 Agent,用在 REST API、MCP 和 SSH 通道;其余属于机器,用在指标网关(数据来源)。

Scope谁持有允许什么
status:read每个角色、每个预设读:告警、证据与时间线、变更、静默、审计、机器与会话、配置、状态页
sessions:read每个角色、每个预设会话的记录文本与录像
alerts:writeoncall 及以上认领、静默、备注、按需检测
machines:sshoncall 及以上SSH 通道和它的工具,限凭据可达的机器
maintenance:writeoperator 及以上安排和结束维护窗口
incidents:writeoperator 及以上为手工写事件预留;还没有路径用它
machines:writeoperator 及以上增删机器、连接器密钥、暂停 Agent 的访问
config:writeowner改 Beacon 监控什么:目录、目标集合、模块、状态页
accounts:writeowner;无预设管理人和所有人的 Agent;只有 owner,且只能手工给
probe:write机器的令牌,来自 beacon enroll probe <location>推送结果、取目标与设置;需要主体,只以自己的检测点身份写入
host:write机器的令牌,来自 beacon enroll host <name>推送主机指标;需要主体,只以自己的主机身份写入
heartbeat:write机器的令牌,来自 beacon enroll heartbeat <name>每次成功推送一个样本
metrics:read机器或专家的令牌经网关查询指标
alerts:send机器或专家的令牌像规则引擎那样发告警
changes:write机器或专家的令牌发送变更事件

独立的令牌按名字带 scope,创建时就定死;Agent 的凭据则跟着 Agent 走——无论它出示哪个令牌或 OAuth 登录,能做的是 Agent 的预设与其所有者角色此刻都允许的。GET /api/v1/token 和 POST /api/v1/token/renew 接受任何 scope:令牌本身就是凭据。

机器 ​

probe:write 和 host:write 需要主体——令牌以之写入的检测点或主机——网关给它写入的一切打上主体标签,取代发送方对自己的任何描述,一个检测点冒充不了另一个。机器已到期(目录里的 vps 过了日期)的令牌不能再写入。Agent 或令牌在 SSH 通道上可达的机器是各自的一份列表;空列表表示全部,OAuth 登录的列表与 Agent 的取交集,只到达两者都允许的。

令牌是 lbt_ 加 52 个字符;Beacon 只存它们的 SHA-256。令牌在创建后 1 小时到 2 年之间过期。持有者在过期前续期——新的 secret,名字、scope、主体、机器和密钥都不变,旧 secret 再用十分钟——至多一天一次;注册的机器令牌不续期,用 beacon enroll -rotate 换新。吊销的令牌立即失效。