多家企业共用一套系统,数据会不会串?微多乐云商学院多租户怎么做到内容互不越界
采购评审上必被问到的一句话
"你们这套系统,我的竞品也在用吧?我的经销商名单、内训课件,会不会被他看到?"
这个问题几乎每次评审都会出现,而且往往决定成败。更麻烦的是,多数回答都停在一句"我们有权限控制"——这句话在技术评审席上等于什么都没说。因为真实事故极少来自"没做权限",而是来自这四种更隐蔽的情况:
- 权限判断散落在几十处业务代码里,改一个功能漏一处;
- 前端按角色把卡片藏了,但接口没拦,改一个请求参数就能拿到全量;
- 人没进错门吗?被拉进了错的组织,此后所有权限都是"合法的越界";
- 员工调岗、离职,作用域没回收,权限长期残留。
微多乐云商学院(https://vdol.cn/academy/)的隔离不是一个开关,而是四层叠起来的结构:任何单层失误,都不会直接变成越界事故。
一、四层隔离,各拦一类风险
| 层 | 机制 | 拦住哪类风险 |
|---|---|---|
| 租户层 | 所有读写先绑定租户上下文,入口即校验 | 企业之间串课、串名单、串看板 |
| 存储层 | 内容对象按租户命名空间存放;观看域名、授权域名可按租户独立配置 | 内容地址被跨租户猜到、品牌阵地混用 |
| 权限层 | DataScope 数据权限作用域,在数据访问层统一叠加过滤条件 | 内部区域之间互看、总部资产下泄 |
| 入口层 | 入会审核,成员加入前先由分享人确认归属 | 无关人员、竞品混入私域名单 |
| 组织层 | 四级经销组织树(总店—总监—经理—团长),逐级独立作用域 | 跨分支互看、上下级边界模糊 |
二、DataScope:把"谁能看什么"从约定变成强制
这是四层里最容易被低估的一层。云商学院的做法有三条硬规矩:
规矩一:作用域解析全项目只有一处实现。 首页大盘、会员列表、课题渠道统计、直播分析、商户端手机工作台,全部调用同一个作用域解析入口。不是"每个模块自己判断一遍",而是一处收口。这样安全策略可以集中治理、集中审计,而不是每次改功能都要重新审一遍权限。
规矩二:范围只由登录身份决定,请求参数不得放大。 曾有过"用参数区分看全店还是看本组织"的方案,被明确否决——原因很直接:前端一旦漏传或被改掉,渠道角色就能拿到全量数据;而且同一个人在电脑端和手机端会看到两套数字,运营从此不再相信首页。现在的规则是:能看多大范围,只看登录用户的任职组织,请求里带什么都不放大。
规矩三:功能权限和数据权限彻底分开。
能不能进这个页面 → 看角色的功能权限码 能看到多大范围的数 → 看任职组织解析出的数据作用域
两者必须同时满足。前端按角色隐藏卡片不等于数据权限——接口不拦,改个请求就能看到。所以总部级的资产数据(流量余额、奖励金账户)在接口层就按身份裁剪,非总店身份直接不返回该字段,而不是"返回了但前端不渲染"。
三、入会审核:先认人,再给看
再严的权限,也挡不住"人进错了门"。云商学院把入会做成了一道可经营的闸门:
- 私域场次开启入会审核后,新学员消费观看码只能进入等待页,看不到正片、拿不到播放地址、不写观看心跳、不评估奖励;
- 由发码的分享人本人审核,上级可代审并留痕;同组织平级只能看到、不能操作,避免多人都能点通过导致归属混乱;
- 通过 / 拒绝 / 忽略三个动作分开:拒绝会释放归属,学员可以通过别人重新申请;忽略是灰度处理,超时自动转拒绝并释放;
- 待审核状态不计入拉新、不开激励账户,名单口径和资金口径同时干净。
公域场次则相反:默认自动入会、不出现审核,适合公开课和品牌传播。一句话概括:公域像公开课,点开就能看;私域像进社群,认领通过才算自己人。
四、四级经销组织树:复杂结构下边界依然清晰
很多企业的培训对象不是扁平员工表,而是"总店—市场总监—招商经理—团长门店"这样的层级。云商学院原生支持这种结构,并且有两个关键设计:
- 每一级天然拥有独立作用域,上级可以逐级下钻,下级不可上探,跨分支默认不可见;
- 渠道口径跟组织走:学员的归因组织在首次绑定时锁定,人员调岗不会篡改历史渠道业绩;组织节点在树上挪动,历史数据跟着新位置汇总。
统计维度上还有一条恒等式在兜底:某个节点下各行之和 = 该节点合计。这条肉眼可验的规则,是判断"有没有串数据、有没有漏数据"最快的自检手段。
五、采购方可以直接执行的验收清单
不要听承诺,要动手测。以下四步任何一步不通过,就该继续问:
- 抓包改参数测试。 用一个区域角色的账号登录,抓到首页或列表接口,手动把组织参数改成上级或平级组织的 ID 再发一次。正确结果是返回空或被拒绝,而不是返回数据。 只在前端藏卡片的系统,这一步就会露馅。
- 跨子树下钻测试。 用区域账号尝试下钻到另一个分支的组织。正确结果是空数据,且不泄露该组织的名称和存在性。
- 双端一致性测试。 同一个账号分别登录电脑端和手机工作台,核对同一组数字。必须完全一致——不一致说明两端走了不同接口或不同口径,隔离逻辑就不止一处,长期一定会漏。
- 入口与回收测试。 让一个新账号尝试加入组织,确认必须经审核;再把一名成员调岗或停用,确认其原有可见范围立即失效。权限的长尾残留,比一次性配错更危险。
配置侧同样有三件事要做好:按岗位声明作用域,不要图省事给"全员可见";私域场次一律开启入会审核;人员调岗、离职后同步更新组织归属,让作用域随结构自动继承。
六、和弱隔离方案的差别
| 维度 | 弱隔离 / 无作用域 SaaS | 微多乐云商学院 |
|---|---|---|
| 租户边界 | 靠应用层约定,容易串 | 租户上下文贯穿全链路,入口即阻断 |
| 权限实现 | 散落在各业务代码,难审计 | 作用域解析单点收口,数据访问层强制过滤 |
| 范围来源 | 前端可传参切换范围 | 只由登录身份决定,参数不得放大 |
| 总部资产 | 返回后靠前端隐藏 | 接口层按身份裁剪,不返回即不存在 |
| 入会治理 | 注册即进,名单易污染 | 入会审核,待审不看课、不计拉新、不发激励 |
| 复杂组织 | 扁平模型,撑不住经销体系 | 四级经销组织树,作用域逐级联动 |
多租户不是"共享"的同义词,而是"在共享底座上做到各自安全"。 对企业来说,这意味着不用担心同业共用平台会串课,也不用担心内部区域之间误看敏感数据——这两件事都不依赖运维的自觉,而是写进了架构。
想确认你的组织结构和敏感数据在多租户环境下会被怎样隔离?到 微多乐云商学院 带上这份验收清单实测一遍,看得见的边界才是安全边界。
如果觉得有帮助,欢迎分享给更多朋友





