概述
自托管 Runner 若与生产网络同处一层且保留状态,一次恶意任务即可横向移动并窃取凭据。按信任级别拆分 Runner、让任务在容器或虚拟机内运行且运行后销毁、限制网络与文件系统、不在主机上放置长期凭据,可把主机被攻陷的影响限制在最小范围。
关键步骤
- 按公开、内部与生产级别分离 Runner。
- 在全新容器或虚拟机内运行任务,结束后销毁。
- 限制文件系统与网络访问到构建所需。
- 视 Runner 主机为不可信,避免放置长期凭据。
验证
- 任务无法读取工作区之外的宿主文件系统。
- 任务无法触达生产网络。
- 宿主上无长期凭据。
- Runner 清单与信任级别有记录。
决策点
不可信任务应使用临时 Runner;生产访问只能来自专用且严格控制的生产 Runner。
适用范围
本条目围绕「自托管 Runner 加固工作流」给出可复制的步骤、验证方式与常见问题,适合需要按此流程落地的工程团队。执行时请结合自身上下文调整命令与阈值,并在变更前后留存证据,便于后续复核与回滚。
# run a job in an ephemeral container with limited mounts
docker run --rm --network none -v "$PWD:/work" -w /work ubuntu:24.04 ./build.sh