Skip to content

多租户管理

什么是 RTBAC

矩尺平台采用自研的 RTBAC(Role Tenant Based Access Control,基于角色与租户的访问控制)权限管理体系。它由三层概念构成:

用户(User)  →  租户(Tenant)  →  角色(Role)
 你是谁            你在哪个组织里        你在该组织里能做什么

与传统的 RBAC(只区分角色)不同,RTBAC 多了一层"租户"来做资源隔离。简单理解:

  • 角色决定你能操作哪些功能(能不能创建虚拟服务、能不能管理转发引擎)
  • 租户决定你能看到哪些资源(只能看到自己租户内的转发引擎、虚拟服务、服务器池等)

两者叠加,实现了"同一平台、多部门使用、互相不可见"的效果。

三层模型

角色(Role)—— 决定了"能做什么"

矩尺平台内置 5 种默认角色,每种角色的职责边界清晰:

角色核心职责典型使用者
系统管理员全局管理:创建租户、用户、角色;管理许可证、升级、配置备份;创建全局共享的 SSL 证书平台管理员(admin)
租户管理员基础设施管理:添加/管理转发引擎和第三方负载、配置用户凭证、管理网络资源;可创建子租户和管理本租户内用户与角色网络/基础设施运维
应用管理员业务配置:创建服务器池、虚拟服务、分发规则、策略、健康检查;查看监控排查问题业务开发/运维工程师
安全管理员证书与安全:管理 SSL 证书和 SSL 策略、访问控制安全工程师
应用运维只读运维:查看监控图表、分析页面、告警记录初级运维、实习助理

各角色的菜单权限详见 角色管理

系统管理员可使用全部功能。admin 为内置系统管理员账号,不可删除。

v4.1.0 起:租户管理员角色的默认权限已开放 用户管理角色管理,允许租户管理员在本租户内创建用户、分配角色,无需系统管理员介入。

租户(Tenant)—— 决定了"能看到什么"

租户是资源隔离的基本单位,对应一个具体的组织,例如:

  • 某个业务部门(交易组、用户组)
  • 某个分公司(华东区、华南区)
  • 某个项目团队(电商平台组、数据平台组)

租户的核心作用有两个:

  1. 管理上下文隔离:不同租户的用户登录后,只能看到自己租户内的资源(虚拟服务、服务器池、策略、告警配置等)。通过右上角切换租户可以看到不同租户下的资源:

    切换租户

  2. 数据面资源隔离:每个租户可以独占或共享转发引擎集群。这是 RTBAC 与纯 RBAC 的关键区别——不仅控制面隔离了"看什么",数据面也隔离了"流量跑在哪些引擎上"。

用户(User)—— 连接人与租户+角色

用户是具体的登录账号。关键规则:

  • 一个用户可以属于多个租户。例如工程师小 A 同时属于"总公司"租户和"分公司"租户。
  • 同一用户在不同租户中可以有不同的角色。小 A 在"总公司"租户中是应用管理员,在"分公司"租户中可能是应用运维。
  • 同一时刻只能在一个租户的上下文中操作,通过右上角切换。

用户管理配置

这种设计允许一个工程师同时参与多个业务团队,在每个团队中有对应的权限,无需创建多个账号。

多级租户管理(v4.1.0 新增)

v4.1.0 起,矩尺支持多级授权管理:租户管理员可以在本租户下创建子租户,并委派子租户管理员,实现组织架构的逐级下放。

层级结构

系统管理员(admin)
  └── 创建总公司租户,指定小 D 为租户管理员
        └── 小 D 创建分公司 A 租户,指定 user1 为租户管理员
              └── user1 创建部门 B 租户,指定 user2 为租户管理员
                    └── user2 创建部门内的普通用户(应用管理员、应用运维等)

各级职责

层级角色可执行操作
系统管理员系统管理员创建顶层租户、管理全局配置、管理许可证
顶层租户管理员租户管理员创建子租户、为本租户和子租户创建用户和角色、管理基础设施、将转发引擎集群共享给子租户
子租户管理员租户管理员在本租户内创建用户和角色、使用获得的共享转发引擎集群创建业务资源
普通用户应用管理员/应用运维等使用本租户资源进行业务配置和运维

关键能力:顶层租户管理员无需关心子租户内部的用户管理。子租户的管理员可以自行创建本部门的用户和角色,实现了真正的分级自治。

资源隔离机制

控制面隔离

租户之间在控制面(Web 管理界面)上完全隔离:

  • 租户 A 的用户登录后,菜单中看到的虚拟服务、服务器池、策略、分发规则、告警配置等,全部是租户 A 自己的资源
  • 租户 B 的用户看不到租户 A 的任何配置
  • 即使是同一个转发引擎上的不同虚拟服务,只要分属不同租户,互相也不可见对方配置

数据面隔离(转发引擎集群)

数据面的隔离通过转发引擎集群实现。支持独占和共享两种模式。

模式一:独占转发引擎集群

租户 A(交易组)→ 转发引擎集群 A(engine-01, engine-02)
租户 B(用户组)→ 转发引擎集群 B(engine-03, engine-04)

每个租户独享自己的转发引擎,流量在物理层面隔离。适用于:

  • 业务对安全隔离要求高(如金融交易系统)
  • 业务流量大,需要独占硬件资源
  • 合规要求(如等保)需要物理隔离

模式二:共享转发引擎集群

租户 A(总公司、集群创建者)↘
                    [转发引擎集群](engine-01 ~ engine-04)
租户 B(分公司、集群使用者)↗

多个租户共享同一套转发引擎,由集群创建者主动将集群共享给指定租户。

