容器安全上下文(Container Security Context)

  • 用户 ID 和组 ID (UID/GID):指定容器内部运行进程的用户和组 ID,避免以 root 用户身份运行。
  • 能力(Capabilities):最小化容器内进程的能力集,移除不必要的特权能力。
  • 特权模式(Privileged mode):避免使用特权模式,除非绝对必要。
  • 读取只根文件系统(Read-only file system):尽可能使容器的根文件系统为只读,减少潜在的安全威胁。
  • 主机网络/端口(Host network/ports):避免使用主机网络或端口,除非确实需要与主机直接通信。

Pod 安全上下文(Pod Security Context)

  • FSGroup:定义 Pod 内容器共享的文件系统组 ID 范围,以限制文件系统的访问权限。
  • 补充组(Supplemental groups):为容器指定补充组,进一步限制文件访问权限。
  • SELinux/AppArmor 标签:如果集群启用了 SELinux 或 AppArmor,应正确设置标签以遵循强制访问控制策略。

网络安全

  • 网络策略(Network Policies):使用网络策略来限制 Pod 之间的通信,仅允许必要的流量。
  • 服务账户(Service Accounts):为 Pod 分配适当的 Service Account,限制其访问集群资源的权限。

配置管理

  • Secrets 和 ConfigMaps:敏感信息(如密码、密钥等)应使用 Secrets 存储,而非硬编码在容器镜像或配置文件中。
  • 环境变量:避免将敏感信息暴露在环境变量中。

应用程序安全

  • 最小化镜像:使用官方或可信来源的基础镜像,并尽量减小镜像大小和依赖项数量。
  • 定期更新:定期更新容器镜像及其依赖项,修复已知bug。
  • 健康检查:配置 liveness 和 readiness 探针,确保容器正常运行并及时响应。

部署策略

  • 资源限制:为容器设置 CPU 和内存的请求和限制,防止资源滥用。
  • 自动扩展:使用水平自动扩展器(HPA)来动态调整副本数,以应对负载变化。

监控和审计

  • 日志记录:确保应用程序和基础设施的日志被收集并分析,以便于检测异常行为。
  • 审计日志:启用 Kubernetes 审计日志功能,记录集群活动。