docker容器安全审计需分层配置:镜像构建用syft+grype+trivy联合扫描sbom与漏洞;运行时用falco监听系统调用实现实时行为监控;宿主机用docker bench for security检查cis基线;日志通过elk/loki集中结构化审计。

Docker 容器安全审计不是装一个工具就完事,而是要分层配置、各司其职:镜像构建时查漏洞、运行时盯行为、宿主机守基线、日志里留证据。核心是让不同工具在不同阶段发挥不可替代的作用,避免重复扫描或漏掉关键环节。
一、镜像构建阶段:用 Syft + Grype + Trivy 联合扫描
目标是发现软件供应链风险(CVE、密钥、错误配置),不依赖运行环境,纯静态分析。
- 先用 Syft 提取完整 SBOM(软件物料清单):
syft myapp:latest -o cyclonedx-json > sbom.json
- 再用 Grype 基于 SBOM 匹配漏洞(轻量、快、可精准退出码控制):
grype sbom.json --fail-on high,critical
- 最后用 Trivy 补全扫描(支持配置审计、密钥检测、IaC 检查):
trivy image --security-checks config,secret,vuln myapp:latest
注意:不要只跑 Trivy 一遍——它内部会重复解析镜像层,CI 流水线中耗时翻倍;联合使用能节省 40%+ 扫描时间,且结果交叉验证更可信。
二、容器运行时:用 Falco 实时行为监控
它不看代码或镜像,只监听系统调用,专抓“正在发生的异常”。
- 安装 Falco(推荐 eBPF 模式):
curl -s https://falco.org/repo/falco-$(uname -r).rpm | sudo rpm -i -
- 启用关键规则(如禁止 shell 进入、写敏感路径、加载内核模块):
编辑/etc/falco/falco.yaml,确保rules_file包含rules/falco_rules.yaml,并开启output输出到文件或 Syslog。 - 示例告警:容器内执行
sh、修改/etc/passwd、非 root 用户绑定特权端口,都会实时触发。
三、宿主机与 Docker 引擎:用 Docker Bench for Security 做 CIS 基线检查
这是对 Docker 守护进程、权限、日志、网络等底层配置的合规性审计。
- 直接运行(需 root 权限):
docker run --rm -v /etc:/etc:ro -v /var/run/docker.sock:/var/run/docker.sock:ro docker/docker-bench-security
- 关注高危项:
- Docker daemon 是否启用
--userns-remap(用户命名空间隔离) - 日志是否配置了大小与轮转(
/etc/docker/daemon.json中"log-opts") -
/var/lib/docker是否挂载在独立分区、是否启用auditd审计日志
- Docker daemon 是否启用
四、日志集中审计:用 ELK 或 Loki 收集结构化日志
光有告警不够,得有上下文可追溯。
- Harbor 的审计日志默认输出到
/data/harbor/logs/audit.log,结构清晰(含操作人、时间、资源、结果); - Docker 守护进程日志建议统一为
json-file驱动,并限制大小:{ "log-driver": "json-file", "log-opts": { "max-size": "100m", "max-file": "3" } } - 把容器 stdout/stderr、Falco 告警、Harbor audit.log 全部接入 Loki + Grafana,按标签(
container_name,host,severity)聚合查询,一次点击就能还原某次登录后的全部操作链。
不复杂但容易忽略。











