Docker 安全基础
Docker 安全概念、容器安全模型和隔离机制
📋 目录
容器安全模型
安全原则
- 最小权限原则:容器只拥有运行所需的最小权限
- 隔离原则:容器之间相互隔离
- 最小攻击面:减少暴露的攻击面
安全层次
- 主机安全: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