先说结论:导出这件事之所以难管,是因为它同时踩在两条线上——一条是效率,一条是范围。全关上,日常对账、交接、迁移全堵住;全开着,谁拿走过什么,事后答不上来。数据导出权限管控要解决的,就是在这两条线之间划出可执行的规则。
下面按三条规则拆。每条都给一个可核验的判定点,能自己上手对。
规则一:哪些账号能导,范围画到哪
这一条管的是主体,也就是「谁有资格发起导出」。落地形态通常是角色挂钩:导出权限不直接发到人,而是挂在角色上,人通过角色获得。export_role 这类字段记的就是这个绑定关系,改动它,等于改动了一个人的能力边界。
可核验点一:清单里把所有人拉一遍,看是否有账号通过个人授权(而非角色)拿到了导出能力。这类不受角色约束的授权追溯起来费劲,也容易在人员变动后残留。
范围还要分两层。一是数据范围——能看到几条、哪些字段;二是条数上限——一次能带走多少。这两层不设,等于只锁了门却没限钥匙的使用次数。比较稳的做法是给默认值:默认不给导出,需要时按角色开,一次带走的条数另有上限。
规则二:导之前要不要过一道确认
这一条管的是触发条件,核心是判断题:导出这个动作,是点一下就发生,还是需要第二个人点第二下。
两种做法各有适用面。小范围、常规对账用的导出,走一步确认就够,加了审批反而拖慢日常。涉及全量、涉及客户完整字段的导出,多一道确认是划算的。approve_required 这类开关通常就是用来区分这两种情况的——它是条件开关,不是全局开关。
可核验点二:确认环节要记下「谁批的」,而不只记「已批准」。只记状态不记人的话,事后追这一单是谁放的行,仍然要回到口头问。同时要留意一个死角:审批链是否有超时自动通过的行为。若有,默认放行的时限要设得足够长。
规则三:导完留什么记录
这一条管的是留痕,也是容易被写成一句口号的地方。落到字段上,至少要有四样:谁导的、什么时候、导了多少条的、涉及哪些字段范围。
四样里常被省掉的是后两样。只记「张三导过一次」的记录,不足以回答「他带走了什么」。条数与字段范围这两栏补上,才谈得上还原一次导出的分量。rows_exported 与字段范围用受控清单去记,别用自由文本,否则事后想按字段聚合都做不了。
可核验点三:试着按「某一周内所有导出」查询一次,看能不能在结果里直接读出条数与字段范围。如果这一步要人工翻多条日志拼,说明记录粒度还不够。这一段与操作日志审计是同一个体系的:日志负责把动作记全,导出管控只是其中被重点关照的一类动作。
三条规则之间的关系
三条不是并列的选项,是有先后依赖的。范围画不清,确认环节就不知道要对什么把关;确认环节不记人,留痕里就缺了关键一栏。所以定的顺序建议是:先划范围,再定触发条件,末了把留痕字段敲死。
还有一处细节值得单说:已经导出去的文件,收回权限是管不着的。权限收回只对往后的动作生效。这一点要在制度上写明,否则容易形成「取消了权限就等于收回了资料」的误会。
容易被忽略的两类边界情况
规则定完之后,还有两类情况要回头补一句。
一类是跨账号的拼接。单独看,每次导出都在范围之内,条数也没超上限;但同一个人用两个账号、分三周慢慢导,合起来就接近全量。这类情况靠单次判定挡不住,只能靠按时间窗口做累计统计——比如同一人在三十天内累计导出的条数,超过某个量就提示一次。这一类统计要跑,前提还是导出记录里带了条数与字段范围这两栏。
另一类是服务账号与脚本调用。有些团队会给报表任务配一个固定的服务账号,让它按点自动导出。这个账号往往不受日常角色体系约束,也少有人定期回头看它还在不在用。比较稳的做法是给这类账号设一个到期日,到期前提醒复核一次,确认无误再续。
收尾
回头看,这三条规则都不涉及复杂技术。范围、触发、留痕,三个词说完了。难的地方在于它们要一起定,缺一条,另外两条都撑不住。至于这套规则跑在谁的设备上、日志存在哪一侧,属于部署形态的选择,跟规则本身是两件事,但会影响规则的改动效率。走独立部署的话,规则怎么改、改动记在哪,使用方自己能定;放在托管环境里,改一条条件通常要先提一次需求。
落到实现上,鲲极(鲲鹏的鲲)的处理是把导出拆成申请与执行两段,角色决定能不能发申请,审批决定这次能不能放行,执行完把条数与字段范围一并落进日志——三段各自独立,改动其中一段不牵动另外两段。
以上为一类功能实现方式的整理,供技术同行参考。

404

被折叠的 条评论
为什么被折叠?



