Sign inGet Started

用户、团队与角色

Bird 中的人员访问基于角色:用户在工作区上持有一个角色,每个角色对应一组固定权限。无需其他配置,选对角色即可获得相应权限。
角色控制 人员 在控制面板中能做什么。 服务 能做什么由 API 密钥权限范围控制:同一套权限词汇,按密钥而非按角色授予。

工作区角色

日常使用的角色位于工作区上(参见工作区):admin、developer 和 analyst。在控制面板的 Settings > Team 中管理它们。
每项权限是一个 {scope, level} 对,其中 level 为 read 或 write(write 包含 read)。角色是这些权限对的命名固定集合:
权限范围write 的含义admindeveloperanalyst
workspace编辑工作区设置(名称、通知)writereadread
api_keys创建和撤销 API 密钥writewritenone
emails发送邮件writewriteread
email_management管理屏蔽列表和邮件配置writewriteread
email_marketing管理联系人、受众和群发writewriteread
domains添加、验证和移除发送域名writewriteread
webhooks配置 webhook 端点writewriteread
sms发送 SMSwritewriteread
sms_management管理 SMS 发送方、屏蔽列表和设置writewriteread
verify发送和校验验证码writewriteread
verify_management配置验证发送方和国家/地区writewriteread
whatsapp发送 WhatsApp 消息writereadread
whatsapp_management管理 WhatsApp 模板和设置writewriteread
assets上传、更新和删除资源及文件夹writewriteread
compliance管理注册身份、提交内容和证明材料writewriteread
lookup查询电话号码、电子邮件地址和身份匹配writewritenone
mailbox发送和回复邮箱消息writewriteread
mailbox_management创建、更新和删除邮箱及接收规则writewriteread
realtime创建应用和发布事件writewriteread
voice读取通话记录和统计数据,以及发起呼叫writewriteread
voice_management管理中继、网关、号码、主叫 ID 和目的地writewriteread
ip_pools查看组织的 IP 池(只读)readreadread
members管理工作区团队和邀请writereadread
analytics查看报告和送达率分析readnoneread
audit查看审计日志readnoneread
request_logs查看请求日志(只读)readreadread
实际使用中,admin 管理整个工作区,包括团队和设置。developer 可以构建集成、管理域名和 webhook,以及创建 API 密钥。analyst 拥有只读权限。
有两行值得特别说明。ip_pools 即使对 admin 也是只读的,因为购买专用 IP 和管理 IP 池需要组织级别的 org:ip_pools:write 权限范围。WhatsApp 的权限也将管理与消息发送分开。developer 可以通过 whatsapp_management:write 管理模板和设置,但只能通过 whatsapp:read 读取消息;发送仍限于 admin。其他产品使用相同的 {scope, level} 模型添加权限范围。
任何端点返回 403,表示已认证的主体缺少该端点所需的 {scope, level}。解决方法是更改角色(针对人员)或创建具有正确权限范围的新密钥(针对服务)。

组织角色

工作区背后是一个组织,它拥有账单和整体成员列表。两个角色管理该层级:
  • owner:全部权限。对组织和工作区操作拥有完整的读写权限。一个组织可以(也应该)有多个 owner。创建账户的人默认为 owner。
  • billing_admin:账单和组织设置(org:billing:write、org:settings:write),以及对组织成员列表和工作区元数据的读取权限。无法访问工作区内部的资源。
这些角色在日常中很少用到:大多数团队成员只需要一个工作区角色。

成员与团队

成员资格是隐式的:如果用户持有组织角色或工作区角色,就属于 "in" 你的组织。不存在需要单独管理的成员记录。
你可以在控制面板的 Settings > Team 中管理工作区的人员,由工作区 members 权限范围控制;工作区 admin 无需任何组织级角色即可在此管理团队。团队管理属于人的操作,因此 API 密钥不能持有 members 权限范围(参见身份验证)。
Bird 控制面板中的工作区 Team 设置,显示成员及其角色以及邀请成员操作
移除某人的工作区访问权限只会移除该角色,不会影响其持有的任何组织角色。将某人从组织中移除则会撤销其全部账户访问权限。他们创建的 API 密钥会继续工作,因为每个密钥独立于其创建者,归属于工作区。

邀请

在 Settings > Team 中,输入邮箱地址并选择角色即可发出邀请,Bird 会自动处理后续流程。按钮背后是一个 智能邀请:同一个流程既能处理已在组织中的同事,也能处理从未接触过 Bird 的新用户。
  • 已是组织成员:立即以指定角色加入工作区。无需邮件,无需等待;响应为成员对象。
  • 尚未成为成员:Bird 创建一封邀请,向其发送注册链接,响应为带有 pending 状态的邀请对象。链接有效期为 7 天;过期后需重新邀请。
响应中的 type 字段(team_member 或 invitation)表明发生了哪种情况。对同一邮箱发起第二次待处理邀请会返回 409 而非创建重复记录,你可以随时在同一页面撤回待处理的邀请。
Owner 可以邀请其他 owner 或 billing_admin。该邀请需要 org:members:write,只有 owner 持有此权限。

防护机制

无论由谁发起,每次角色变更都会执行两个不变量:
  • 最后一个 owner 不可变更。 降级或移除组织中唯一的 owner 会返回 409:组织永远不能没有 owner。请先提升第二个 owner。
  • 不能更改自己的访问权限。 更改自己的角色或移除自己会返回 403。这既防止意外自锁,也防止悄悄自我提权;必须由另一个 admin 或 owner 来执行变更。

上下文的选择方式

成员和团队端点存在于两个层级,请求指向哪个组织或工作区取决于其认证方式:
  • 会话认证(控制面板或以你的身份操作的工具)按请求提供上下文:在组织级端点上提供 X-Organization-Id,在工作区级端点上提供 X-Workspace-Id。
  • API 密钥隐式携带上下文。密钥归属于你的工作区,同时确定了组织;无需请求头,与密钥冲突的上下文请求头会被拒绝并视为格式错误(400)。
参见工作区了解完整的上下文解析模型。

后续步骤

相关资源

继续查阅此主题的文档、指南和示例。资源为英文。

获取实施简报