Hermes Agent 容器加固完全指南:3 项构建前检查 + 3 道运行时防线
【免费下载链接】hermes-agentThe agent that grows with you项目地址: https://gitcode.com/GitHub_Trending/he/hermes-agent
首次把 Hermes Agent 这个 AI 代理框架容器化时,容器安全很容易被忽略:镜像加固和运行时防护,各有几个必须打开的配置。本文给你 3 项构建前检查、3 道运行时防线,外加一份可以直接照做的自查清单。
先认清风险:裸跑容器会发生什么
风险不在容器本身,而在你没改的默认设置。最常见的三种,每一条都对应一个具体配置:
- 权限提升:不对容器内进程做限制时,进程一旦被攻破就可能从普通用户变成 root,等于把整台宿主机的路让出去。
- 资源耗尽:代理任务循环跑飞时,没设限额的容器会吃满宿主的 CPU 和内存,同机其他服务跟着遭殃。
- 系统文件被篡改:根文件系统可写时,agent 执行过程中能改、能删任何系统文件,出了事连现场都留不住。
镜像构建前检查 3 件事
镜像加固决定的是攻击面上限,花 10 分钟把这三点确认掉再构建。
第一件:用你能审的最小基础镜像。项目里environments/benchmarks/terminalbench_2/terminalbench2_env.py的镜像解析逻辑是:优先使用预构建的 Hub 镜像,需要自定义时才回退到本地 Dockerfile 构建。这套模式值得照搬——日常部署拉取经过验证的小镜像,只有必须改东西时才从源码构建,别为了"方便"常建大型自定义镜像。
第二件:改过 Dockerfile 就强制本地构建。如果你在 Dockerfile 里加了安全补丁、裁剪了依赖,别想当然地以为预构建镜像生效了。传入下面这个参数,会跳过预构建镜像、强制从本地 Dockerfile 构建,这样你的自定义安全配置才真正被验证:
force_build=True验证通过后再把结果镜像推回仓库,供日常部署使用。
第三件:把镜像扫描接进构建流水线。项目源码没有内置扫描步骤,需要你自己补:每次产出镜像后跑一遍已知漏洞扫描,不通过就不准推送上线。扫描工具选哪个不重要,"每次必扫、不通过不上线"这条纪律才是关键。
运行时三道防线
运行时防护不是一锤子买卖,下面三个配置打开后,能挡住容器环境里最高频的几类攻击。
第一道:打开 no-new-privileges 权限锁。tools/environments/docker.py里的默认安全选项已包含--security-opt no-new-privileges:容器内进程永远拿不到比启动时更高的权限,被攻破也"升不了级"。自己手写docker run命令时记得把这个选项带上,别只依赖框架默认值。
第二道:把资源限额写明确。三个旋钮都由环境变量控制,tools/terminal_tool.py中读到的默认值是 1 核 / 5120MB / 51200MB:
export TERMINAL_CONTAINER_CPU=1 export TERMINAL_CONTAINER_MEMORY=5120 export TERMINAL_CONTAINER_DISK=51200按你的实际负载调小或调大;任务超限时只卡住任务本身,而不是拖垮整台机器。
第三道:只读根文件系统 + 可写临时目录。容器按"根文件系统只读、指定临时目录可写"的模式运行:系统文件默认改不动,agent 的中间产物照样有地方写。这套模式把"篡改系统文件"这类风险直接变成"写不进去"。
生产环境 3 个常见误区
前三项都配对了,事故也大多出在下面这三个地方。
误区一:默认开着持久化存储。别开。TERMINAL_CONTAINER_PERSISTENT一开,agent 的产物和缓存就落盘留在宿主机上,容器销毁也带不干净。敏感环境建议先评估落盘内容和目录权限,确有必要再开:
export TERMINAL_CONTAINER_PERSISTENT=false不需要跨重启保留数据时,就让它保持关闭。
误区二:用 root 跑容器。别跑。Dockerfile 里创建非特权用户只是一行的事,而 root 运行的代价是:任何一次权限提升直接变成容器内 root,后面所有防护全部打折。
误区三:基础镜像版本长期不更新。别拖。仓库的 Dockerfile 把基础镜像钉在固定版本(如 debian:13.4),版本一旦曝出漏洞,不跟进升级,加固过的镜像就只是"带已知洞的安全壳"。把镜像版本升级排进例行维护,别等审计来催。
自查清单:上线前过一遍
全部打勾再部署,比事后复盘便宜得多。
| 自查项 |
|---|
| 基础镜像是可验证、已锁版本的小镜像 |
| 自定义改动都用 force_build=True 做过本地全量构建验证 |
| 每份新镜像推上线前都跑过漏洞扫描 |
| no-new-privileges 已在容器上生效 |
| CPU / 内存 / 磁盘限额按实际负载调过,不是默认值躺平 |
| 根文件系统只读,仅临时目录可写 |
| TERMINAL_CONTAINER_PERSISTENT 默认关闭,开启有书面理由 |
| 容器内进程以非特权用户运行 |
镜像加固决定攻击面,运行时防护决定被突破后的损失,清单决定你做的是不是真的。想上手就从仓库开始:git clone https://gitcode.com/GitHub_Trending/he/hermes-agent
【免费下载链接】hermes-agentThe agent that grows with you项目地址: https://gitcode.com/GitHub_Trending/he/hermes-agent
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考