> 技术文档 > 容器安全——AI教你学Docker

容器安全——AI教你学Docker


1.10 容器安全详解

容器安全是保障云原生、微服务、DevOps 等现代应用架构安全运行的核心环节。Docker 容器安全应从镜像、权限、发布、网络、运行时等多层面进行防护。

一、镜像安全扫描

1. 目的

  • 检查镜像中是否存在系统漏洞、恶意软件、不安全配置等隐患,防止安全威胁随着镜像流入生产环境。

2. 常用工具

1) Trivy
  • 简介:Aqua Security 开源的轻量级容器安全扫描工具,支持扫描镜像、文件系统、Git 仓库等。
  • 特点:速度快,支持 CVE 漏洞库、敏感信息、依赖风险扫描。
  • 用法
    trivy image nginx:latesttrivy fs . # 扫描本地项目
  • 集成:支持与 CI/CD、Harbor、K8s Admission Controller 集成。
2) Clair
  • 简介:CoreOS(RedHat)开源的容器安全扫描服务,适合与私有仓库对接。
  • 特点:支持自动扫描仓库中的镜像,定期同步漏洞库。
  • 用法:通常后台服务,无命令行,需集成到 Harbor、Quay 等平台。
3) 其他工具
  • AnchoreSnykHarbor 内置扫描等。

二、最小权限原则

最小权限原则(Principle of Least Privilege,PoLP)要求只赋予容器、进程、用户最低限度的权限,减少攻击面。

1. 设置非 root 用户(USER)

  • 默认容器进程以 root 用户运行,安全风险高。
  • 推荐在 Dockerfile 中添加:
    RUN useradd -m appuserUSER appuser
  • 或用官方基础镜像自带的非 root 用户(如 node:alpine)。

2. Linux Capability 限制(–cap-drop/–cap-add)

  • Linux 权限划分为多种 Capabilities,容器默认有一部分,减少后更安全。
  • 常用参数
    • --cap-drop ALL:去除全部,再按需 --cap-add
    • 例:
      docker run --cap-drop ALL --cap-add NET_BIND_SERVICE ...
    • 常用 Capabilities 列表:官方文档

3. 安全配置文件

a) seccomp(安全计算模式)
  • 限制容器系统调用(Syscall),防止利用内核漏洞。
  • Docker 默认启用 seccomp 配置,可自定义:
    docker run --security-opt seccomp=unconfined ...# 或自定义 seccomp 配置
b) AppArmor(应用安全配置,仅限 Ubuntu/Debian)
  • 通过配置文件限制容器的访问能力。
  • 使用时需在宿主机预先定义 profile:
    docker run --security-opt apparmor=my-profile ...
c) SELinux(安全增强 Linux,仅限 CentOS/RedHat)
  • 基于标签的强制访问控制。
  • 启用:
    docker run --security-opt label:type:container_t ...
  • 配合卷挂载、宿主机操作有更强的粒度控制。

三、镜像签名与可信发布

1. 镜像签名

  • 防止镜像被篡改,确保拉取和部署的镜像来源可信。
  • 技术方案
    • Docker Content Trust(DCT)/ Notary:基于公私钥机制签名与验证镜像。
      export DOCKER_CONTENT_TRUST=1docker push myrepo/myimage:tag # 自动签名docker pull myrepo/myimage:tag # 验证签名
    • Sigstore/cosignHarbor 签名等现代方案。

2. 镜像仓库安全

  • 配置私有仓库 HTTPS,开启认证与访问控制。
  • 只允许拉取官方或可信源镜像,定期清理过期/不安全镜像。
  • 利用 Harbor、Quay 等企业级仓库的签名与扫描功能。

四、网络安全与隔离

1. 网络隔离

  • 建议将不同安全域的服务部署到不同的 Docker 网络。
  • 默认自定义 bridge 网络间隔离,未显式连接的容器无法互通。

2. 最小开放原则

  • 只映射和开放必需端口(-p),避免暴露敏感服务。
  • 结合宿主机防火墙(iptables/firewalld)限制访问源。

3. 生产环境建议

  • 避免使用 --network host 提升隔离性。
  • Overlay 网络可启用加密,保护跨主机流量。

4. 网络安全组与云原生安全

  • 在云环境下,结合安全组、VPC、Service Mesh(如 Istio)等多层防护。

五、其他安全建议

  • 定期更新基础镜像和业务镜像,修补已知漏洞。
  • 使用 .dockerignore,杜绝敏感文件(如私钥、证书)被打入镜像。
  • 监控容器运行时行为(如 Falco),及时发现异常。
  • 最小化基础镜像(如用 scratch、alpine),减少攻击面。
  • 禁止或限制特权容器(–privileged),非必要不启用。

六、参考资料

  • Docker 官方安全文档
  • Trivy 项目主页
  • Clair 项目主页
  • Docker Content Trust
  • Harbor 容器镜像仓库