← 返回 技术博客

技术文章

多租户Data Agent的安全底座:权限、SSO与审计如何协同

解析多租户Data Agent如何在每次工具调用中协同租户隔离、三层权限、SSO会话与审计控制。

2026/08/26技术博客HENGSHI12 分钟阅读
Data Agent多租户权限治理SSO审计

Article body

正文

Data Agent可以替用户查询数据、创建资源和触发动作,它继承了BI平台的全部安全问题,还增加了自动执行风险。多租户SaaS若只在聊天入口校验一次身份,后续工具调用很容易越过数据边界。

每次调用都携带租户与用户身份

Agent执行查询、读取指标或创建看板时,后端必须重新校验租户、用户和资源权限。系统不能把模型生成的SQL直接交给数据库,也不能相信前端传来的租户ID。查询服务应从受信身份上下文注入租户过滤和行级权限。

共享数据库可以降低运维成本,但要求所有读取路径都经过统一过滤器。独立数据库提供更强物理隔离,却增加升级、连接和跨租户运营成本。平台可以按客户等级组合两种模式,安全合同必须写清楚数据放在哪里、谁能访问、如何迁移。

三层权限覆盖应用、数据与功能

应用权限决定用户能进入哪个空间或门户,数据权限限制可见行与字段,功能权限控制能否建模、导出、发布或调用Agent工具。三层权限需要在同一决策点汇合。用户可以查看一个看板,不代表他可以导出明细;他可以问数,也不代表Agent可以替他修改指标定义。

敏感动作应使用最小权限工具。创建资源、扩大共享范围、跨系统写入和批量导出需要审批或二次确认。管理员还要设置全局禁用、黑名单和紧急回收通道,人员离职时可以立刻终止会话与Token。

SSO解决身份一致性

企业通常已经使用SAML、OAuth或OIDC身份系统。BI PaaS应复用企业IdP,并把组织、角色和租户映射到平台权限。嵌入场景还要处理宿主应用与BI组件之间的Token交换,避免用户重复登录。

会话安全包括过期、撤销、终端数量和异常登录检测。Agent的长任务不能依赖无限期Token,执行器需要在每个关键步骤检查授权状态。权限变化后,正在运行的任务也应停止或重新确认。

审计记录回答六个问题

完整日志要说明谁在什么租户、以什么目标、调用了哪个工具、读取或修改了什么、得到什么结果、是否经过审批。模型提示词和中间推理可以按合规要求裁剪,但工具参数、权限决策与资源变化必须可追踪。

安全团队还要定期回放高风险任务,检查越权尝试、重复执行和异常导出。Data Agent进入生产环境之前,先让它在只读范围运行,再逐步开放写工具。权限与审计成熟后,自动化范围才有扩展基础。

工程细节与实施补充

一、多租户架构:从概念到工程落地

1.1 什么是多租户?为什么 BI PaaS 必须多租户?

多租户(Multi-Tenancy)是SaaS/PaaS架构的核心设计模式之一,指在单一软件实例中为多个租户(组织/企业/部门)提供服务,同时保证租户间的数据与逻辑隔离。对于BI PaaS场景,多租户的价值体现在:

单租户与多租户模式对比

HENGSHI SENSE的多租户能力从v5.1.2正式引入租户创建功能开始,到v6.2已形成完整的租户生命周期管理链条。

1.2 HENGSHI SENSE 多租户架构总览

┌──────────────────────────────────────────────────────────────────┐
│                        HENGSHI SENSE BI PaaS                     │
├──────────────────────────────────────────────────────────────────┤
│  ┌─────────────┐  ┌─────────────┐  ┌─────────────┐             │
│  │   租户 A    │  │   租户 B    │  │   租户 C    │  ...         │
│  │  (集团总部) │  │  (华东分公司)│  │  (外部客户) │             │
│  ├─────────────┤  ├─────────────┤  ├─────────────┤             │
│  │ 创作空间 A  │  │ 创作空间 B  │  │ 创作空间 C  │             │
│  │ 用户组 A    │  │ 用户组 B    │  │ 用户组 C    │             │
│  │ 数据源 A    │  │ 数据源 B    │  │ 数据源 C    │             │
│  │ 应用 A      │  │ 应用 B      │  │ 应用 C      │             │
│  └──────┬──────┘  └──────┬──────┘  └──────┬──────┘             │
│         │                │                │                     │
├─────────┴────────────────┴────────────────┴─────────────────────┤
│                    租户隔离层 (Tenant Isolation)                  │
│  ┌────────────────────────────────────────────────────────────┐ │
│  │  数据隔离  │  权限隔离  │  认证隔离  │  配置隔离            │ │
│  └────────────────────────────────────────────────────────────┘ │
├──────────────────────────────────────────────────────────────────┤
│              统一基础设施 (Shared Infrastructure)                 │
│  License 管理 │ SSO 认证中心 │ 安全策略 │ 审计日志              │
└──────────────────────────────────────────────────────────────────┘

1.3 租户生命周期管理

在HENGSHI SENSE中,租户的管理贯穿创建、授权、运营到回收的全生命周期。

1.3.1 租户创建与授权

从v5.1.2开始,平台支持在PaaS管理界面新建租户。每个租户拥有独立的创作空间和用户体系。v5.2.2对License管理进行了关键优化:简化了租户授权流程,管理员无需逐个配置,可以通过License批量授权多个租户,大幅降低了运营成本。

# 租户 License 配置示例
license:
  type: paas
  tenant_limit: 50              # 最大租户数量
  tenants:
    - id: tenant_hq
      name: "集团总部"
      user_limit: 500
      features: ["advanced_analytics", "data_export", "api_access"]
      expires_at: "2026-12-31"
    - id: tenant_east
      name: "华东分公司"
      user_limit: 200
      features: ["basic_analytics", "data_export"]
      expires_at: "2026-06-30"

1.3.2 创作空间隔离

v6.1.1引入了多租户隔离创作空间的增强能力,支持在分析能力嵌入模式下为不同租户提供独立的创作环境。同时支持隐藏“我的空间”并允许修改“团队空间”名称,使每个租户都可以定制符合自身组织习惯的空间命名。

租户创作空间配置流程:

1. 创建租户
   └── 2. 配置空间策略
       ├── 隐藏"我的空间" (v6.1.1+)
       ├── 自定义"团队空间"名称 (v6.1.1+)
       └── 3. 分配空间权限
           ├── 管理员:完全控制
           ├── 分析师:编辑/发布
           └── 查看者:只读访问

1.3.3 组织架构管理

v6.0.5对组织架构接口进行了增强,支持子节点移至根节点的操作,同时新增了批量接口支持。这使得企业在大规模组织架构调整(如部门拆分、合并)时,无需逐个手动操作。

// 组织架构批量操作示例
POST /api/organization/batch
{
  "operations": [
    {
      "action": "move_to_root",
      "node_id": "dept_1024",
      "tenant_id": "tenant_east"
    },
    {
      "action": "update",
      "node_id": "dept_2048",
      "name": "新业务线",
      "parent_id": "dept_1024"
    }
  ]
}

1.3.4 License 加锁优化

在多租户高并发场景下,租户和用户的License校验可能产生锁竞争。v6.0.1对租户/用户License的加锁逻辑进行了重构,采用细粒度锁策略替代全局锁,有效避免了死锁问题。

重构前(全局锁):
  acquire(global_license_lock)
    → 校验租户 License
    → 校验用户 License
  release(global_license_lock)
  ⚠️ 高并发下死锁风险

重构后(细粒度锁):
  acquire(tenant_license_lock[tenant_id])   # 租户级锁
    → 校验租户 License
  release(tenant_license_lock[tenant_id])
  acquire(user_license_lock[user_id])        # 用户级锁
    → 校验用户 License
  release(user_license_lock[user_id])
  ✅ 锁粒度细化,死锁风险消除

二、权限模型:从粗放到精细的三层权限体系

2.1 权限模型演进

HENGSHI SENSE的权限模型经历了从简单角色控制到三维权限体系的演进。v6.1.0是一个关键里程碑版本,实现了统一平台资源权限管理:将应用权限、数据权限和功能权限集中管控,形成了完整的权限治理框架。

权限模型演进时间线:

v5.1.x  ─── 基础角色权限 + 连接行权限
  │
v5.2.8  ─── 全局严格权限检查 + 数据继承审核
  │
v6.1.0  ─── 统一资源权限管理(应用/数据/功能三维)
  │
v6.1.5  ─── 角色合并优化(指标分析角色与数据查看角色合并)

2.2 三维权限体系详解

v6.1.0的统一权限模型将权限分为三个正交维度:

应用、数据与功能三维权限体系

这种三维模型的优势在于:一个用户可能拥有查看某应用(应用权限)的资格,但不一定有访问该应用底层数据源(数据权限)的权限,也不一定有导出(功能权限)的权限。三者独立控制,灵活组合。

2.3 连接行权限与租户级授权

v5.1.2引入了连接行权限支持授权给租户的能力,使数据行级安全(Row-Level Security,RLS)可以按租户维度进行配置。

-- 行权限配置示例:不同租户看到不同数据范围
-- 假设 sales_table 包含字段 region, amount, product
-- 租户 A(华东)只能看到华东区域数据

-- 配置方式(API)
PUT /api/permissions/row-level
{
  "connection_id": "conn_sales",
  "table": "sales_table",
  "tenant_id": "tenant_east",
  "rule": {
    "type": "filter",
    "expression": "region = '华东'"
  }
}

2.4 维度去重模型与权限过滤器

v6.1.0引入了维度去重模型在过滤器双向场景中的使用。在复杂的权限过滤场景中,当用户的多条权限规则可能产生交集或冲突时,维度去重模型确保过滤结果的一致性和正确性。

权限过滤器双向场景示例:

用户 U 同时拥有:
  规则1:部门 = "销售部"     → 可看销售额、客户数
  规则2:角色 = "区域经理"   → 可看区域汇总数据

维度去重模型处理:
  ┌─────────────────────────────────────────┐
  │  数据查询请求                            │
  │  SELECT region, SUM(amount) FROM sales  │
  └──────────────┬──────────────────────────┘
                 │
                 ▼
  ┌─────────────────────────────────────────┐
  │  权限过滤器引擎                          │
  │  ├─ 正向:过滤数据 → 应用维度去重       │
  │  └─ 反向:过滤指标 → 应用维度去重       │
  └──────────────┬──────────────────────────┘
                 │
                 ▼
  ┌─────────────────────────────────────────┐
  │  输出:去重后的安全数据集                │
  └─────────────────────────────────────────┘

三、认证体系:企业级 SSO 集成实践

3.1 为什么 BI PaaS 需要统一认证?

在多租户场景下,每个租户可能使用不同的身份认证系统:集团总部用LDAP,分公司用钉钉,外部客户用自建SSO。BI PaaS需要与这些异构认证系统无缝对接,同时提供统一的会话管理和安全管控。

3.2 SSO 集成矩阵

HENGSHI SENSE从v5.1到v6.2累计支持了多种企业级SSO协议:

HENGSHI SENSE SSO集成矩阵

3.3 统一 Access Token 管理

v6.0.0是认证体系的重大升级版本:将飞书、钉钉、企业微信的access token统一纳入管理框架。此前,各平台的token刷新逻辑相互独立,导致代码冗余和维护困难。统一管理框架的架构如下:

┌──────────────────────────────────────────────────────────┐
│                  SSO 统一认证网关 (v6.0.0+)               │
├──────────────────────────────────────────────────────────┤
│                                                          │
│  ┌──────────┐  ┌──────────┐  ┌──────────┐              │
│  │  飞书    │  │  钉钉    │  │ 企业微信  │              │
│  │  OAuth   │  │  OAuth   │  │  OAuth   │              │
│  └────┬─────┘  └────┬─────┘  └────┬─────┘              │
│       │              │              │                    │
│       └──────────────┼──────────────┘                    │
│                      ▼                                   │
│  ┌──────────────────────────────────────────────────┐   │
│  │           统一 Token 管理器                       │   │
│  │  ┌─────────────┐  ┌─────────────────────────┐   │   │
│  │  │ Token 存储  │  │ Token 自动刷新引擎      │   │   │
│  │  │ (Redis)     │  │ - 定时检查过期          │   │   │
│  │  │             │  │ - 异步刷新              │   │   │
│  │  │             │  │ - 刷新失败重试          │   │   │
│  │  └─────────────┘  └─────────────────────────┘   │   │
│  └──────────────────────────────────────────────────┘   │
│                      │                                   │
│                      ▼                                   │
│  ┌──────────────────────────────────────────────────┐   │
│  │           会话管理 (Session Manager)              │   │
│  │  - 统一会话创建                                   │   │
│  │  - 跨平台会话映射                                 │   │
│  │  - 会话过期与续期                                 │   │
│  └──────────────────────────────────────────────────┘   │
└──────────────────────────────────────────────────────────┘

3.4 租户定制域名 SSO

v5.3.4支持为不同租户配置独立的SSO认证域名。这一功能在多租户嵌入场景中尤为关键:当BI能力以iframe方式嵌入到不同租户的系统中时,每个租户需要通过自己的域名完成SSO登录,而不会暴露其他租户的认证入口。

# Nginx 配置示例:租户定制域名
server {
    listen 443 ssl;
    server_name bi.tenant-a.com;              # 租户 A 的专属域名

    location / {
        proxy_pass http://hengshi-sense:8080;
        proxy_set_header Host $host;
        proxy_set_header X-Tenant-Id tenant_a;
        proxy_set_header X-SSO-Domain bi.tenant-a.com;
    }
}

server {
    listen 443 ssl;
    server_name bi.tenant-b.com;              # 租户 B 的专属域名

    location / {
        proxy_pass http://hengshi-sense:8080;
        proxy_set_header Host $host;
        proxy_set_header X-Tenant-Id tenant_b;
        proxy_set_header X-SSO-Domain bi.tenant-b.com;
    }
}

3.5 SSO 默认角色配置

v6.2新增了SSO配置中指定用户默认角色的能力。当新用户首次通过SSO登录时,系统会自动为其分配预配置的默认角色,无需管理员手动干预。这在人员流动频繁的大型企业中极大降低了账号管理成本。

# SSO 默认角色配置示例
sso:
  provider: authing
  config:
    saml_endpoint: "https://xxx.authing.cn/saml"
    default_role: "analyst"           # SSO 登录用户默认角色 (v6.2+)
    default_tenant: "tenant_hq"       # 默认归属租户
    auto_create_user: true            # 自动创建用户
    role_mapping:                     # 可选:按属性映射角色
      - attribute: "department"
        value: "IT"
        role: "admin"
      - attribute: "department"
        value: "Sales"
        role: "analyst"

3.6 Authing.cn SAML 2.0 集成详解

Authing.cn是国内领先的身份即服务(IDaaS)平台。v5.1.10集成的SAML 2.0协议认证流程如下:

SAML 2.0 认证流程:

用户                    HENGSHI SENSE              Authing IdP
 │                           │                          │
 │── 1. 访问BI页面 ──────→  │                          │
 │                           │                          │
 │── 2. 重定向到IdP ─────────────────────────────────→  │
 │      (SAML AuthnRequest)                           │
 │                           │                          │
 │                           │  3. 用户在Authing登录    │
 │──────────────────────────────────────────────────→  │
 │                           │                          │
 │                           │  4. 返回SAML Response    │
 │←──────────────────────────────────────────────────  │
 │      (SAML Assertion)                                 │
 │                           │                          │
 │── 5. 提交断言 ────────→  │                          │
 │                           │                          │
 │                           │  6. 验证断言,创建会话    │
 │←── 7. 返回BI页面 ───────│                          │
 │      (已认证)                                        │

四、架构设计的关键决策与权衡

4.1 共享数据库 vs 数据库隔离

方案对比:

┌──────────────────────────────────────────────────────┐
│  方案A:共享数据库(HENGSHI SENSE 采用)               │
│  ┌──────────────────────────────────────────────┐   │
│  │  PostgreSQL / ClickHouse                      │   │
│  │  ┌─────────┬─────────┬─────────┐             │   │
│  │  │ 租户A   │ 租户B   │ 租户C   │             │   │
│  │  │ 数据    │ 数据    │ 数据    │             │   │
│  │  └─────────┴─────────┴─────────┘             │   │
│  └──────────────────────────────────────────────┘   │
│  优势:成本低、运维简单、资源利用率高                   │
│  挑战:需要严格的行级隔离和权限控制                     │
├──────────────────────────────────────────────────────┤
│  方案B:每租户独立数据库                               │
│  ┌──────────┐ ┌──────────┐ ┌──────────┐             │
│  │ 租户A DB │ │ 租户B DB │ │ 租户C DB │             │
│  └──────────┘ └──────────┘ └──────────┘             │
│  优势:天然隔离、安全等级最高                           │
│  挑战:成本高、运维复杂、跨租户查询困难                 │
└──────────────────────────────────────────────────────┘

HENGSHI SENSE选择了共享数据库方案,通过在查询层面注入租户过滤条件实现逻辑隔离。这一选择在性能和成本之间取得了最佳平衡,同时也对权限系统提出了更高的要求:所有SQL查询都必须经过租户过滤器的改写。

4.2 认证协议选型

SAML、OAuth与JWT认证协议对比

4.3 安全与体验的平衡

安全策略越严格,用户体验往往越差。HENGSHI SENSE在设计时注重二者的平衡:

  • Active Cookie限制终端数量,但支持管理员手动清除异常会话,而非直接锁定账号
  • 登录失败锁定使用指数退避策略,而非一次性长时间锁定
  • 水印按应用维度配置,而非全局强制开启
  • 行权限在后台自动生效,用户无需感知

五、最佳实践总结

基于HENGSHI SENSE多版本迭代积累的工程经验,以下是企业级BI PaaS多租户安全治理的最佳实践。

5.1 租户管理

  1. 按业务维度划分租户,而非按技术维度。例如按“华东分公司”“华北分公司”划分,而非按“前端组”“后端组”划分
  2. 合理配置License上限,为未来扩展预留空间
  3. 定期审计租户活跃度,回收闲置租户释放资源

5.2 权限管理

  1. 遵循最小权限原则,默认分配最低权限角色
  2. 利用三维权限模型,分别管控应用/数据/功能权限
  3. 定期审查角色配置,合并冗余角色(参考v6.1.5的角色合并实践)
  4. 启用严格权限检查模式(v5.2.8+),确保无权限旁路

5.3 认证管理

  1. 优先选择企业已有IdP,避免在BI平台内维护独立的用户密码体系
  2. 配置SSO默认角色(v6.2+),降低新用户入职成本
  3. 使用租户定制域名SSO,在嵌入场景中提供统一的认证体验

5.4 安全运营

  1. 配置登录失败锁定策略,防范暴力破解
  2. 合理设置Active Cookie终端数量,平衡安全与便利
  3. 对敏感应用启用水印,数据脱敏与水印防泄漏双管齐下
  4. 动态管理CORS策略,按需开放API跨域访问

资料与核验说明

内部资料用于梳理衡石能力与工程方法;竞品和版本信息按2026年8月26日可访问的官方页面复核。产品功能会受版本、地区、授权和部署模式影响,正式采购与发布前应再做一次现场确认。

延伸阅读:HENGSHI SENSE产品与技术白皮书。

HENGSHI SENSE

丰富的资源 完整的生态

邀您成为衡石伙伴

立即加入

企业级部署、产品集成与试用咨询均可快速响应