为什么这是高危配置
把容器运行时的套接字文件挂进容器,等于把守护进程的控制权交了出去:容器内可以通过接口创建新容器、读写宿主文件系统、启动特权容器,权限面接近宿主高权限。这类配置在持续集成与部署代理场景里很常见,但它属于高危项,需要严格限定使用范围并纳入审计。
基本信息
| 风险 | 容器可经套接字控制宿主的容器运行时 |
|---|---|
| 识别方式 | 检查挂载列表里是否出现该套接字路径 |
| 常见来源 | 持续集成构建容器、部署代理、监控采集工具 |
| 替代方案 | 用代理网关收敛可调用接口、使用专用环境或无守护进程模式 |
| 同等权限 | 宿主上加入对应用户组 |
典型使用场景
- 审计存量容器,找出挂载了该套接字的实例
- 评估构建任务与宿主之间的权限边界
- 用代理方式把可调用的接口收敛到白名单
- 迁移到无守护进程模式以降低权限面
- 权限评审时把用户组授权一并纳入清单
排查挂载情况
排查挂载情况
docker inspect -f '{{range .Mounts}}{{.Source}} -> {{.Destination}}{{println}}{{end}}' ci-runner
docker ps -q | xargs -r docker inspect -f '{{.Name}} {{range .Mounts}}{{.Source}} {{end}}' # 全量排查
docker ps -a -q | xargs -r docker inspect -f '{{.Name}} {{json .HostConfig.Binds}}' # 含已停止容器风险与处置
| 方面 | 说明 | 注意 |
|---|---|---|
| 权限面 | 等效宿主高权限 | 可创建特权容器 |
| 识别方式 | 挂载列表出现套接字路径 | 需覆盖已停止容器 |
| 替代方案 | 代理网关收敛接口 | 按需放开具体端点 |
| 同等风险 | 宿主用户组授权 | 两类要一起审计 |
宿主上把账号加入对应用户组,同样等于获得这个权限面,两者都要纳入权限审计与最小化名单。
挂载时加只读参数并不能阻止通过接口执行特权操作,不要把只读挂载当作缓解措施。
审计结果要留档:记录哪些容器挂载了该套接字、用途是什么、由谁确认过必要性,后续收敛才有依据。