ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

Hermes Agent 容器安全完整指南:从构建到上线的四道防线

Hermes Agent 容器安全完整指南:从构建到上线的四道防线 Hermes Agent 容器安全完整指南从构建到上线的四道防线【免费下载链接】hermes-agentThe agent that grows with you项目地址: https://gitcode.com/GitHub_Trending/he/hermes-agent给 AI Agent 一个 shell等于给它一台能执行任意命令的机器——它自己就是一块攻击面。Hermes Agent 的容器安全正是围绕这一点设计的从镜像构建那一刻起就在启动时、运行中和上线后逐层设防。读完这篇文章你能拿到一张部署时间线×源码位置的对照表、可直接抄的配置默认值以及一份上线前自检清单照着做就能完成一次完整的 Docker 安全配置。全景Hermes Agent 容器安全的四道防线与其按镜像/运行时/配置三个名词分类不如按一次真实部署的时间线来看——每个阶段要堵的漏洞完全不同阶段防什么关键机制源码位置构建时攻击面过大、供应链篡改多阶段瘦身、依赖 SHA256 校验Dockerfile启动时容器内提权no-new-privileges等安全选项tools/environments/docker.py运行中写坏系统文件、资源耗尽只读根目录、CPU/内存/磁盘上限tools/terminal_tool.py、agent/prompt_builder.py上线后旧镜像漏洞、权限遗留镜像滚动更新、非 root 运行environments/benchmarks/terminalbench_2/terminalbench2_env.py这张表就是后文的目录按时间线走一遍每道防线讲清要解决什么问题再给方案。第一道防线构建时——把镜像瘦到无可下手构建阶段的核心矛盾是Agent 需要一堆工具链而每多装一个包攻击面就多一扇窗。Hermes Agent 的做法是多阶段构建 全程校验。看Dockerfile的结构Python 工具链来自独立的 uv 源阶段Node 26 来自独立的 node 源阶段最终运行时只COPY需要的二进制构建器、编译缓存统统留在中间层不进镜像FROM ghcr.io/astral-sh/uv:0.11.6-python3.13-trixiesha256:b3c5... AS uv_source FROM node:26-bookworm-slimsha256:9e6f9357... AS node_source FROM debian:13.4它替你干了什么基础镜像按 digest 锁死中间产物被隔离在阶段里最终镜像只保留运行必需件——攻击者想翻的东西基本不在船上。更值得注意的是供应链视角Dockerfile 里连 s6-overlay 的每个 tar 包都带ARG声明的 SHA256下载后先sha256sum -c再解压。这意味着镜像加固不只是装得少还包括装进来的每一样都能验身。扫描环节源码中没有内置但位置很自然在 CI 里构建完成后加一行trivy image 镜像名之类的扫描步骤即可把带已知 CVE 的镜像拦在发布之前这属于团队 CI 流程不属于仓库本身。第二道防线启动与运行时——给 Agent 上三把锁容器一启动Hermes Agent 就会给每一个容器统一注入安全选项见tools/environments/docker.py第一把锁是禁止提权# Security flags applied to every container SECURITY_FLAGS [ --security-opt, no-new-privileges, ]大白话容器里的进程就算拿到 setuid 二进制或触发内核漏洞也无法再获得新权限——提权这条路在启动那一刻就焊死了。第二把锁是只读根文件系统。官方镜像把代码放在只读的/opt/hermesUSER是 UID 10000 的 hermes 用户root 仅用于构建期可写状态全部收敛到挂载的/opt/data数据卷。Agent 哪怕执行了rm -rf烧掉的也只是临时数据卷系统文件纹丝不动。第三把锁是资源上限。tools/terminal_tool.py与agent/prompt_builder.py里能看到默认值全部可用环境变量覆盖配置项环境变量默认值CPU 核数TERMINAL_CONTAINER_CPU1 核内存TERMINAL_CONTAINER_MEMORY5120 MB磁盘TERMINAL_CONTAINER_DISK51200 MB为什么这么配Agent 会跑编译、下载依赖这类吃资源大户不设上限一个失控会话就能拖垮宿主机设了上限最坏情况也只是它自己被限流。第三道防线配置与运维——上线之后的持久功课 ️最小权限别只停留在口号。官方镜像useradd -u 10000 hermes创建非特权用户s6 服务脚本里每个受监督进程都通过s6-setuidgid hermes降权docker exec时即使你是 rootdocker/hermes-exec-shim.sh也会透明地把你降回 hermes 用户再执行。自己写 Dockerfile 时同理先建非 root 用户再USER切换。持久化开关要主动做取舍。container_persistent默认开启TERMINAL_CONTAINER_PERSISTENT可关好处是会话环境跨重启保留代价是容器被攻破后恶意文件也能活着。敏感环境建议置为 false或者把持久化目录的权限收紧到最小。镜像更新节奏要定期且可复现。构建端用force_build强制从 Dockerfile 重建验证自定义安全配置不会偷偷走缓存运行端则通过environments/benchmarks/terminalbench_2/terminalbench2_env.py的镜像解析逻辑集中更换基础镜像版本——优先拉取预构建的 Hub 镜像需要定制才回退本地构建。建议每月跟一次基础镜像安全更新改完在预发跑一遍回归再放量。上线前自检清单#检查项怎么验证1基础镜像最小化、按 digest 锁定docker history看层数与来源2构建产物过了漏洞扫描CI 里 trivy/grype 报告全绿3注入了no-new-privilegesdocker inspect查SecurityOpt4根文件系统只读可写区收敛到数据卷容器内touch /etc/x应失败5CPU/内存/磁盘上限已设核对TERMINAL_CONTAINER_*环境变量6以非 root 用户运行docker exec后whoami不是 root7container_persistent按环境显式取舍敏感环境置 false 并记录原因8基础镜像更新有固定节奏日历里有月度镜像巡检任务容器安全不是一次性配置而是跟着镜像版本持续运转的纪律。把这套时间线上的防线跑通你的 Hermes Agent 才算真正穿上了铠甲git clone https://gitcode.com/GitHub_Trending/he/hermes-agent想深挖实现看这三处tools/environments/docker.py、tools/terminal_tool.py、environments/benchmarks/terminalbench_2/terminalbench2_env.py。【免费下载链接】hermes-agentThe agent that grows with you项目地址: https://gitcode.com/GitHub_Trending/he/hermes-agent创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表