Docker 与 Kubernetes 容器安全
容器安全简介
容器彻底改变了应用程序的部署方式,但也引入了新的攻击向量。 安全防护必须覆盖从 base image 到 Kubernetes 编排的方方面面,包括运行时 防护和 network policies。
Docker 镜像安全
1. 基础镜像选择
- 使用官方且经过验证的镜像(Docker Hub verified publishers)
- 优先选择 Alpine Linux 或 Distroless 以减小攻击面
- 避免使用 :latest 镜像 - 始终指定版本
- 最小化层数并移除不必要的工具
2. 漏洞扫描
- Trivy:Aqua Security 推出的开源扫描器
- Grype:针对镜像和 filesystem 的漏洞扫描
- Clair:静态漏洞分析
- Snyk Container:与 CI/CD 集成
- 在 push 之前于 CI/CD pipeline 中进行自动化扫描
3. 镜像签名
- Docker Content Trust(Notary)用于镜像签名
- Sigstore/Cosign 用于 supply chain security
- 部署前进行完整性验证
Docker 运行时安全
Docker 容器加固:
- User Namespaces:不要以 root 运行(USER directive)
- Capabilities:Drop all + 仅添加必要项(--cap-drop=ALL)
- Read-only Filesystem:--read-only 用于不可变容器
- No New Privileges:--security-opt=no-new-privileges
- Resource Limits:--memory、--cpus 以防止 DoS
- Seccomp Profiles:过滤危险的 syscall
- AppArmor/SELinux:Mandatory access control
Kubernetes 安全
1. RBAC 与访问控制
- 最小权限:特定的 Roles 和 RoleBindings
- 每个应用使用专用的 Service Accounts
- 除关键自动化外,避免使用 ClusterAdmin
- 对所有 API calls 进行 audit logging
2. Pod Security Standards
- Privileged:无限制(应避免)
- Baseline:防止已知的提权
- Restricted:面向生产环境的最大化加固
- Pod Security Admission controller 用于强制执行
3. Network Policies
- Default deny all + 按需显式 allow
- 按 namespace 和 label 进行分段
- egress 控制以防止数据外泄
- 与 CNI plugins 集成(Calico、Cilium)
Secrets 管理
- 切勿硬编码 secrets 到镜像或代码中
- Kubernetes Secrets:Base64 编码(并未加密!)
- External Secrets Operator:与外部 vault 集成
- Sealed Secrets:用于 GitOps 的非对称加密
- HashiCorp Vault:Dynamic secrets 与自动轮换
- AWS Secrets Manager / Azure Key Vault:Cloud-native options
- etcd 的 Encryption at rest(--encryption-provider-config)
运行时安全
运行时防护工具:
- Falco:基于 eBPF 的运行时威胁检测(CNCF)
- Tetragon:eBPF-based security observability(Cilium)
- Sysdig Secure:Container forensics 与 compliance
- Aqua Security:Full lifecycle container security
- Prisma Cloud:CWPP(Cloud Workload Protection Platform)
它们可检测:异常的进程生成、可疑的网络连接、file system 变更、 提权尝试
服务网格安全
- Istio:自动 mTLS、authorization policies、流量加密
- Linkerd:具备 zero-trust networking 的轻量级服务网格
- Consul Connect:service-to-service 加密与授权
- 证书自动轮换
- 微服务之间的细粒度访问控制
- 可观测性:distributed tracing 与 metrics
供应链安全
- SBOM(Software Bill of Materials):使用 Syft、Tern 生成
- Admission Controllers:OPA/Gatekeeper、Kyverno 用于 policy enforcement
- Image Provenance:符合 SLSA framework
- Registry Security:Harbor、Artifactory 集成扫描功能
- 制品的签名与验证(Cosign、Notary v2)
- 持续的漏洞管理
最佳实践
- [OK] 在 pipeline 的每个阶段扫描镜像
- [OK] 实施 Restricted 级别的 Pod Security Standards
- [OK] 对所有 namespace 实施 default deny network policies
- [OK] 外部 secrets(切勿放入 Git 或镜像)
- [OK] 使用 Falco 或同等工具进行运行时监控
- [OK] 启用并集中管理 audit logs
- [OK] 定期更新 cluster 和 components
- [OK] 加密的 etcd 备份
- [OK] 经过测试的 disaster recovery 计划
- [OK] 借助服务网格实现 zero-trust networking
