被飞书和火山引擎账号体系整崩溃了?一个程序员彻底讲清楚背后的设计逻辑
被飞书和火山引擎账号体系整崩溃了一个程序员彻底讲清楚背后的设计逻辑很多程序员第一次接入飞书开放平台或火山引擎 API时都会经历一个非常崩溃的过程。你只是想写个程序调用 API。结果打开文档后发现TenantAppUserAccess TokenApp TokenTenant TokenUser Token子账号主账号IAM权限一堆概念扑面而来。很多人第一反应是为什么账号体系这么复杂但当你理解背后的设计逻辑之后你会发现一件事飞书、火山引擎、AWS、阿里云、腾讯云本质上用的是同一套账号架构模型。今天这篇文章就从程序员视角彻底拆解这套系统设计。一、为什么云平台账号体系这么复杂很多开发者都有一个误区网站账号 用户账号但云平台完全不同。云平台面对的不是个人用户而是企业组织。例如一家公司可能有1000 个员工20 个开发项目50 个开发者10 个管理员100 个应用如果只有一个账号体系系统会立刻混乱。所以大厂统一采用多层账号架构。基本结构是组织Tenant ├── 用户User ├── 应用App └── 权限Permission这套模型几乎是所有 SaaS 和云平台的标准设计。二、飞书账号体系到底是什么结构飞书其实是一个企业 SaaS 平台。它的核心模型是企业Tenant │ ├── 用户User │ └── 应用App1 企业 Tenant企业就是租户空间。例如字节跳动腾讯阿里你的公司每个企业都有独立的数据空间。企业里包含用户群文档应用数据这就是飞书 API 里的Tenant Access Token它代表企业级访问凭证。2 用户 User用户就是企业员工。例如张三李四王五用户登录飞书后会获得User Access Token可以调用用户信息日程文档群消息3 应用 App开发者创建的程序。例如飞书机器人自动审批系统自动报表系统OA 系统每个应用都会生成App ID App Secret用来换取App Access Token飞书账号体系架构图飞书本质上是一个典型的多租户 SaaS 架构。核心是Tenant │ ├── User │ └── App三、飞书 Token 为什么这么多很多人第一次看飞书 API 文档时会崩溃。因为 Token 有很多种App Access TokenTenant Access TokenUser Access Token但其实逻辑很简单。1 App Token应用级 Token。使用场景机器人发消息 应用调用API2 Tenant Token企业级 Token。使用场景获取员工列表 企业组织结构3 User Token用户授权 Token。使用场景获取用户日程 操作用户文档总结一句话App Token 应用权限 Tenant Token 企业权限 User Token 用户权限四、飞书 API 授权流程理解授权流程非常重要。基本流程是应用创建 ↓ 申请API权限 ↓ 管理员授权 ↓ 用户授权 ↓ 获取Token ↓ 调用API飞书授权流程图这就是典型的OAuth 授权模型。五、火山引擎账号体系火山引擎其实是云平台架构。和飞书不同。它的结构是主账号 │ ├── 子账号 │ └── 云资源1 主账号主账号就是企业账号。例如公司注册的火山云账号拥有所有资源所有权限计费权限2 子账号子账号用于团队协作例如开发运维数据团队财务每个人权限不同。火山引擎 IAM 权限体系核心结构主账号 │ ├── 用户 │ ├── 角色 │ └── 权限策略这和 AWS / 阿里云完全一样。六、飞书和火山账号为什么不统一很多人会问飞书和火山引擎为什么不能用同一账号体系原因是定位完全不同。平台定位飞书企业协作平台火山引擎云计算平台飞书更像企业操作系统火山引擎更像云基础设施所以账号体系必须不同。七、开发者最常踩的坑我总结了几个常见问题。1 Token 用错例如Tenant Token 去调 User API直接报错。2 Token 过期飞书 Token 一般2小时过期必须刷新。3 权限没申请很多 API 报错其实是权限未开通4 子账号权限不足在火山引擎中子账号默认没有权限必须绑定策略。八、大厂账号体系的统一设计如果总结飞书和火山引擎。其实核心模型只有一句话Tenant User App Permission结构如下企业Tenant │ ├── 用户User │ ├── 应用App │ └── 权限Permission这种架构可以支持SaaS云平台开放平台API生态九、为什么所有大厂都这么设计原因只有三个。1 多租户隔离不同企业数据隔离。2 权限控制不同角色不同权限。3 应用生态支持第三方开发。十、总结很多程序员第一次接触飞书或火山引擎时会觉得账号体系太复杂。但实际上这是大型 SaaS 平台的标准架构。理解这套模型之后你会发现飞书钉钉AWS阿里云腾讯云本质上都是租户 用户 应用 权限理解这个设计逻辑之后很多 API 文档就会变得非常清晰。