Skip to content

同一份数据,三个人看到三个样子 ​

一句话:同一张「供应商台账」、同一个页面地址,租户管理员看到 8 行 14 列,行级权限用户看到 2 行 13 列,普通员工连「数一下有几条」都问不出来——最后这一问是让 AI 去问的,它撞的和人是同一道门。这一章是首页视频的第 06 章,也是六章里唯一一章「不建东西、只看东西」。

这一章在讲什么:三道门 + 一件与权限无关的事

门管什么本章拿什么证明它存在
行级你能看到哪几行同一页 8 行 → 2 行
列级你能看到哪几列「联系邮箱」整列从表头消失
字段级每个字段能编辑 / 只读 / 根本不出现联系手机只读、「法人证件号」不在表单里
(不是门)脱敏手机号在所有人眼里都是掩码两个账号看到的掩码格式一模一样

前三道门各自独立配置、各自生效;第四件是表单级配置,与登录人无关——明文从不下发前端。把这两类事混在一起(比如说成「按角色脱敏」)是这一章最常见的误解。

开始之前 ​

  1. 跑过第 01 章。本章唯一会写库的动作是「批量授权」,它往第 01 章那张表单的资源上写 2 行授权;没跑过第 01 章,抽屉里搜不到那张表,这一步只能看不能提交。

  2. 四个账号(密码都是 admin123):

    账号角色本章用它看什么
    admin超级管理员授权台账、操作日志
    docadmin租户管理员全量视角:8 行 14 列
    docsales文档-行级权限销售受限视角:2 行 13 列
    salesman01普通员工让 AI 替它问,被拒
  3. 供应商台账上的行 / 列 / 字段授权是演示环境预置的夹具,本章不教你从零配,教你看懂、验证、排错。要在自己的环境从零配一遍同样的三粒度,照配置行级数据权限做。

不要用超级管理员看数据差异

admin 持 *:*:* 通配,权限校验直接放行,用它打开任何页面都是全量——拿它做对比等于什么都没证。本章 admin 只出现两次:配授权、看操作日志,这两处本来就该是管理员视角。

第 1 步:打开授权台账(admin) ​

系统管理 → 角色管理,找到「文档-行级权限销售」(角色编码 doc_sales),点行内的「资源授权」。

这一页就是授权台账:一行一条授权,写清「哪个主体、对哪个资源、哪个动作、允许还是拒绝」。它是一切差异的唯一出处——后面看到的每一种「少」,都能在这里找到对应的那一行(或找到「没有对应行」)。

授权台账:一行一条授权,是所有差异的唯一出处(超级管理员视角)

别把 roleId 换成超管角色再看这一页

超管角色打开授权页会当场弹一条「真实鉴权旁路授权台账」的警告——超管根本不看台账,*:*:* 直接放行。要看「台账生效的样子」,必须用一个普通角色。

第 2 步:切「智能查看」,把台账还原成一张生效地图 ​

点页面上的「切换智能查看」。

编辑列表给你看「存了什么」:一行一条,几十行摆在一起看不出谁压着谁。智能查看给你看「生效的是什么」:散落的授权行被还原成一棵树,每个节点上印着来源(菜单 / 数据集 / 手工授权)、行过滤规则、字段模式、到期时间。

智能查看:散落的授权行被还原成一张生效地图(超级管理员视角)

排错先来这里

「他为什么看不到这一列」「这条授权为什么没生效」——答案九成印在对应节点的字段模式与来源标签上。比起翻数据库,这棵树是快得多的第一站。

第 3 步:批量授权——提交前先算给你看要写几行 ​

点「切换编辑列表」回到列表,点「批量授权」,右侧抽屉里依次做五件事:

  1. 勾「显示字段级资源」——不勾的话树里只有菜单和数据集,字段级资源不露面;
  2. 搜索框输入「实验室样品登记」(第 01 章那张表的名字),树里命中 3 行;
  3. 勾前两行:数据集资源本身,加上它名下的操作资源;
  4. 「动作」里勾「查看」与「新增」;
  5. 读抽屉里那条预览——本轮是「将提交 2 资源 × 1 动作 = 2 行授权。」预览会按每个资源实际支持的动作折算(操作类资源只吃「查看」),所以乘数不一定等于你勾的动作个数;以预览算出来的行数为准,它才是真正要写库的行数。

批量授权抽屉:勾资源、选动作、提交前先看预览算出的行数(超级管理员视角)

为什么这条预览非读不可

批量授权是资源 × 动作的笛卡尔积:勾 20 个资源、选 4 个动作,一次就是 80 行授权,没人核得过来。预览把这道乘法算给你看,数对得上再提交。

点「提 交」。若弹出合并策略弹窗,必须选「保留既有配置」:

「按本次填写覆盖」会毁掉既有授权

覆盖模式会把命中行上已有的行过滤规则、字段模式、到期时间全部置空——本章后面三个镜头(行变少、列消失、字段只读)会当场消失,而且不报任何错。选「保留既有配置」则只新增、不改动既有行。

