news 2026/10/15 11:27:09

Ongrid安全机制完全解析:写权限总闸、审批流程、全链路审计与密钥管理

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Ongrid安全机制完全解析:写权限总闸、审批流程、全链路审计与密钥管理
  • AI Agent
  • 人工智能
  • 大模型
  • RAG
  • 运维
  • 可观测性
  • 根因分析
  • 后端

【免费下载链接】ongrid

An ops AI Agent that understands your infrastructure, finds the root cause, and fixes it — right from Slack, Telegram, Lark or DingTalk.

项目地址:https://gitcode.com/gh_mirrors/on/ongrid
点击查看免费下载

Ongrid 是一个能理解你的基础设施、自动定位根因并直接修复问题的运维 AI Agent(ops AI Agent),支持从 Slack、Telegram、飞书或钉钉直接驱动。本文完整解析 Ongrid 的四大安全机制:写权限总闸、人工审批流程、全链路审计与 AES 加密密钥管理,帮助你在放心让 Agent 动手修生产之前,先看懂它的防御纵深。

为什么运维 AI Agent 必须有"安全笼子"?

让大模型直接执行systemctl restart nginx、rm这类命令,听起来很爽也很危险。Ongrid 的设计哲学一句话就能概括:

默认只读,逐层放行,全程留痕。

具体拆成四层防线:

层级机制作用
第一层写权限总闸(Agent Write Gate)全局开关,默认关闭,Agent 只能读
第二层人工审批收件箱(Approval Inbox)高危动作先排队,人点"批准"才执行
第三层命令沙箱(cmdpolicy)Edge 侧只读白名单,写命令直接被拒
第四层审计日志 + 加密密钥库谁在何时改了什么,凭据不落明文

写权限总闸:默认只读,fail-safe 设计

Ongrid 中 Agent 能否执行"改变主机状态"的命令,由一个管理员级全局开关AgentWriteEnabled控制。它的实现体现了典型的fail-safe(失败即安全)原则:配置行不存在、读取出错,一律解析为false——开箱即用的 Agent 是纯只读的,管理员必须显式打开才会解锁写能力。

核心判定逻辑见 agent.go,配套的请求级传递机制在 host_write.go:运行时解析一次开关状态并写入请求上下文,所有写工具在执行前都要读取这个标记。

命令分类器:宁可多报,不可漏报

以host_bash工具为例(bash_basetool.go),每条命令都会先经过本地写命令分类器isHostBashWriteCommand:

  • 判成写:进入审批提案流程,用户批准后执行;
  • 判成读:仍以只读模式下发给 Edge,最终由 Edge 侧命令策略兜底裁决;
  • 总闸关闭:写命令直接返回blocked,绝不执行。

分类器对rm / mv / cp / chmod / chown / dd、systemctl restart、docker rm等写操作,以及; && ||、重定向、$()、反引号等危险 shell 语法都做了保守识别——判错成"写"最多多一次人工确认,判错成"读"则由 Edge 沙箱兜住,这个不对称设计是整个链路的关键。

审批流程:高危动作必须过"人工收件箱"

Ongrid 的审批子系统(approval/usecase.go)是一个"人提案—人确认"(human propose-confirm)收件箱:

  1. Propose:Agent 或工作流产出高危动作时,不直接执行,而是把动作标题、摘要、负载(Payload)与发起者记入待办列表,状态为pending;
  2. Approve / Reject:管理员工在收件箱界面人工裁决。批准时系统调用该动作类型(Kind)注册的 Executor 真正执行,并落库执行结果(executed/failed);拒绝则仅记录原因,不执行任何东西;
  3. 防双花:只有pending状态的行才能被裁决,杜绝重复批准导致的重复执行。

值得注意的是RunApproved路径(bash_basetool.go):只有审批通过后执行的命令才允许携带Unrestricted标志绕过 Edge 命令策略——这个标志永远不会被 Agent 主动下发,只有"用户批准过的那条原命令"才能享受。

双保险:AI reviewer 的 SOP 二审

除了人工收件箱,Ongrid 还内置了一个 AI 二审机制:ReviewGate装饰器(review_gate.go)拦截所有write/destructive级别的工具调用,spawn 一个只读权限的 reviewer worker(定义见 reviewer.md)做静态审查。它的裁决规则相当严格:reject 是默认选项,approve 必须同时满足"有对应 SOP 覆盖、无并行同类操作、回滚路径已知"三条。

全链路审计:谁在何时改了什么,一笔不落

Ongrid 的审计子系统(audit/usecase.go)有两条值得学习的设计原则:

  • 审计不阻塞业务:Emit写入失败只记 warning,绝不把错误抛回业务链路——安全记录不能成为可用性瓶颈;
  • curated(精编)而非流水账:HTTP 中间件(middleware/audit.go)只记录显式标注了规范 Action 的用户操作(登录、CRUD、审批裁决等),而不是给每个 POST 请求生成无意义的http_post_xxx行。

审计行包含操作者(UserID / Email / Role)、来源 IP、User-Agent、动作、资源、结果(success/failure/denied)与结构化负载,并要求调用方在传入前自行脱敏密钥。系统还内置每日 03:00 的保留期清理任务(RunRetention),按配置的保留天数自动清理过期记录。

