跳到主要内容

审计与审批

OpsKat 会记录 AI 与 opsctl 的工具执行,包括来源、结果以及可用的策略决策上下文。审批工作流为 CLI 操作提供受控访问,授权系统支持命令模式预审批。

审计日志

进入 AI runner 审计中间件或已接入审计的 opsctl 处理器的工具调用会自动记录。其他交互式或委托路径并不意味着每个操作都会产生审计行。已记录条目可包含:

字段说明
来源操作发起方,目前包括 aiopsctl
工具名称被调用的工具(例如 run_commandexec_sqlupload_file
资产目标资产(ID 和名称)
命令执行的命令或查询
请求 / 结果请求参数截断至 4KB,执行结果截断至 32KB
成功执行是否成功
决策操作经过策略或审批检查时记录的允许/拒绝决策
决策来源决策的产生方式(见下方)
匹配模式匹配的具体规则或模式
会话 IDopsctl 或 AI 会话标识符
对话 ID该操作所属的 AI 对话(如适用)
授权会话 ID授权该操作的授权会话(如适用)
时间戳操作发生的时间

决策来源

每条审计日志都记录了决策来源,说明允许/拒绝决策是如何产生的:

来源说明
policy_allow被策略允许列表规则放行
policy_deny被策略拒绝列表规则阻止
user_allow用户在提示时手动批准
user_deny用户在提示时手动拒绝
grant_allow匹配了已批准的授权模式
grant_deny授权请求被拒绝

审计日志查看器

桌面应用中的审计日志查看器提供:

  • 可筛选列表 — 按来源、工具、资产、决策和时间范围筛选
  • 会话筛选 — 查看特定会话中的所有操作
  • 详情视图 — 查看已存储的请求和结果,受 4KB / 32KB 审计截断上限约束

审批工作流

opsctl CLI 在桌面应用运行期间使用时,需要审批的操作会被路由到应用的 UI 界面。

工作原理

  1. opsctl 通过 Unix 套接字(<data-dir>/approval.sock)发送审批请求。
  2. 桌面应用显示审批对话框,展示操作详情。
  3. 用户审核后批准或拒绝。
  4. 响应发送回 opsctl,后者继续执行或中止。

根据各命令的审批路径,这适用于 execcpsqlredismongocreateupdatebatchgrant 等操作。扩展工具委托也经过 approval.sock,但当前处理器会在桌面扩展运行时中直接执行,而不是显示常规审批对话框。

审批类型

类型说明
exec远程命令执行
cp文件传输(本地到远程、远程到本地或跨服务器)
create创建新资产
update更新已有资产
grant提交命令模式进行预审批
batch一起审批多个受支持的操作

授权系统

授权系统允许你预先批准命令模式,使后续匹配的命令自动通过审批,减少重复确认。

提交授权

授权可以从两个地方提交:

  1. AI 智能体request_permission 工具提交命令模式并附带理由。
  2. opsctl CLIopsctl grant submit 从命令行提交模式。

opsctl 示例:

opsctl grant submit 1 "cat /var/log/*" "systemctl * nginx"

授权生命周期

  1. 创建一个 GrantSession,状态为 pending(待处理),包含一条或多条 GrantItem 记录(每条指定一个资产和命令模式)。
  2. 桌面应用显示审批对话框,用户可以在批准前审核并编辑模式。
  3. 批准后,授权会话状态变为 approved(已批准)。
  4. 后续匹配已批准模式的 run_command 调用将自动通过(决策来源:grant_allow)。

授权项支持 * 通配符匹配(例如 cat /var/log/* 匹配 cat /var/log/syslog)。已批准的授权项不会被消耗 — 它们在整个会话期间持续有效,可以匹配多个命令。

opsctl 会话管理

opsctl session 命令用于管理审批会话:

  • 会话将相关操作分组在一起
  • 同一会话中的所有操作在审计日志中共享相同的会话 ID
  • 授权项的作用范围限定在其授权会话内