提交后提示「授权完成:新增 2 条、覆盖 0 条」——「覆盖 0 条」就是上面那个选择正确的回执。

提交回执:新增 2 条、覆盖 0 条(超级管理员视角)

第 4 步:租户管理员视角——8 行 14 列,手机号是掩码 ​

退出,用 docadmin 登录,打开基础设施 → 在线示例 → 校验示例4-唯一性长度与脱敏。

数两样东西:8 行、表头 14 列。再看「联系手机」那一列:值是 134****5555 这样的掩码。

租户管理员视角:8 行 14 列全在,手机号是掩码(租户管理员视角)

掩码不是权限

这一步的掩码和下一步 docsales 看到的掩码格式完全一样。脱敏是表单上的配置,对所有人无条件生效,明文从不下发前端——所以「看到掩码」不证明任何授权差异,别把它当成权限证据。

第 5 步:行级权限用户视角——2 行,「联系邮箱」整列没了 ​

退出,用 docsales 登录,打开同一个菜单。

还是数两样东西:2 行(行过滤规则只留 creator = 自己 的行)、表头 13 列——少的正是「联系邮箱」:列级授权把它设成隐藏,运行时直接把这一列从表头摘掉,不是置空、不是打码,是整列不存在。

行级权限用户视角:2 行 13 列,联系邮箱整列消失(行级权限用户视角)

第 6 步:字段级——只读、掩码、整个字段消失 ​

在 docsales 的视角里点第一行的「编辑」,看弹窗:

  • 「联系手机」是掩码值,而且只读,改不了;
  • 「法人证件号」这个字段整个不在表单里——不是禁用,是渲染都没有;
  • 表单标签数比管理员视角少,少的就是被隐藏的那些字段。

编辑弹窗:联系手机只读、法人证件号整个字段不出现(行级权限用户视角)

三种粒度到这就齐了:行决定有几条,列决定表头有几格,字段决定编辑时能碰哪几个。看完按 Esc 关掉弹窗,别保存。

第 7 步:操作日志——三个人的动作都在(admin) ​

换回 admin,打开系统管理 → 操作日志。刚才三个账号的每一次打开、查询、编辑尝试都记在这里:谁、什么时候、哪个 IP、哪个模块、成功还是失败。

为什么审计要单独看一眼

行 / 列 / 字段三道门管的是「能不能」,日志管的是「发生过什么」。被拒绝的请求同样留痕——有人反复撞同一道门,日志比任何监控都先告诉你。

操作日志:三个账号的动作逐一留痕(超级管理员视角)

第 8 步:让 AI 撞同一道门(salesman01) ​

退出,用 salesman01 登录,打开AI 助手 → 智能助手,点「新建对话」,智能体选「文档演示-数据查询助手」(它绑了数据查询工具),问:

text
test_demo_verify_supplier 这张表里一共有几条记录?

它答不出来。回答里会原样报出缺的那个权限串,形如 infra:form-design-run:test_demo_verify_supplier:query——工具调用在权限网关处被拦下,模型拿不到数据,也就不会编一个数字给你。

AI 被权限网关拦下,回答里原样报出缺的权限串(普通员工视角)

这一幕是本章的落点

AI 走的不是一条特权通道:它调工具时做的权限校验,和 docsales 打开页面时做的是同一道。给人配了什么,AI 就只有什么;给人没配的,AI 也拿不到,而且会把「缺什么」明明白白说出来,方便你回去补授权。

三种视角对照 ​

docadmin(租户管理员)docsales(行级权限销售)salesman01(普通员工)
行数82不打开页面:让 AI 代问,连查询都被拒
列数1413(联系邮箱整列消失)—
编辑弹窗全字段可编辑联系手机只读、法人证件号不出现—
手机号掩码掩码(同一个掩码规则)—
AI 代问——被拒,报出缺的权限串

常见问题 ​

Q:为什么我拿 admin 看,什么差异都没有? A:因为 *:*:* 通配直接放行,admin 眼里没有权限这回事。差异必须用普通角色看——这也是本章全程避开 admin 看数据的原因。

Q:「联系邮箱」是打码还是没了? A:没了。列级隐藏是把整列从表头与数据里摘掉;打码(掩码)是另一件事,属于表单级脱敏,对所有人都一样。两者别混。

Q:批量授权时搜不到「实验室样品登记」? A:第 01 章没跑,或跑完被复位脚本清掉了。回第 01 章重建那张表,再回本章第 3 步。

Q:合并策略弹窗两个选项到底差在哪? A:「保留既有配置」= 只插入新行,命中行上已有的规则 / 字段模式 / 到期时间原样保留;「按本次填写覆盖」= 把这些字段全部置空重写。演示环境的三粒度夹具就在那些字段上,覆盖一次,后面三个镜头全灭。

Q:AI 报出的权限串拿去搜,搜不到对应授权行,正常吗? A:正常,那正是要补的信号:报出的串就是「缺的那一行」应该长的样子。照配置行级数据权限给对应角色补一条 ALLOW,再问一次即可。

相关页面 ​