更妙的是审计日志的反向利用:ListChanges接口专门服务于根因分析(RCA)场景——当故障发生时,Agent 会查询"症状出现前谁改了什么",失败的尝试(denied)也会被纳入,因为"有人在事故前试图改动 X"本身就是根因线索。

密钥管理:AES-256-GCM 加密的凭据库

Agent 干活难免需要访问数据库、调用 LLM API,凭据如何存放?Ongrid 的凭据库(secret/usecase.go)提供三重保护:

  1. 存储加密:字段值经 AES-256-GCM 密封后才落库(secretbox.go),密钥派生自环境变量ONGRID_SECRET_KEY(未配置时回退到已持久化的ONGRID_JWT_SECRET,均独立于数据库)——光靠拖库永远拿不到明文凭据;
  2. API 脱敏:列表 / 详情接口只暴露字段名,永不返回字段值;
  3. 只写不读:系统托管类凭据(如集成配置直接写入的密钥)支持 write-only 模式,失败时按不可变名称补偿删除。

密文采用v1:版本前缀 + base64 编码的格式,为将来更换加密算法预留了平滑轮换空间。

安全机制源码速查

想深入验证本文内容,可以直接阅读以下核心模块:

  • 写权限总闸:setting/agent.go 与 basetool/host_write.go
  • 审批收件箱:biz/approval/usecase.go、tools/decorators/review_gate.go
  • Edge 命令沙箱:edgeagent/cmdpolicy/policy.go、cmdpolicy/sandbox.go,策略示例见 bash-policy.example.yaml
  • 全链路审计:biz/audit/usecase.go、server/middleware/audit.go
  • 加密密钥库:biz/secret/usecase.go、pkg/secretbox/secretbox.go

总结

Ongrid 的答案是:AI Agent 可以"动手",但必须活在层层设防的安全边界里——默认只读的写权限总闸、人工裁决的审批收件箱、只读白名单的命令沙箱、不可绕过留痕的全链路审计,以及 AES-256-GCM 加密的凭据库,五道闸门共同把"让 AI 修生产系统"从一句口号变成可落地、可审计、可回滚的工程实践。这也是任何想把运维 AI Agent 引入生产环境前,值得对照检查的安全基线。

  • AI Agent
  • 人工智能
  • 大模型
  • RAG
  • 运维
  • 可观测性
  • 根因分析
  • 后端

【免费下载链接】ongrid

An ops AI Agent that understands your infrastructure, finds the root cause, and fixes it — right from Slack, Telegram, Lark or DingTalk.

项目地址:https://gitcode.com/gh_mirrors/on/ongrid
点击查看免费下载

相关推荐

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/10/15 11:27:02

DeepSeek-R1推理模型与通用模型选型及提示语策略

简介:《DeepSeek从入门到精通》是清华大学新闻与传播学院元宇宙文化实验室编写的PDF学习资料,面向希望系统掌握DeepSeek的AI初学者、深度用户与开发者,帮助读者理解DeepSeek-R1开源推理模型的定位,并学会在实际工作中高效调用其能…

作者头像 李华
网站建设 2026/10/15 11:27:00

MSVC编译工具链安装与配置全指南

1. 为什么需要关注MSVC编译工具链? 在Windows平台进行C/C开发时,MSVC(Microsoft Visual C)编译工具链是绕不开的核心组件。作为Visual Studio的默认编译器,它提供了对Windows API的最佳支持,也是许多开源项…

作者头像 李华
网站建设 2026/10/15 11:26:59

Dify私有化部署实战:从单机Docker到企业高可用架构

1. 为什么私有化部署 Dify 值得认真对待把 Dify 跑起来这件事,说简单也简单,官方一行docker compose up -d就能在本地看到界面;说复杂也复杂,我见过太多团队在测试环境跑得挺欢,一上生产就各种问题:镜像拉不…

作者头像 李华
网站建设 2026/10/15 11:26:51

大学生系统化学习Unity的路径与方法

1. 为什么大学生需要系统化的Unity学习路径刚接触Unity的大学生往往面临一个困境:知道这是个强大的游戏引擎,但不知道从哪开始学起。校园里可能开了几门相关课程,网上能找到零散的教程,YouTube上还有各种炫酷的效果演示——但这些…

作者头像 李华
网站建设 2026/10/15 11:26:37

若依Vue前端部署实战:Nginx配置、路径映射与生产环境避坑指南

1. 为什么“若依Vue入门”卡在部署这一步?——多数人忽略的环境认知断层“若依Vue入门——服务器部署篇”,这个标题看似平实,实则藏着一个高频痛点:大量开发者能跑通本地开发环境,却在最后一步——把 Vue 前端项目真正…

作者头像 李华
网站建设 2026/10/15 11:26:27

美发美容店会员管理系统开发与实战应用

1. 项目概述在美发美容行业经营了十几年,我见过太多同行因为会员管理混乱而流失客户。记得2015年我刚开店时,还在用纸质笔记本记录会员信息,经常出现积分算错、预约冲突的情况。直到后来自己开发了一套会员管理系统,才真正解决了这…

作者头像 李华