Docs/ 安全/ 团队与 RBAC

团队与 RBAC

通过基于角色的访问控制、项目级权限和完整的操作审计追踪来组织你的团队。

创建团队

团队允许多个用户在同一 sh0 实例上协作。第一个用户(安装期间创建)自动成为拥有完全管理员权限的团队所有者。

  1. 在控制台中导航到 设置 → 团队。
  2. 你的默认团队已自动创建。你可以在此处重命名。
  3. 添加团队描述和头像(可选)。
团队设置页面,包含团队名称和描述
Note
在当前版本中,sh0 每个实例支持一个团队。多团队支持(用于管理多个客户的代理机构)计划在未来版本中实现。

邀请成员

管理员通过邮箱地址邀请新成员。sh0 不会发送任何邮件:邀请会生成一个一次性链接,只向邀请人显示一次,需要你自行转交。被邀请人打开链接后自行设置密码,你永远不会知道该密码。团队成员和角色需要 Business 许可证。

  1. 在侧边栏打开 Team。
  2. 点击 Invite User。
  3. 输入邮箱地址并选择角色(管理员、开发者或查看者)。
  4. 确认后复制 Invitation link 并发送给对方。链接有效期 7 天,只能使用一次,之后不会再显示。
邀请成员对话框,包含邮箱字段和角色选择器
Terminal
curl -X POST https://your-server:9000/api/team/invite \
  -H "Authorization: Bearer YOUR_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "email": "[email protected]",
    "role": "developer"
  }'

链接被使用前,成员显示为 Invitation pending(7 天后变为 Invitation expired)。Generate access link 会生成新链接,旧链接随即失效。使用 CLI 时,sh0 users invite <email> --role developer 同样会输出链接。

角色类型

sh0 提供三种内置角色,访问级别递增:

角色描述使用场景
管理员对所有资源、设置、团队管理和账单的完全访问权限。CTO、DevOps 负责人、基础设施所有者
开发者可以创建、部署和管理应用。无法访问团队设置或服务器配置。软件工程师、DevOps 团队成员
查看者只读访问。可以查看应用、日志和指标,但不能修改任何内容。利益相关者、QA 团队、审计人员
团队成员列表,显示不同角色的标记

权限矩阵

以下是每个角色权限的完整说明:

操作管理员开发者查看者
查看应用和控制台是是是
查看日志与指标是是是
创建和部署应用是是否
管理环境变量是是否
管理域名与 SSL是是否
访问终端是是否
管理团队成员是否否
服务器设置与节点是否否
账单与许可证是否否

项目级访问

除了全局角色外,你还可以将用户的访问限制在特定项目。当不同团队成员处理不同应用时,这非常有用。

  1. 前往项目的 设置 → 访问 选项卡。
  2. 点击 添加成员 并选择团队成员。
  3. 为此项目选择访问级别(完全访问、仅部署、仅查看)。
项目级访问设置,显示成员权限
Tip
默认情况下,管理员可以访问所有项目。除非你明确限制,否则开发者可以看到所有项目。查看者只能看到被授予访问权限的项目。

审计日志

sh0 记录团队成员执行的每个重要操作。审计日志提供谁在何时做了什么的完整时间线。

跟踪的事件包括:

  • 登录和登出事件
  • 应用创建、部署和删除
  • 环境变量更改
  • 域名添加和移除
  • 团队成员邀请和角色变更
  • 设置修改
  • 数据库操作(备份、恢复、删除)
审计日志,显示团队操作的时间线,包含用户、操作和时间戳
Terminal
curl https://your-server:9000/api/team/audit-log?page=1&per_page=50 \
  -H "Authorization: Bearer YOUR_TOKEN"
Note
审计日志默认保留 90 天。你可以在 设置 → 安全 中配置保留期限。

移除成员

管理员可以从 设置 → 团队 → 成员 中移除团队成员。移除成员会:

  • 立即撤销其所有活跃会话。
  • 移除其对所有项目和资源的访问权限。
  • 不会删除他们创建的任何资源(应用、数据库等)。
  • 在审计日志中保留其操作记录以便追责。
Terminal
curl -X DELETE https://your-server:9000/api/team/members/usr_abc123 \
  -H "Authorization: Bearer YOUR_TOKEN"
Warning
团队所有者不能被移除。要转让所有权,请先从 设置 → 团队 重新分配所有者角色。