核心概念

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 只对应读取作用域;memberdeveloper 可获得 智能体交付流程所需的预览、检查、发布和日志作用域;member 还可 创建项目并管理更多产品功能。billing 拥有财务权限,但不能修改站点 或部署。只有 owner 能管理成员、邀请、令牌、工作区安全和完整计费 设置。

令牌只能执行其范围内的操作,无论是谁发行的。发行具有您不具备的范围的令牌将被拒绝。

请参阅范围参考,了解规范的范围到工具的映射。

审批

审批用于控制影响生产环境的变更。最常见规则是:生产发布必须得到 指定角色中的 N 人批准

批准请求默认值:

  • requiredApprovals 默认为 1
  • allowedRoles 默认为空列表,这意味着任何角色都可以批准。
  • 拒绝是终态,被拒绝的请求不能再次批准。

当代理通过 MCP 调用 request_publish 时,生成的发布请求为 使用 requiredApprovals: 1allowedRoles: ["owner", "member"] 创建。 此流程需要 approvalWorkflows 权利。

可在工作区设置 → 审批策略中按站点或工作区自定义。

职责分离

用户无法批准自己的请求。这是在数据模型级别强制执行的:如果您提议发布,则具有允许角色的其他人必须批准它。

审计记录

每个动作——代理、人类、API——都会写入一个审计行:

  • 参与者(用户 ID + 当时的角色,或 MCP 客户端 ID + 范围)
  • 动作(作用域动词 + 资源 ID)
  • 结果(alloweddeniedpending_approvalapprovedrejected
  • 时间

审计记录只能追加,可通过 Showly 的审计界面查看。 目前不承诺外部 SIEM 导出。

紧急情况

Showly 当前不提供可通过 MCP 或公共 Web 流程使用的 emergency 发布旁路。紧急修复仍需先获得 ready 预览,再加速审批并明确发布; 无需预先注册 OTP。如果未来增加 break-glass 通道,它必须:

  • 仍然经过审批,不能只依赖授权。
  • 写入带 emergency=true 的专用审计记录。
  • 自动开启后续事后分析任务。