等保2.0下docker安全合规配置需覆盖身份可信、镜像可信、运行受控、数据不留痕四大核心:守护进程层强制tls双向认证并限制socket权限;镜像层通过cosign签名、trivy扫描、alpine/scratch最小化基础镜像;运行时禁用privileged、细粒度cap-drop、资源硬限制及敏感路径挂载;日志统一json-file驱动并保留180天,容器删除启用--rm或overlay2自动清理,敏感数据经tmpfs注入secret。

直接写可落地的 Docker 安全合规配置,关键不是堆参数,而是覆盖等保2.0(GB/T 22239-2019)对容器环境的核心要求:身份可信、镜像可信、运行受控、数据不留痕。以下按实际部署层级组织,每项都带明确配置方式和验证方法。
守护进程层:禁未授权访问,强制 TLS 认证
Docker daemon socket(/var/run/docker.sock)是最高权限入口,必须隔离+加密:
- 禁止 root 外用户访问 socket:
sudo chmod 600 /var/run/docker.sock && sudo chown root:docker /var/run/docker.sock - 启用 TLS 双向认证,在 /etc/docker/daemon.json 中写入:
{ "tls": true, "tlscacert": "/etc/docker/certs/ca.pem", "tlscert": "/etc/docker/certs/server-cert.pem", "tlskey": "/etc/docker/certs/server-key.pem", "tlsverify": true } - 重启生效:
sudo systemctl restart docker;验证:curl --cert /path/client-cert.pem --key /path/client-key.pem --cacert /path/ca.pem https://localhost:2376/version应返回 JSON,否则配置失败
镜像层:签名+扫描+最小化,三道防线缺一不可
不验证来源、不查漏洞、不裁冗余的镜像,等保测评直接判“高风险”:
-
签名强制化:用
cosign签署所有生产镜像:cosign sign --key cosign.key your-registry/app:v1.2.0;拉取时启用内容信任:export DOCKER_CONTENT_TRUST=1 -
漏洞扫描嵌入 CI:在 GitHub Actions 或 Jenkins 中加入 Trivy 步骤:
trivy image --severity CRITICAL,HIGH --exit-code 1 your-registry/app:v1.2.0,发现高危漏洞则阻断发布 -
基础镜像瘦身:Dockerfile 开头用
FROM alpine:3.18或FROM scratch;构建末尾清理:RUN apk add --no-cache curl && rm -rf /var/cache/apk/*
容器运行时:禁特权、限资源、关危险挂载
等保三级系统明确要求“最小权限原则”,以下配置必须写进启动命令或编排文件:
- 禁用
--privileged,改用细粒度能力控制:--cap-drop=ALL --cap-add=NET_BIND_SERVICE - 硬性限制资源:
--memory=512m --cpus=1.0 --pids-limit=100;Kubernetes 中对应resources.limits和securityContext - 禁止挂载敏感宿主机路径:
-v /var/run/docker.sock:/var/run/docker.sock绝对禁用;-v /etc:/mnt/etc:ro类只读挂载也需审批并记录
日志与残留:留痕可审计,删除即清空
等保通用要求日志保存 ≥180 天,且容器销毁后不能遗留敏感数据:
- 统一日志驱动:
"log-driver":"json-file","log-opts":{"max-size":"10m","max-file":"10"}写入 daemon.json;日志目录挂载到独立磁盘并设置定时归档 - 容器启动加
--rm参数(仅适用于短期任务);长期服务则配置存储驱动自动清理:"storage-driver":"overlay2","storage-opts":["overlay2.override_kernel_check=true"] - 敏感数据绝不写入镜像层:密码、密钥通过
docker secret(Swarm)或Secret对象(K8s)注入,且挂载路径设为tmpfs
不复杂但容易忽略——合规配置不是一次写完就结束,而是要和 CI/CD 流水线、镜像仓库策略、宿主机加固联动。每次镜像构建、容器启动、daemon 更新,都该触发自动检查。











