2.11 Docker安全最佳实践:用户权限、资源限制、镜像签名完整防护方案
引言
容器安全是容器化应用的重要保障。通过用户权限控制、资源限制、镜像签名等安全措施,可以构建安全的容器环境。本文将详细介绍Docker安全的最佳实践。
一、容器安全概述
1.1 安全威胁
- 权限提升:容器内root用户
- 资源滥用:CPU、内存耗尽
- 镜像风险:恶意镜像、未签名镜像
- 网络攻击:容器间通信、外部访问
1.2 安全原则
- 最小权限原则
- 资源限制
- 镜像验证
- 网络隔离
二、用户权限控制
2.1 非root用户
# 创建非root用户 RUN groupadd -r appuser && \ useradd -r -g appuser -u 1001 appuser # 切换用户 USER appuser # 设置文件权限 RUN chown -R appuser:appuser /app2.2 运行时指定用户
# 使用--user参数dockerrun --user1000:1000 myapp:latest# 在docker-compose中services: web: user:"1000:1000"2.3 只读文件系统
# 只读根文件系统dockerrun --read-only myapp:latest# 允许特定目录可写dockerrun --read-only\--tmpfs /tmp\--tmpfs /var/run\myapp:latest2.4 禁用特权模式
# 避免使用--privileged# 不好dockerrun --privileged myapp:latest# 好:只授予必要权限dockerrun --cap-add NET_ADMIN myapp:latest三、资源限制
3.1 CPU限制
# 限制CPU使用dockerrun --cpus="1.5"myapp:latest# 限制CPU份额dockerrun --cpu-shares=512myapp:latest# 绑定CPU核心dockerrun --cpuset-cpus="0,1"myapp:latest3.2 内存限制
# 限制内存dockerrun --memory="512m"myapp:latest# 限制内存+交换空间dockerrun --memory="512m"--memory-swap="1g"myapp:latest# OOM killerdockerrun --oom-kill-disable=false myapp:latest3.3 在docker-compose中限制
services: