业务同事在对话框里敲一句话,几秒钟后拿到带明细的数据表。体验很好,但数据负责人同时会收到两个坏消息。一个是业务看到了不该看的数据,另一个是安全团队追问,刚才那条查询到底经过了哪些权限校验。
这就是智能问数和传统报表在权限上的分水岭。报表的入口是固定的,权限贴在页面上就够了。智能问数的入口是一句自然语言,维度组合、下钻路径、聚合口径都可能临时生成。权限如果还在结果端做过滤,越权和泄露几乎防不住。ThinkingAI 在与 1500 多家企业沟通 AI 落地的过程中反复遇到同一个问题,权限设计往往是项目从试点走向生产环境时必须先回答的一道题。
这篇内容面向正在评估或推进智能问数的数据负责人、平台管理员和安全合规同事。核心结论只有一句,权限必须在查询生成之前就被强制注入,并且按岗位职责划定数据范围,而不是按人逐个授权。
一、为什么智能问数的数据权限比报表更难控
1、提问是动态的,权限边界却常常是静态的
报表时代,权限可以挂在报表、页面和字段上,因为入口数量有限。智能问数不一样,同一个需求有无数种问法。用户问华东区新客上月付费金额,换一种说法就变成按渠道拆全国新客付费。权限模型如果只描述某个页面能看什么,却没有描述一个用户在数据层能看哪些行、哪些列,问题就会在每一种新问法里重新出现。
2、三个最常见的失控场景
- 越权组合。用户没有全国明细权限,但对多个区域分别提问再自行拼合,反推出全量数据。
- 敏感字段外泄。手机号、身份证号、订单金额只在展示层做了处理,查询、导出和复制环节仍是明文。
- 过程不可追溯。自然语言到 SQL 之间发生了什么,谁在什么时候问了什么、命中多少行、有没有导出,日志说不清楚,事后无法定位责任。
这三个场景指向同一件事。权限既要在数据层生效,也要在行为层生效,还要留下可核查的证据。
二、智能问数的权限分层与可控粒度
1、把权限拆成四层
- 身份层,账号、组织归属、租户隔离,回答主体是谁。
- 功能层,能不能使用问数、导出、订阅、分享这些功能。
- 数据层,能看哪些数据集、指标、维度和字段,以及哪些数据行。
- 动作层,能对数据做什么,只读、导出,还是写回业务系统。
四层缺一层都会漏。最常见的缺口是前三层配得很严,动作层默认放开,查询管得死,导出却没人管,数据最终从导出通道流走。
2、粒度决定可控程度
| 权限粒度 | 管什么 | 典型设计 |
|---|---|---|
| 数据集级 | 能进入哪些数据域 | 财务数据域只对财务岗和决策层开放 |
| 行级 | 能看哪些主体的数据 | 大区负责人只看本大区,客户经理只看自己负责的客户 |
| 列级 | 能看哪些字段 | 一线岗位看不到成本价和毛利字段 |
| 数值级 | 字段以什么形式呈现 | 手机号掩码、金额按区间展示、分组人数低于阈值不展示 |
行级权限解决看谁的数据,列级和数值级解决看到什么程度。这两类问题的解法不同,不能指望一个开关同时覆盖。
3、权限要前置于语义层
一条问数请求的完整链路大致是这样。
从用户提问到结果返回,中间要经过意图解析、指标语义匹配、SQL 生成、查询执行几个环节。权限校验应该落在 SQL 生成之前,由系统按当前登录身份强制注入行级过滤条件,并在生成阶段就排除无权限字段,或者把它替换成脱敏表达式。 用户看不到、改不了,也很难通过换一种问法绕开。
把策略绑在语义层上还有第二个好处。指标、维度和逻辑模型在这里已有统一口径,一份权限配置可以同时约束问数、报表和下游分析,不必为每个新场景重新配一遍。指标口径统一本身就是权限治理的前提。如果同一个指标在不同业务线指代不同范围的数据,权限就没有稳定的绑定对象。ThinkingAI 的企业级知识库把指标定义收敛为单一事实来源,让每个指标只有一处定义,不同业务线问同一指标得到相同口径,也为按指标和维度配置访问范围打好了基础,相关做法可以参考统一指标口径的建设思路。
三、不同岗位的数据访问设计
设计岗位权限有两条前置原则。一是按职责画像建角色,不按人名建角色,人会转岗离职,职责相对稳定。二是权责分离,配置权限的人不默认拥有查看数据的权力。
1、决策层,要汇总不要明细
决策层关心经营趋势和异常归因,不是某一个用户的订单明细。行级范围可以放到全公司,但展示以聚合结果和同比环比为主。列级上可以看核心经营指标,个人身份信息和成本明细建议屏蔽。动作边界是可查看、可订阅,导出需要走单独审批。
2、业务负责人,按组织维度切分
大区负责人、事业部负责人的数据范围通常和组织树对齐,权限条件直接绑定组织维度,例如区域编号或部门编号。这类岗位需要下钻到团队和个人的明细,因此行级条件要写成动态表达式,跟随组织架构调整自动生效,而不是写死一批固定值。
3、一线执行岗,只看自己负责的对象
一线业务和客服只应看到自己负责的客户、订单或工单。这一层的权限条件通常绑定责任人字段,行级范围最小,列级要屏蔽成本、毛利、联系方式等敏感字段,动作上默认不允许导出,避免把客户名单带走。
4、数据分析师,宽只读加脱敏加审计
分析师需要较大的数据视野才能做归因,因此行级范围可以放宽,但敏感字段仍要按列级策略脱敏,导出和高敏查询要保留审计记录。给分析师的是更大的只读视野,不是没有边界的权限。
5、数据开发与平台岗,走审批不做默认通道
数据开发和数仓工程师的角色是运维数据底座,不是业务分析的常客。他们的权限应通过审批流程和工单开通,在问数入口不默认放开。这样做的好处是,业务问数通道和工程取数通道分开管理,出问题时责任边界清楚。
6、职能与合规岗,高敏数据配导出审批
财务、人力、风控这类岗位接触的是高敏数据集。行级范围按管辖业务确定,列级需要保留完整字段以支撑业务处理,但要开启查询留痕、导出审批和水印。数值级策略在这类场景里尤其重要,聚合阈值可以避免通过小样本反推出具体个人。
7、外部合作方,限时限量限字段
合作方、外包人员和试用账号属于高风险主体。建议做法是账号限时有效,行级范围按合同约定的数据边界收窄,列级屏蔽一切个人信息,动作上禁止导出和分享,并单独记录访问日志。
8、平台管理员,管权限但不看数据
管理员负责权限配置、角色维护和审计导出,但不默认拥有数据可见权。这一条常被忽略,却是权责分离的关键。管理员可以改配置,但改了什么、什么时候改的,同样要进入审计。
把上面的设计收成一张表,可以放在权限评审会上直接对照。
| 岗位 | 主要看什么 | 行级范围 | 列级与脱敏 | 动作边界 |
|---|---|---|---|---|
| 决策层 | 经营趋势与异常归因 | 全组织,聚合为主 | 屏蔽个人身份信息与成本明细 | 查看、订阅,导出需审批 |
| 业务负责人 | 本业务线指标与明细 | 绑定组织维度,动态生效 | 保留业务字段,敏感字段掩码 | 查看、下钻,导出需授权 |
| 一线执行岗 | 本人负责的对象 | 绑定责任人字段 | 屏蔽成本、毛利、联系方式 | 只读,禁止导出 |
| 数据分析师 | 全量只读与归因分析 | 放宽,按数据域划分 | 敏感字段统一脱敏 | 查询与导出留痕 |
| 数据开发岗 | 原始表与数仓结构 | 按工单审批开通 | 按最小必要原则 | 不走默认问数入口 |
| 财务与合规岗 | 高敏经营与人事数据 | 按管辖业务确定 | 保留完整字段,开阈值保护 | 导出审批加水印 |
| 外部合作方 | 合同约定范围 | 按合同边界收窄 | 屏蔽个人信息 | 禁止导出与分享 |
| 平台管理员 | 权限配置与审计 | 不含数据内容 | 不适用 | 修改配置全程留痕 |
四、把权限方案落到系统里的六个步骤
第一步,数据分级分类和岗位盘点。 先盘出有哪些数据域、哪些敏感字段,再列出全部岗位以及每个岗位真正需要的数据范围。这一步的产物是一张岗位与数据对象的映射表,后面的角色设计都从这张表出发。
第二步,按职责建角色。 角色名称对应职责,例如大区负责人、客服专员、数据分析师。同时定清楚继承和叠加规则。一个人同时属于多个角色时,建议取交集或按最严格策略生效,并在配置页明确提示,避免权限在叠加中悄悄放大。
第三步,为每个数据对象定义三级策略。 行条件、列掩码、行动作一起写清楚,形成一个权限卡。只写行级不写列级,或者只写查询不写导出,都会留下缺口。
第四步,把策略绑定到语义资产。 指标、维度、逻辑模型在定义时就关联权限策略,查询执行时由引擎统一注入,而不是交给用户在界面上手动筛选。用户手动筛选是体验功能,引擎强制注入才是安全底线。
第五步,管住出口。 导出白名单、单次导出行数上限、导出频次限制、水印、分享链接有效期、聚合阈值,这些都属于出口管控。权限配置、任务调度和运行监控能不能集中管理,直接决定后续的维护成本,ThinkingAI 就把这几项能力放在统一的 Agent 管理 模块中。
第六步,审计与定期复核。 全链路留痕要覆盖提问内容、改写后的查询、命中的数据行数、敏感字段访问和导出行为。配合异常告警,再加上季度权限复核和转岗离职的即时回收,权限方案才算闭环。
权限方案还要和合规基线对齐。ThinkingAI 已通过等保二级、ISO 27001 与 ISO 27701 等认证,其 Agentic Engine 平台支持私有化部署。对数据主权要求高的团队,可以要求权限数据与业务数据都留在自有环境中,相关能力可以参考私有化部署的说明。
五、五个容易踩的坑
一是只在展示层脱敏。 结果是查询、导出、复制环节仍然明文。脱敏要发生在数据返回链路,而不是前端渲染层。
二是把行级过滤写成可选条件。 用户点一下就能取消的筛选项不是权限。行级条件必须由引擎强制拼进查询,界面上不提供开关。
三是按人名配权限。 人一多就失控,转岗离职后极易残留。角色按职责,人员按角色,才是可维护的结构。
四是一刀切拒绝。 用户问一次被拒一次,很快就会回到找分析师取数的老路。对无权限字段,优先用自动脱敏和范围收敛替代直接报错,体验和安全可以兼顾。
五是只管查询不管导出与分享。 分享链接是常见的泄露路径。链接要绑定身份、设置有效期,并继承原数据权限。
六、上线后怎么验证权限没有漏洞
配置完成不等于权限生效。建议用真实低权限账号跑一遍越权测试,重点看下面几类用例。
- 跨范围问法。用换区域、换渠道、换时间口径的说法提问,看结果是否始终收敛在授权范围内。
- 聚合反推。用多维分组把行数切到很小,看阈值保护是否触发。
- 明细下钻。从汇总一路点到个人级记录,看列级策略是否在每一步都生效。
- 多角色叠加。给测试账号同时挂两个角色,看最终范围是否符合预期。
- 导出与分享。尝试超量导出、导出敏感字段、把结果生成外链。
- 接口直连。绕过界面直接调用查询接口,看服务端是否同样校验。
- 变更回归。组织架构调整或权限策略修改后,重跑一遍上面的用例。
这些用例可以作为固定清单,在每次权限变更后执行一次,整个过程要留下记录,方便合规审计时回看。ThinkingAI 在企业级 Agent 安全与治理方面也整理了权限审计相关的实践路径可以参考。
七、常见问题解答
1、智能问数能沿用现有报表的权限配置吗
可以复用一部分,但不能直接照搬。报表权限通常挂在报表和字段上,描述的是一次固定查询的可见性。智能问数需要的是数据层描述,也就是这个用户能看哪些行、哪些列。可行做法是把报表权限作为起点,补齐行级条件和行动作,再迁移到语义层统一管理。
2、行级权限和列级权限分别解决什么问题
行级权限控制看得见哪些主体的数据,解决的是范围问题,例如只能看本区域、只能看自己负责的客户。列级权限控制字段是否可见以及以什么形式可见,解决的是暴露程度问题,例如手机号是否掩码、成本字段是否屏蔽。两者要同时配置,任何一层缺失都会形成泄露口。
3、一个人同时属于多个岗位,权限怎么算
先看角色设计,再定叠加规则。常见的做法是取交集或按最严格策略生效,并且要求超出默认范围的权限走单独申请。不建议简单取并集,否则多挂一个角色就可能带来范围外的可见性。规则一旦定下,要在界面上明确展示最终生效范围,方便业务核对。
4、业务反馈看不到想要的数据,怎么处理
先区分两种原因。如果是权限问题,走申请流程。如果是口径问题,补到语义层里。很多所谓看不到的抱怨,实际是同一个指标在不同地方口径不一致。语义层把定义收敛之后,这类问题会明显减少。
5、权限配置能和公司的统一登录打通吗
多数企业会要求智能问数接入统一身份认证和通讯录,让账号、组织归属随人事系统同步。这样组织调整能自动反映到行级条件上,也避免人为维护两套名单。选型时可以重点确认组织同步的时效、多组织兼任的支持方式,以及离职停用是否即时生效。
6、权限上线后多久复核一次
建议至少每季度做一次全量复核,重点看范围明显偏大的角色、长期未使用的高权限账号和临时授权是否到期。转岗、离职、组织合并这类事件要触发即时回收,不要等到季度复核。权限只会随时间慢慢变宽,复核是唯一能把它收回去的动作。






