SaaS 与权限架构
约 2547 字大约 8 分钟
2026-10-27
SaaS 能力把多个客户、应用和成员组织到同一平台。权限架构进一步回答:当前人员能够进入什么应用、执行什么动作,以及访问哪些项目、区域和设备。各层检查共同决定实际结果。
本文从组织关系出发,解释请求如何携带业务上下文、范围如何落到数据查询与设备控制,以及 AI 工具和实时订阅如何沿用这些边界。
放大查看 SVG ↗ · 下载 SVG · 下载高清 PNG
1. 先分清组织、应用、动作与数据范围
| 对象或机制 | 管理什么 | 示例 |
|---|---|---|
| 企业与成员 | 客户归属、成员关系和组织结构 | 人员属于哪家企业及相应部门 |
| 企业应用 | 应用开通关系、状态与有效条件 | 企业是否能使用设备运维应用 |
| 用户与角色 | 当前身份在相应上下文中的职责 | 管理人员、只读查看人员等实际角色 |
| 资源与操作动作 | 允许执行哪些操作 | 查看、修改、删除、管理或控制 |
| 项目与区域 | 业务资源的覆盖范围 | 能否进入某项目,以及能操作哪些区域 |
| 设备与物模型权限 | 对象及具体字段的访问或控制范围 | 可以查询某设备,但只能控制获准属性 |
| 设备分享 | 特定设备的独立授权来源 | 获准访问分享设备及指定物模型字段 |
应用开通为企业提供产品入口,角色和数据范围进一步约束成员的实际操作。同一个人员在不同企业或项目中可以具有不同权限,界面应按当前上下文表达,而不是给人员贴一个永久通用的“管理员”标签。
2. 权限在三个位置分别表达
接口合同声明准入身份、资源和动作等要求,为接口维护与客户端生成提供依据。前端界面通过路由、菜单和按钮呈现当前可用入口。服务端运行时读取可信身份与资源上下文,并在实际业务逻辑、查询和控制中落实检查。
三者需要保持一致。接口文档中的权限标记不能代替业务实现,隐藏按钮也不能阻止一个直接发送到服务端的请求。判断一次操作是否被允许,最终应观察该接口在当前业务条件下的实际裁决。
3. 一次业务请求如何确定范围
认证链识别用户身份、企业和应用上下文,并按相应入口加载资源信息。设备业务读取目标记录后,还需要使用对象真实所属的企业、项目和区域进行校验。请求体自报的项目或界面当前选择只是输入,不能替代资源归属。
图中表达检查职责。不同公开、设备、平台和企业接口有不同入口条件,并不要求所有接口都使用完全相同的中间件流水线。
列表与单对象访问
列表通过授权项目、区域及其他实际条件限制结果。详情、修改、删除和控制则需要检查指定对象。人员在列表中看不到某台设备后,直接提交该设备 ID 也应继续受到服务端资源检查。
统计与导出
统计、聚合和导出消费同一类业务数据,也需要保持对应范围。页面可见列表与统计结果应使用一致的上下文;不能让图表或导出接口成为扩大数据范围的另一条路径。
4. 项目与区域权限如何组合
项目资源可以包含项目权限、指定区域权限和区域路径权限。当前区域有效权限的主要选择顺序是:
- 先确认用户、项目资源及对应项目访问条件。
- 命中精确区域 ID 授权时,使用该项。
- 否则选择最长匹配的区域路径授权。
- 未命中区域项时,使用项目默认权限。
区域能够显式获得与项目默认值不同的权限。例如,项目默认只读,某个区域明确授予读写时,该区域按当前覆盖规则可以获得读写。因此,项目默认权限与区域有效权限需要分别理解。
权限结果还要区分管理、读写、只读与无权。范围内可见一台设备,并不意味着可以对其执行所有控制动作。更详细的等级和选择规则见项目、区域与物模型数据权限。
5. 设备分享与物模型字段控制
项目授权以项目和区域为主要组织方式,设备分享则是针对具体设备的另一种访问来源。当前设备授权入口会结合相应分享关系与物模型权限处理实际操作,扩展接口时需要复用完整授权逻辑。
物模型权限进一步细化可以读写的属性或行为。以批量控制为例,每个目标设备都需要完成授权与参数处理,并实际使用过滤后的控制参数。只检查第一台设备或只检查“设备可见”,都不足以说明整批动作合法。
6. AI 工具和执行空间如何接入权限
AI 服务先围绕当前人员、角色、会话和项目装配可用能力。模型看到工具说明后,可以组织调用参数;真正的数据访问和设备动作仍由目标业务接口检查。
HTTP 工具、MCP 工具和脚本在执行方式上不同,但均不应通过自然语言、工具参数或配置选择扩大当前业务范围。执行空间的目录、进程和资源限制用于管理代码运行环境;企业、项目、设备和字段权限仍由业务入口落实。
项目范围的网页 AI 会话还需要维护上下文边界。当前显式项目网页会话会停用 Clone 长期记忆召回,避免把缺少项目隔离字段的长期事实带入另一项目。详见AI 与工具执行架构。
7. WebSocket、后台任务与 Hook
WebSocket 具有连接身份、频道与业务订阅检查。连接成功后,客户端仍需按频道申请订阅;切换项目时,要处理旧订阅、旧请求和旧响应,保持显示范围与当前项目一致。
后台任务按照相应记录与业务上下文工作,不能仅因为由服务进程发起就跳过数据归属。Hook 的数据过滤和订阅检查也需要遵循已接入的能力合同:调用方提交什么范围,外部实现返回什么过滤条件,最终条件是否被查询使用,都属于同一授权链路。
权限变更后的缓存与订阅收敛,需要沿具体业务机制核对。菜单消失只能说明交互入口发生变化,不能单独证明已有连接与全部数据访问均已收敛。
8. 典型授权场景
| 场景 | 应观察的业务结果 |
|---|---|
| 企业已开通应用,成员只有查询动作 | 可以进行获准查询,控制仍按动作权限判断 |
| 项目默认只读,无区域覆盖 | 范围内可读,控制受到读写等级约束 |
| 某区域显式授予读写 | 按区域有效权限处理该区域资源 |
| 精确区域与路径授权同时命中 | 使用精确区域项;路径匹配选择最长项 |
| 设备属于另一企业 | 不能通过替换设备或项目参数取得访问权 |
| 分享只允许部分字段 | 读取或控制遵循分享与物模型字段范围 |
| AI 查询未授权项目 | 业务链路拒绝越权读取,不能补造查询结果 |
| 项目切换或权限撤销 | 核对查询、缓存、订阅与界面显示的实际收敛 |
企业隔离主要表达数据归属与访问约束,物理部署可以采用共享基础设施或其他经过验证的组合。物理隔离需求应在部署设计中单独确定。
架构专题导航
平台总体架构 · 后端运行架构 · IoT 接入与数据架构 · AI 与工具执行架构 · 前端与客户端架构 · 云边协同架构 · 部署架构与组件选型
更新日志
2026/10/27 13:22
查看所有更新日志
c4a4b-docs(架构): 独立平台架构分组并更新架构文图于93dfc-docs(架构): 独立平台架构分组并更新架构文图于
