RBAC 与审批
角色、作用域以及生产发布的准入控制。
Showly 的访问模型分为三层:工作区角色、操作作用域和影响生产 环境的变更审批。本页说明三者如何配合。
角色
用户的角色是在工作区级别设置的:
| 角色 | 可以做 |
|---|---|
owner | 完全访问权限,包括成员、令牌、计费、工作区安全、预览、实时发布、删除和回滚。 |
member | 创建项目和站点、管理产品功能、创建预览并发布;不能管理成员或计费。 |
developer | 管理和发布现有站点和预览;无法创建项目或管理工作区治理。 |
viewer | 阅读站点、项目、部署、通知和附属数据。 |
billing | 查看项目/站点并管理账单、付款方式、退款、优惠券和财务审计;不能修改站点。 |
当五个内置角色不适合时,工作区还可以定义自定义角色(通过角色权限)。
每位用户在一个工作区中最多拥有一个角色。不同工作区的成员资格相互独立: 在某个工作区是所有者,不会获得其他工作区的任何权限。
作用域
MCP 令牌、API 令牌和服务令牌都带有作用域,并且只能获得签发者 自己拥有权限的子集。每个作用域使用 resource:verb 形式。常用 MCP 作用域包括:
project:read
site:read
site:write
preview:read
preview:create
checks:run
publish:request
logs:read
template:read
template:create
大体上,viewer 只对应读取作用域;member 和 developer 可获得 智能体交付流程所需的预览、检查、发布和日志作用域;member 还可 创建项目并管理更多产品功能。billing 拥有财务权限,但不能修改站点 或部署。只有 owner 能管理成员、邀请、令牌、工作区安全和完整计费 设置。
令牌只能执行其范围内的操作,无论是谁发行的。发行具有您不具备的范围的令牌将被拒绝。
请参阅范围参考,了解规范的范围到工具的映射。
审批
审批用于控制影响生产环境的变更。最常见规则是:生产发布必须得到 指定角色中的 N 人批准。
批准请求默认值:
requiredApprovals默认为 1。allowedRoles默认为空列表,这意味着任何角色都可以批准。- 拒绝是终态,被拒绝的请求不能再次批准。
当代理通过 MCP 调用 request_publish 时,生成的发布请求为 使用 requiredApprovals: 1 和 allowedRoles: ["owner", "member"] 创建。 此流程需要 approvalWorkflows 权利。
可在工作区设置 → 审批策略中按站点或工作区自定义。
职责分离
用户无法批准自己的请求。这是在数据模型级别强制执行的:如果您提议发布,则具有允许角色的其他人必须批准它。
审计记录
每个动作——代理、人类、API——都会写入一个审计行:
- 参与者(用户 ID + 当时的角色,或 MCP 客户端 ID + 范围)
- 动作(作用域动词 + 资源 ID)
- 结果(
allowed、denied、pending_approval、approved、rejected) - 时间
审计记录只能追加,可通过 Showly 的审计界面查看。 目前不承诺外部 SIEM 导出。
紧急情况
Showly 当前不提供可通过 MCP 或公共 Web 流程使用的 emergency 发布旁路。紧急修复仍需先获得 ready 预览,再加速审批并明确发布; 无需预先注册 OTP。如果未来增加 break-glass 通道,它必须:
- 仍然经过审批,不能只依赖授权。
- 写入带
emergency=true的专用审计记录。 - 自动开启后续事后分析任务。