Docker 安全基础

Docker 安全概念、容器安全模型和隔离机制


📋 目录


容器安全模型

安全原则

  1. 最小权限原则:容器只拥有运行所需的最小权限
  2. 隔离原则:容器之间相互隔离
  3. 最小攻击面:减少暴露的攻击面

安全层次

  • 主机安全:Docker 守护进程安全
  • 镜像安全:镜像来源和内容安全
  • 容器安全:容器运行时安全
  • 网络安全:容器网络隔离

命名空间隔离

Linux 命名空间

Docker 使用 Linux 命名空间实现隔离:

  • PID 命名空间:进程隔离
  • 网络命名空间:网络隔离
  • 挂载命名空间:文件系统隔离
  • UTS 命名空间:主机名隔离
  • IPC 命名空间:进程间通信隔离
  • 用户命名空间:用户 ID 隔离

控制组(Cgroups)

资源限制

Cgroups 用于限制和监控资源使用:

  • CPU 限制:限制容器使用的 CPU 资源
  • 内存限制:限制容器使用的内存
  • I/O 限制:限制磁盘 I/O
  • 设备访问:控制设备访问权限

能力(Capabilities)

Linux 能力

Docker 使用 Linux 能力机制限制容器权限:

# 删除所有能力,只添加需要的
docker run --cap-drop=ALL --cap-add=NET_BIND_SERVICE nginx:latest

常见能力

  • NET_BIND_SERVICE:绑定特权端口
  • SYS_ADMIN:系统管理权限
  • DAC_OVERRIDE:绕过文件权限检查

安全扫描

镜像安全扫描

# 使用 Docker Scout 扫描
docker scout cves nginx:latest
 
# 使用 Trivy 扫描
trivy image nginx:latest

📚 参考资源


相关笔记