多租户不再头疼:BossAgents 如何让一个 SCSAI 系统安全服务上百家企业?

# 多租户不再头疼:BossAgents 如何让一个 SCSAI 系统安全服务上百家企业? ## 引言:当单一系统遇上多家客户,数据安全怎么破? 想象一下这个场景:你的公司刚刚签下第5家重要客户,每家客户都要求使用 SCSAI agent 来管理他们的产品数据、BOM、变更流程和质量管理。按照传统做法,你有两条路可选—— 第一条路:给每家客户单独部署一套 SCSAI 系统。听起来简单?那意味着5套服务器、5套数据库、5套维护成本,还有5套升级工作。当客户扩张到20家、50家时,运维团队直接崩溃。 第二条路:让所有客户共用一套系统。但问题来了——如何保证客户A的采购订单不会被客户B看到?如何确保客户C的工程变更不会影响到客户D的BOM?数据隔离、权限控制、审计追溯……每一项都是技术债。 其实还有第三条路:**多租户架构**。用一个系统,服务多家企业,每家企业的数据天然隔离,互不可见。听起来很美好,但实现起来,很多公司都会踩坑。 今天,我们就来拆解 BossAgents(左帮右臂)是如何在 SCSAI agent 上实现多租户架构的。没有晦涩的技术黑话,只有清晰的逻辑和可落地的方案。 --- ## 一、多租户的核心难题:数据隔离 多租户,简单说就是“一套房子,隔成多个独立房间”。每个租户(企业)住一个房间,房间里的一切——文件、数据、配置——都只属于这个租户。 在 SCSAI 系统中实现多租户,最大的挑战是:**如何让不同企业的数据在同一个数据库里安全共存,互不干扰?** 很多团队的直觉是:给每个租户建一套独立的表或数据库。这确实是最彻底的隔离方式,但带来的问题是—— - 数据库数量爆炸,维护成本飙升 - 跨租户查询变得几乎不可能 - 系统升级需要遍历所有租户 BossAgents 选择了另一种路径:**共享数据库,但通过“企业ID”字段实现逻辑隔离**。这就像把一个大办公室用玻璃隔断分成多个工位——空间是共享的,但每个人的工位是独立的。 --- ## 二、BossAgents 的多租户架构:一张图看懂 让我们用一个更直观的方式来理解这个架构: ``` ┌─────────────────────────────────────────────────────────────┐ │ SCSAI agent 系统 │ │ ┌──────────────────────────────────────────────────────┐ │ │ │ 所有业务对象(零件、文档、供应商、BOM……) │ │ │ │ 每个对象都带有一个“企业ID”标签 │ │ │ │ 创建时自动打标签,查询时自动过滤 │ │ │ └──────────────────────────────────────────────────────┘ │ └─────────────────────────────────────────────────────────────┘ ▲ │ 中间层自动注入企业ID │ ┌─────────────────────────────────────────────────────────────┐ │ BossAgents 后端 │ │ ┌──────────────────────────────────────────────────────┐ │ │ │ ① 认证拦截:从JWT中提取企业ID和用户ID │ │ │ │ ② 数据注入:所有请求自动加上企业ID过滤 │ │ │ │ ③ 本地存储:企业信息、用户、审计日志 │ │ │ │ ④ 邮件推送:携带企业ID发送给智能体 │ │ │ └──────────────────────────────────────────────────────┘ │ └─────────────────────────────────────────────────────────────┘ ▲ │ API请求(带身份令牌) │ ┌─────────────────────────────────────────────────────────────┐ │ 前端 / Coze 智能体 │ │ 用户登录时选择企业,所有操作自动关联企业 │ └─────────────────────────────────────────────────────────────┘ ``` 这个架构的精妙之处在于:**数据隔离对用户完全透明**。用户登录自己的企业后,只能看到自己企业的数据,但底层用的是同一套 SCSAI 系统、同一个数据库。 --- ## 三、数据模型:如何给每个数据打上“企业标签” ### 3.1 本地数据库:管理企业和用户 BossAgents 维护了一个轻量级的本地数据库,用来管理企业和用户信息。这个数据库很小,只存三样东西: - **企业信息**:企业ID、名称、管理员邮箱、配置参数 - **用户信息**:用户ID、所属企业、邮箱、角色、密码 - **审计日志**:谁在什么时候做了什么操作 关键设计:**用户必须绑定一个企业**。一个用户可以属于一个企业,但不能同时属于多个企业。这确保了数据归属的清晰性。 ### 3.2 SCSAI 数据扩展:给所有业务对象加个“企业ID” 在 SCSAI 系统中,所有核心业务对象——零件(Part)、文档(Document)、供应商(Vendor)、客户(Customer)、BOM、工程变更请求(ECR)、工单(WorkOrder)等等——都增加了一个新字段:`enterprise_id`。 这个字段就像每个数据对象的“身份证”,标明它属于哪个企业。当用户创建一条数据时,系统自动填入该用户所属的企业ID。 有个例外:SCSAI 内置的用户表(Identity)不需要这个字段,因为用户管理已经通过 BossAgents 本地数据库实现了。 --- ## 四、权限模型:三层角色,各司其职 多租户系统最怕的就是权限混乱。BossAgents 设计了清晰的三层角色体系: ### 第一层:超级管理员(super_admin) - **权限范围**:全局,所有企业 - **能做什么**:创建新企业、管理所有企业的用户、查看所有企业的数据 - **谁担任**:系统部署者或平台运营团队 ### 第二层:企业管理员(enterprise_admin) - **权限范围**:仅限本企业 - **能做什么**:管理本企业的用户、查看本企业所有数据、配置Coze邮箱等 - **谁管理**:由超级管理员创建和授权 ### 第三层:普通用户(enterprise_user) - **权限范围**:仅限本企业 - **能做什么**:查看和操作本企业数据,受具体权限限制 - **谁管理**:由企业管理员创建 这套角色体系的关键在于:**超级管理员可以跨企业操作,但普通用户和企业管理员永远只能看到自己企业的数据**。这就像大楼的物业经理(超级管理员)有所有房间的钥匙,但每个房间的住户只能进自己的房间。 --- ## 五、核心流程:数据隔离如何自动实现 ### 5.1 用户注册与登录 注册流程很简单: 1. 超级管理员创建一个新企业,系统生成唯一的企业ID 2. 超级管理员为该企业创建一个管理员账号 3. 企业管理员登录后,可以创建本企业的普通用户 登录时,用户需要选择自己的企业,然后输入邮箱和密码。系统验证通过后,生成一个JWT令牌,其中包含了用户ID、企业ID和角色信息。这个令牌就像用户的“通行证”,后续所有请求都要带上它。 ### 5.2 中间件自动注入企业ID 这是整个架构最核心的环节。当用户发起任何数据操作请求时,BossAgents 后端的认证中间件会: 1. 从请求头中提取JWT令牌 2. 验证令牌有效性,解析出用户ID、企业ID和角色 3. 将企业ID注入到后续的SCSAI查询中 如果是超级管理员,还可以通过一个特殊的请求头(`x-target-enterprise`)来查看任意企业的数据——但这是特权操作,普通用户做不到。 ### 5.3 AML 自动注入 SCSAI 使用一种叫做 AML(SCSAI Markup Language)的 XML 格式来与系统交互。BossAgents 的 SCSAI 客户端被增强后,会在发送任何 AML 请求之前,自动在所有 `` 标签上添加 `enterprise_id` 属性。 举个例子:当用户A(属于企业001)创建一个新零件时,系统发送给 SCSAI 的 AML 请求会自动变成: ```xml ... ``` 而 SCSAI 端的所有查询也会自动加上 `WHERE enterprise_id = 'ent_001'` 的条件。这意味着,即使用户A在查询时忘记指定企业,系统也会自动帮他过滤。 这种“自动注入”机制的好处是:**前端和智能体完全不需要关心数据隔离的逻辑**。它们只需要正常发送请求,中间层会自动处理好一切。 ### 5.4 邮件推送也带企业标识 当系统需要向 Coze 智能体推送邮件通知(比如库存预警)时,BossAgents 会在邮件标题和内容中明确标注企业ID。Coze 智能体收到通知后,可以通过回调API中的 `x-company-id` 头来识别是哪个企业的请求,从而做出正确的响应。 --- ## 六、实现清单:从0到1搭建多租户系统 如果你也想在 SCSAI 上实现多租户,可以参考 BossAgents 的实现路径: ### 第一阶段:基础架构(约2天) - 建立本地数据库:企业表和用户表 - 实现认证中间件:JWT签发和验证 - 增强SCSAI客户端:自动注入企业ID - 开发注册登录API ### 第二阶段:企业管理(约1天) - 超级管理员管理企业的CRUD接口 - 企业管理员管理本企业用户的接口 - SCSAI对象类扩展脚本:给所有业务对象添加企业ID字段 ### 第三阶段:前端适配(约1天) - 登录页增加企业选择功能 - 企业管理后台页面 - 用户管理页面 ### 第四阶段:与Coze打通(约0.5天) - 邮件推送携带企业标识 - Coze回调API支持企业ID识别 --- ## 七、写在最后:多租户不是终点,而是起点 多租户架构看似是一个技术问题,实则是一个商业问题。当你的 SaaS 平台需要服务多家企业客户时,多租户能力直接决定了你的扩展性、成本和客户体验。 BossAgents(左帮右臂)的这套多租户方案,核心思路是:**用中间层逻辑代替底层隔离,用自动注入代替人工配置**。它不需要对 SCSAI 系统做任何底层改造,也不需要为每个客户维护独立的数据库,却能实现严格的数据隔离和安全访问。 如果你的企业也在为多租户问题头疼——无论是 SCSAI 系统,还是其他类似的企业级应用——BossAgents 都能帮你快速落地一套安全、高效、可扩展的多租户方案。 毕竟,**技术应该服务于业务,而不是成为业务的瓶颈**。让 BossAgents 帮你搞定多租户,你就可以把精力放在更重要的事情上——服务好你的每一位客户。
← 返回案例列表
分享:
🤖 Try Now →
🤖
🎁