适用场景

容器安全的关键是"镜像可信 + 运行受限":来源不可信的镜像等于把攻击者请进集群,运行不限权等于给他 root。

配置步骤(运行时策略与准入控制)

# Pod 安全策略示例(禁止特权与宿主路径)
securityContext:
  runAsNonRoot: true
  readOnlyRootFilesystem: true
  allowPrivilegeEscalation: false
  capabilities: { drop: ["ALL"] }

关键参数与建议

  • 镜像来源:只允许私有仓库,基础镜像固定版本并定期更新
  • 签名与校验:镜像签名(cosign 类方案),部署时校验摘要
  • 扫描:CI 阶段扫漏洞,高危阻断;运行时定期复扫
  • 运行策略:禁止 privileged、禁止 hostPath 敏感目录、只读根文件系统
  • 准入控制:用 admission policy 拒绝不合规工作负载

容易踩的坑

  • 业务为了省事用 privileged,风险极高
  • 挂载宿主目录(如 /var/run/docker.sock),等同宿主权限
  • 未设资源限制,被挖矿进程吃满节点

验证与巡检

kubectl get pods -A -o jsonpath='{range .items[*]}{.metadata.name}{"  privileged="}{.spec.containers[*].securityContext.privileged}{"\n"}{end}' | grep -i true | head
  • 巡检:无 privileged、无敏感宿主挂载、资源限制齐全

小结

容器安全验收:随便挑一个运行中的 Pod,能说清镜像来源、是否有高危漏洞、运行权限是否最小。说不清就是风险。

> 说明:文中命令为通用写法,不同型号/版本可能略有差异,落地前请对照设备实际版本的官方文档;带外管理与安全设备变更建议先在测试设备验证。