审计与检查点
谁、做了什么、何时、在哪;事前要一句理由;AIDC 用 Action Log 与必填理由参数追溯。

本课目标
读完这一课,你将能够
- 说出审计日志回答的四个问题,以及它自己为什么也是敏感数据
- 说出检查点由什么组成、有哪四种理由方式,以及它管不到什么
- 在 AIDC 里用 Action Log、编辑历史和授予记录追溯一次改动,并用必填理由参数补上检查点的位置
审计:谁、做了什么、何时、在哪
前几节管「能不能」,这一节管「做了什么、为什么」。审计日志是平台对每一步操作的精简记录,要回答四件事:谁做的(用户、会话或服务账号),做了什么,什么时候,在哪个资源上。它是提炼过的记录:太啰嗦的日志信息更多,却没人读得懂。
官方按「发生了什么」给事件分类,而不是按产品:查数据、导出数据、登录各是一类。想知道「有没有人把数据带走」,只看导出这一类,不必先弄懂每个产品的事件名;新功能也会落进已有的类别,监控规则不用跟着改。日志量很大,分析之前先按时间过滤。
检查点:动手之前问一句为什么
审计是事后的账,检查点是事前的一问。用户要做一件敏感的事,比如导出数据、给别人加权限、提交 Action,界面先拦一下,要一句理由。理由被记下来,供数据保护的人事后复核。
- 01配置选操作类型与范围,定条件与提示
- 02拦截用户动手前弹出提示
- 03理由按配置的方式回答
- 04记录谁、何时、理由、涉及的对象
- 确认:勾选一个复选框,表示知道规矩。
- 文字:自由填写,可以用正则校验格式。
- 下拉:从预设的理由里选一个或几个,还可以补一段文字。
- 重新认证:让用户重新登录一次。
一条记录包含:谁、何时、检查点类型、当时的提示文字、理由,以及涉及的资源或对象。提示文字是快照,之后改了配置也不变;标题少于 45 个字符才显示得完整。官方在 60 多种交互上接入了检查点。
在 AIDC 里:账在哪里
AIDC 今天有四本账,都不用你另外接:
Action Log(操作记录)
Action 开了 actionLog: true,每次成功提交,在同一个事务里写一个 log. 开头的对象(如 log.approve-purchase-order):操作 id、Action、时间、执行人、参数、改了哪些对象。
编辑历史
对象的每次改动都有历史:rev 每改一次加 1,overridden 标出被改动盖住的数据源值。
授予记录
每次授予、撤销,创建和兑换链接,都进审计记录。
提案更新日志
谁批准、谁拒绝、何时合并、发了哪个语义版本。
aidc semantic objects log.approve-purchase-order --page-size 20
aidc semantic edits-history purchaseOrder --pk <poNo>
aidc resources roles <rid>
aidc workflow runs <slug> --limit 20
四条命令依次是:看批准采购订单的日志,看某张订单的改动历史,看一个类型上的授予,看某个工作流最近的运行(运行记录保留 180 天)。
检查点的位置,现在用一个办法补:把理由做成 Action 的必填参数。在 approve-purchase-order 的 parameters 里再加一项:
{ "name": "reason", "type": "string", "required": true, "maxLength": 200 }
追一条:谁批准的、为什么
星期一早上有人问:这张采购订单是谁批准的?按下面四步,账能对上:
- 谁
打开
log.approve-purchase-order,找到这张订单,读「执行人」。 - 为什么
同一条记录的参数里有
reason。 - 前后改过什么
aidc semantic edits-history purchaseOrder --pk PO-1001看每一次改动。 - 有没有越权
提交条件已经拦住「创建人批准自己的订单」;再用
aidc resources roles RID看他当时有什么角色。
四步里有一步答不出,就是账本上的缺口:补参数、开日志,或者收紧授予。下一节换一个方向:怎样安全地改本体(Ontology)本身,从分支开始。
要点
- 审计日志回答谁、做了什么、何时、在哪;它自己含姓名与邮箱,也是敏感数据。
- 检查点在事前要一句理由并记下来;理由方式有确认、文字、下拉、重新认证四种。
- 界面里的 Action 检查点管不到 API、SDK 和自动化提交,无人值守的路径要另外设防。
- AIDC 有 Action Log、编辑历史、授予记录和提案更新日志;检查点目前还没有,用必填理由参数补位。
练一练
让一次批准可以追溯
在一个测试组织里,把 approve-purchase-order 的账做完整。
给 approve-purchase-order 加必填的 reason 参数并开 actionLog: true,再用 aidc semantic apply approve-purchase-order --param purchaseOrder=PO-1001 --validate-only 不带理由试一次,记下失败信息。
选一个你改过的对象,用 aidc semantic edits-history TYPE --pk KEY 看它的历史,回答:谁、改了什么、何时、为什么。哪一项答不出?
写出示例工厂里你会要求填理由的三件事(例如导出 customer、授予别人 Owner、批准超过某个数量的采购订单),并为每一件选一种理由方式。
小测
选一个答案,马上看解析。
Q1官方建议怎样看待审计日志本身?
审计日志里有用户的姓名、邮箱和使用情况,应当只由有安全资质的人查看。
Q2检查点和审计日志最大的区别是什么?
检查点会在敏感操作前拦一下并要求理由;审计日志是平台自动记下的事后记录。
Q3在 AIDC 里想让每次批准采购订单都留下理由,现在怎么做?
检查点目前还没有,SQL 也是只读的。必填参数会被 Action Log 记下来。