同一份数据,三个人看到三个样子
一句话:同一张「供应商台账」、同一个页面地址,租户管理员看到 8 行 14 列,行级权限用户看到 2 行 13 列,普通员工连「数一下有几条」都问不出来——最后这一问是让 AI 去问的,它撞的和人是同一道门。这一章是首页视频的第 06 章,也是六章里唯一一章「不建东西、只看东西」。
这一章在讲什么:三道门 + 一件与权限无关的事
| 门 | 管什么 | 本章拿什么证明它存在 |
|---|---|---|
| 行级 | 你能看到哪几行 | 同一页 8 行 → 2 行 |
| 列级 | 你能看到哪几列 | 「联系邮箱」整列从表头消失 |
| 字段级 | 每个字段能编辑 / 只读 / 根本不出现 | 联系手机只读、「法人证件号」不在表单里 |
| (不是门)脱敏 | 手机号在所有人眼里都是掩码 | 两个账号看到的掩码格式一模一样 |
前三道门各自独立配置、各自生效;第四件是表单级配置,与登录人无关——明文从不下发前端。把这两类事混在一起(比如说成「按角色脱敏」)是这一章最常见的误解。
开始之前
跑过第 01 章。本章唯一会写库的动作是「批量授权」,它往第 01 章那张表单的资源上写 2 行授权;没跑过第 01 章,抽屉里搜不到那张表,这一步只能看不能提交。
四个账号(密码都是
admin123):账号 角色 本章用它看什么 admin超级管理员 授权台账、操作日志 docadmin租户管理员 全量视角:8 行 14 列 docsales文档-行级权限销售 受限视角:2 行 13 列 salesman01普通员工 让 AI 替它问,被拒 供应商台账上的行 / 列 / 字段授权是演示环境预置的夹具,本章不教你从零配,教你看懂、验证、排错。要在自己的环境从零配一遍同样的三粒度,照配置行级数据权限做。
不要用超级管理员看数据差异
admin 持 *:*:* 通配,权限校验直接放行,用它打开任何页面都是全量——拿它做对比等于什么都没证。本章 admin 只出现两次:配授权、看操作日志,这两处本来就该是管理员视角。
第 1 步:打开授权台账(admin)
系统管理 → 角色管理,找到「文档-行级权限销售」(角色编码 doc_sales),点行内的「资源授权」。
这一页就是授权台账:一行一条授权,写清「哪个主体、对哪个资源、哪个动作、允许还是拒绝」。它是一切差异的唯一出处——后面看到的每一种「少」,都能在这里找到对应的那一行(或找到「没有对应行」)。

别把 roleId 换成超管角色再看这一页
超管角色打开授权页会当场弹一条「真实鉴权旁路授权台账」的警告——超管根本不看台账,*:*:* 直接放行。要看「台账生效的样子」,必须用一个普通角色。
第 2 步:切「智能查看」,把台账还原成一张生效地图
点页面上的「切换智能查看」。
编辑列表给你看「存了什么」:一行一条,几十行摆在一起看不出谁压着谁。智能查看给你看「生效的是什么」:散落的授权行被还原成一棵树,每个节点上印着来源(菜单 / 数据集 / 手工授权)、行过滤规则、字段模式、到期时间。

排错先来这里
「他为什么看不到这一列」「这条授权为什么没生效」——答案九成印在对应节点的字段模式与来源标签上。比起翻数据库,这棵树是快得多的第一站。
第 3 步:批量授权——提交前先算给你看要写几行
点「切换编辑列表」回到列表,点「批量授权」,右侧抽屉里依次做五件事:
- 勾「显示字段级资源」——不勾的话树里只有菜单和数据集,字段级资源不露面;
- 搜索框输入「实验室样品登记」(第 01 章那张表的名字),树里命中 3 行;
- 勾前两行:数据集资源本身,加上它名下的操作资源;
- 「动作」里勾「查看」与「新增」;
- 读抽屉里那条预览——本轮是「将提交 2 资源 × 1 动作 = 2 行授权。」预览会按每个资源实际支持的动作折算(操作类资源只吃「查看」),所以乘数不一定等于你勾的动作个数;以预览算出来的行数为准,它才是真正要写库的行数。

为什么这条预览非读不可
批量授权是资源 × 动作的笛卡尔积:勾 20 个资源、选 4 个动作,一次就是 80 行授权,没人核得过来。预览把这道乘法算给你看,数对得上再提交。
点「提 交」。若弹出合并策略弹窗,必须选「保留既有配置」:
「按本次填写覆盖」会毁掉既有授权
覆盖模式会把命中行上已有的行过滤规则、字段模式、到期时间全部置空——本章后面三个镜头(行变少、列消失、字段只读)会当场消失,而且不报任何错。选「保留既有配置」则只新增、不改动既有行。
提交后提示「授权完成:新增 2 条、覆盖 0 条」——「覆盖 0 条」就是上面那个选择正确的回执。

