角色与权限
每个成员身份都带有两种角色之一:管理员 或 成员。没有自定义角色,也没有按资源划分的权限。角色只作用于一个组织 — 你可以在一个组织里是管理员,在另一个组织里是成员。
一句话概括:管理员管钱和成员名单,成员管算力。
权限矩阵
| 领域 | 操作 | 管理员 | 成员 |
|---|---|---|---|
| 计费 | 查看余额、交易记录和每日花费 | 是 | 是 |
| 计费 | 通过 Stripe Checkout 充值余额 | 是 | 否 |
| 邀请 | 创建邀请链接 | 是 | 否 |
| 邀请 | 列出待处理的邀请 | 是 | 否 |
| 邀请 | 撤销邀请 | 是 | 否 |
| 成员 | 查看成员列表 | 是 | 是 |
| 成员 | 修改其他成员的角色 | 是 | 否 |
| 成员 | 移除成员 | 是 | 否 |
| 成员 | 重命名组织 | 是 | 否 |
| 实例 | 部署新实例 | 是 | 是 |
| 实例 | 启动和停止组织内的任意实例 | 是 | 是 |
| 实例 | 销毁组织内的任意实例 | 是 | 是 |
| 实例 | 读取日志和连接信息 | 是 | 是 |
| 模板 | 创建、编辑和删除组织的模板 | 是 | 是 |
| 模板 | 复制 system、public 或组织的模板 | 是 | 是 |
| API 密钥 | 查看组织的密钥、密钥前缀和创建者 | 是 | 是 |
| API 密钥 | 创建个人密钥 | 是 | 是 |
| API 密钥 | 创建团队密钥 | 是 | 否 |
| API 密钥 | 撤销自己的个人密钥 | 是 | 是 |
| API 密钥 | 撤销组织内的任意密钥 | 是 | 否 |
| 用量日志 | 读取组织的用量日志 | 是 | 是 |
| SSH 密钥 | 在自己的账户上添加或删除密钥 | 是 | 是 |
SSH 密钥完全不在角色体系之内:它们属于用户而不属于组织,任何角色都无法访问别人的密钥。参见 切换组织。
成员能做的事常常出人意料
成员不是只读的旁观者。成员可以:
- 部署,这会立刻开始消耗组织共享的预付余额。
- 销毁组织内的任意实例,包括管理员创建的实例。销毁会永久删除磁盘 — 参见 停止与销毁。
- 编辑或删除组织拥有的任意模板,这会改变同事下一次启动的内容。
只有在这三件事你都能接受时,才把别人邀请为成员。
只有管理员能做的事
管理员掌握着成员碰不到的两样东西:钱和成员名单。
- 充值余额并打开 Stripe Checkout。余额为零时尝试部署的成员看到的是让他去找管理员的提示,而不是付款按钮。参见 充值余额。
- 创建、列出和撤销邀请。
- 提升、降级和移除成员,以及重命名组织。
矩阵上的其他所有操作对两种角色都开放。
修改某人的角色
在 团队 页面,使用成员所在行旁边的角色选择器。改动会在他们的下一次请求时生效;已经打开的控制台会在下次刷新时同步。
你不能修改自己那一行 — 你的角色显示为徽章而不是选择器。如果需要把自己降级,请找另一位管理员。
移除成员
移除控件位于每个成员所在行的末尾。这个人会立刻失去对组织的实例、模板、密钥和用量日志的访问权限,该组织也会从他的工作区切换器中消失。他自己的 SSH 密钥和个人工作区不受影响。
shk_ 密钥自行完成鉴权,并且始终绑定在签发它的组织上,无论创建者是否仍是成员。移除某人时,请在同一时间到 API 密钥 页面撤销他创建的密钥。
最后一名管理员
组织始终至少保留一名管理员。移除最后一名管理员,或把他降级为成员,都会失败并返回 LAST_ADMIN,错误信息为“组织至少需要一名管理员”。请先提升其他人。
API 密钥始终以成员身份操作
无论由谁创建,API 密钥对创建它的组织都只有成员级别的访问权限。管理员操作 — 计费、邀请、成员管理、签发或撤销其他密钥 — 在 shk_ 令牌上会被拒绝并返回 ADMIN_REQUIRED。这些调用需要已登录的会话。
团队密钥和个人密钥的唯一区别在于由谁管理:团队密钥由管理员管理,个人密钥属于它的创建者。两者的权限都不会超过成员。参见 API 密钥。
个人工作区
你的个人工作区只有一名成员 — 你自己,身份是管理员。它无法被邀请加入,也不能容纳团队。在其中创建邀请会返回 PERSONAL_ORG。需要第二个人时,请创建一个真正的组织。