转发引擎集群共享机制(v4.1.0 变更)

v4.1.0 对转发引擎集群的共享方式做了重大改进:不再是在租户页面上配置共享开关,而是直接在转发引擎集群列表中进行共享设置。

共享设置

入口:【平台系统 → 基础设施 → 转发引擎集群】。

在转发引擎集群列表中,集群的创建者(Owner)可以点击"共享"按钮,将本集群共享给指定的一个或多个租户。

转发引擎集群共享

当前登录用户拥有多个租户身份时,可选择将集群共享给这些租户中的任意租户。

创建者与使用者

转发引擎集群引入创建者(Creator)使用者(User) 角色:

角色说明权限
创建者创建该集群的租户对集群有完全的读写权限(增删转发引擎、修改集群网络策略、重命名等)
使用者被共享到的租户仅有使用权限和网络配置权限,无权修改集群本身

被共享的转发引擎集群和转发引擎上会出现共享标志,方便识别。

使用者可执行的操作

被共享到的租户(使用者)对集群中的转发引擎:

  • 可以在虚拟服务 / 流量组 / 浮动 IP / 服务器池中引用
  • 可以在转发引擎管理中操作以下功能:
    • 路由管理
    • 本地 IP 管理
    • 网络接口管理
    • 网口聚合
    • VLAN 管理
    • 日志管理

使用者不能修改转发引擎的基本属性(如名称、通讯地址、SSH 凭证等),也不能对集群进行增删引擎或修改集群网络策略等操作。

资源共享机制

并非所有资源都严格隔离。矩尺的 RTBAC 允许部分资源在租户间共享:

资源类型隔离/共享规则
虚拟服务单租户独占,不可共享
服务器池单租户独占,不可共享
策略(七层/四层/SSL/会话保持等)单租户独占,不可共享
分发规则、静态资源、告警配置单租户独占,不可共享
转发引擎集群默认独占,创建者可主动共享给指定租户
SSL 证书系统管理员创建的证书可多租户只读共享,租户内创建的证书仅本租户可用
健康检查(内置策略)全局只读,所有租户可用,不可删除
用户凭证租户管理员创建的凭证仅本租户可用

配置示例

场景描述

某集团公司使用矩尺平台,组织结构如下:

集团平台管理员(小 E / 系统管理员)
  └── 总公司租户(网络部门 / 小 D / 租户管理员)
        ├── 分公司 M 租户(交易业务 / 小 A / 租户管理员)
        │     ├── 用户 小 A(应用管理员)
        │     └── 用户 小 B(应用运维)
        └── 分公司 N 租户(用户业务 / 小 C / 租户管理员)
              └── 用户 小 C(应用管理员)
  • 小 E(系统管理员):负责平台的顶层管理,创建总公司租户
  • 小 D(总公司租户管理员):负责基础设施,管理转发引擎集群,并共享给各分公司
  • 小 A(分公司 M 租户管理员):自行管理分公司 M 内的用户和业务
  • 小 C(分公司 N 租户管理员):自行管理分公司 N 内的用户和业务

配置步骤

1. 系统管理员小 E 创建顶层租户(使用 admin 账号):

  • 创建租户 总公司,指定小 D 为该租户下的用户,角色为"租户管理员"

2. 租户管理员小 D 添加基础设施:

  • 总公司 租户身份登录,创建 3 台转发引擎(engine-01、engine-02、engine-03)
  • 将它们组成一个转发引擎集群 cluster-main

注意:v4.1.0 起,创建转发引擎集群时需选择产品类型,集群 vCPU 总数不得超过该产品类型的 vCPU 上限。

3. 租户管理员小 D 创建子租户并委派:

  • 创建子租户 分公司-M,并创建用户 小A,角色为"租户管理员"
  • 创建子租户 分公司-N,并创建用户 小C,角色为"租户管理员"

小 D 只需要创建到子租户管理员这一层,各分公司内部的人员管理由子租户管理员自行负责。

4. 租户管理员小 D 共享转发引擎集群:

  • 进入【平台系统 → 基础设施 → 转发引擎集群】,找到 cluster-main
  • 点击"共享",将集群共享给 分公司-M分公司-N

这样两个分公司就有了转发引擎资源,但无法修改集群本身。

5. 分公司租户管理员自行管理内部用户:

小 A 切换到 分公司-M 租户上下文:

  • 创建普通用户 小B,角色为"应用运维"
  • 小 B 即获得 分公司-M 租户下资源的只读权限,可使用共享的转发引擎集群查看虚拟服务等资源

小 C 切换到 分公司-N 租户上下文:

  • 该租户暂时只有小 C 一人,可以直接进行业务配置

6. 应用管理员配置业务:

小 A(应用管理员身份登录 分公司-M):

  • 创建服务器池、健康检查、虚拟服务等,转发引擎引用共享的 cluster-main
  • 小 B(应用运维)可以查看小 A 创建的配置和监控,但无法修改
  • 小 C(不同租户的应用管理员)完全看不到 分公司-M 的任何配置

7. 验证隔离效果:

  • 分公司 M 和分公司 N 之间互不可见对方资源
  • 总公司租户小 D 可以看到所有集群资源,但看不到各分公司内部的虚拟服务配置
  • 各分公司可独立管理自己的用户和业务,无需总公司介入

传统平级租户模式(无多级授权)

如果您不需要多级租户管理,仍然可以采用传统的平级租户方式:

  1. 系统管理员直接创建所有租户(如 交易组-M用户组-N
  2. 为每个租户创建用户并分配角色
  3. 各租户管理员自行管理转发引擎和业务配置

更多细节请参考用户手册 角色管理租户管理用户管理