第 4 步:租户管理员视角——8 行 14 列,手机号是掩码
退出,用 docadmin 登录,打开基础设施 → 在线示例 → 校验示例4-唯一性长度与脱敏。
数两样东西:8 行、表头 14 列。再看「联系手机」那一列:值是 134****5555 这样的掩码。

掩码不是权限
这一步的掩码和下一步 docsales 看到的掩码格式完全一样。脱敏是表单上的配置,对所有人无条件生效,明文从不下发前端——所以「看到掩码」不证明任何授权差异,别把它当成权限证据。
第 5 步:行级权限用户视角——2 行,「联系邮箱」整列没了
退出,用 docsales 登录,打开同一个菜单。
还是数两样东西:2 行(行过滤规则只留 creator = 自己 的行)、表头 13 列——少的正是「联系邮箱」:列级授权把它设成隐藏,运行时直接把这一列从表头摘掉,不是置空、不是打码,是整列不存在。

第 6 步:字段级——只读、掩码、整个字段消失
在 docsales 的视角里点第一行的「编辑」,看弹窗:
- 「联系手机」是掩码值,而且只读,改不了;
- 「法人证件号」这个字段整个不在表单里——不是禁用,是渲染都没有;
- 表单标签数比管理员视角少,少的就是被隐藏的那些字段。

三种粒度到这就齐了:行决定有几条,列决定表头有几格,字段决定编辑时能碰哪几个。看完按 Esc 关掉弹窗,别保存。
第 7 步:操作日志——三个人的动作都在(admin)
换回 admin,打开系统管理 → 操作日志。刚才三个账号的每一次打开、查询、编辑尝试都记在这里:谁、什么时候、哪个 IP、哪个模块、成功还是失败。
为什么审计要单独看一眼
行 / 列 / 字段三道门管的是「能不能」,日志管的是「发生过什么」。被拒绝的请求同样留痕——有人反复撞同一道门,日志比任何监控都先告诉你。

第 8 步:让 AI 撞同一道门(salesman01)
退出,用 salesman01 登录,打开AI 助手 → 智能助手,点「新建对话」,智能体选「文档演示-数据查询助手」(它绑了数据查询工具),问:
test_demo_verify_supplier 这张表里一共有几条记录?它答不出来。回答里会原样报出缺的那个权限串,形如 infra:form-design-run:test_demo_verify_supplier:query——工具调用在权限网关处被拦下,模型拿不到数据,也就不会编一个数字给你。

这一幕是本章的落点
AI 走的不是一条特权通道:它调工具时做的权限校验,和 docsales 打开页面时做的是同一道。给人配了什么,AI 就只有什么;给人没配的,AI 也拿不到,而且会把「缺什么」明明白白说出来,方便你回去补授权。
三种视角对照
| docadmin(租户管理员) | docsales(行级权限销售) | salesman01(普通员工) | |
|---|---|---|---|
| 行数 | 8 | 2 | 不打开页面:让 AI 代问,连查询都被拒 |
| 列数 | 14 | 13(联系邮箱整列消失) | — |
| 编辑弹窗 | 全字段可编辑 | 联系手机只读、法人证件号不出现 | — |
| 手机号 | 掩码 | 掩码(同一个掩码规则) | — |
| AI 代问 | — | — | 被拒,报出缺的权限串 |
常见问题
Q:为什么我拿 admin 看,什么差异都没有? A:因为 *:*:* 通配直接放行,admin 眼里没有权限这回事。差异必须用普通角色看——这也是本章全程避开 admin 看数据的原因。
Q:「联系邮箱」是打码还是没了? A:没了。列级隐藏是把整列从表头与数据里摘掉;打码(掩码)是另一件事,属于表单级脱敏,对所有人都一样。两者别混。
Q:批量授权时搜不到「实验室样品登记」? A:第 01 章没跑,或跑完被复位脚本清掉了。回第 01 章重建那张表,再回本章第 3 步。
Q:合并策略弹窗两个选项到底差在哪? A:「保留既有配置」= 只插入新行,命中行上已有的规则 / 字段模式 / 到期时间原样保留;「按本次填写覆盖」= 把这些字段全部置空重写。演示环境的三粒度夹具就在那些字段上,覆盖一次,后面三个镜头全灭。
Q:AI 报出的权限串拿去搜,搜不到对应授权行,正常吗? A:正常,那正是要补的信号:报出的串就是「缺的那一行」应该长的样子。照配置行级数据权限给对应角色补一条 ALLOW,再问一次即可。
相关页面
- 配置行级数据权限:从零配一遍行 / 列 / 字段三粒度的完整教程。
- 权限诊断 ★:输入「谁 + 哪个资源」,直接看命中了哪条授权、为什么。
- 第 01 章:一句话,建一张能用的表单:本章批量授权的目标资源来自这一章。
- 第 05 章:一个 SQL 接口,就是一个 AI 工具:AI 调数据工具那条链是怎么建起来的。
