简介:CIS Kubernetes 安全基准指南

在使用 Kube Bench 的过程中注意到,其指导依据来自于 CIS Benchmark,于是顺藤摸瓜,下载了 CIS Kubernetews Be nchmark 的 PDF 版本,全文有两百多页,阅读量还蛮大的,因此对其进行整理,便于大家参考使用。

简介

CIS 的指导原则里把建议行为分成了两级:

  • 一级:使用该建议不会造成负面影响。
  • 二级:仅建议在非常强调安全性的系统中使用,可能对系统有副作用。

另外还将具体的检测结果分为计分和不计分两种结果。

以上两个维度可以用来对系统进行现状评估,也有助于读者选择性地采纳加固措施。

整个指南分为五个部分:

  1. 控制平面组件
  2. etcd
  3. 控制平面配置
  4. 节点配置
  5. 策略

检查项概要

  1. 所有运行参数文件、kubeconfig 文件以及证书,权限至少应为 644 并且属于 root:root

  2. API Server

    • 南向和北向通信
      • 关闭匿名访问
      • 禁止明文通信
    • 认证
      • 启用 Node,RBAC 认证
      • 禁用 Token 和 Basic 认证
      • 禁用 Alwaysallow
    • Admission Control
      • 禁用:AlwaysAdmit
      • 启用:AlwaysPullImages、AlwaysAdmit、EventRateLimit、ServiceAccount、NamespaceLifecycle、PodSecurityPolicy、NodeRestriction
    • 关闭 profiling
    • 启用审计日志
    • 启用请求超时
    • 启用 --service-account-lookup
    • --tls-cipher-suites 仅使用新的、强加密算法
    • 使用 oidc 等模式来代替客户端证书认证。
  3. Controller Manager

    • 关闭 profiling
    • 开启 --use-service-account-credentials
    • 绑定 127.0.0.1
    • 启用 --service-account-private-key-file
    • --feature-gates 启用 RotateKubeletServerCertificate
  4. Scheduler

    • 关闭 profiling
    • 绑定 127.0.0.1
  5. ETCD

    • 启用节点间和客户端的双向认证
    • 设置数据文件权限
    • 禁用 --auto-tls
    • 使用独立的 CA 证书
  6. 工作节点

    • Kubelet、Kube-proxy 的服务和配置文件权限
    • 关闭匿名访问
    • --authorization-mode 禁用 AlwaysAllow
    • kubelet 参数 --read-only-port 为 0
    • --streaming-connection-idle-timeout 不应设置为 0
    • --protect-kernel-defaults 设置为 true
    • --make-iptables-util-chains 设置为 true
    • 不要设置 --hostname-override
    • HTTPS 访问
    • --rotate-certificates 设置为 true
    • --event-qps 设置足够高,或者为 0
    • --feature-gates 启用 RotateKubeletServerCertificate
  7. RBAC 和 ServiceAccount

    • 仅在需要时才使用 cluster-admin 角色
    • 限制对 secret 的访问
    • 限制使用通配符
    • 限制分配 Pod 创建权限
    • 仅在需要时才加载 Token,缺省将 automountServic eAccountToken 为 false
    • 使用不同的 ServiceAccount
  8. Pod Security Policy

    • 使用 PSP 不应泛泛使用 privileged
    • 使用 PSP 谨慎控制如下授权
      • hostPID
      • hostIPC
      • hostNetwork
      • allowPrivilegeEscalation
      • runAsUser.rule
      • NET_RAW
    • 不应提供全面放行的 PSP 策略
  9. 网络策略和 CNI

    • 支持策略的 CNI
    • 所有命名空间都定义网络策略
  10. Secret 管理

    • 建议使用文件而非环境变量
    • 使用外部 Secret 存储
  11. 扩展准入控制

    • 保障镜像来源
  12. 通用策略

    • 命名空间隔离
    • 在 Docker 中启用 seccomp
    • 为 Pod 和容器启用 Security context
    • 不用缺省命名空间
Avatar
崔秀龙

简单,是大师的责任;我们凡夫俗子,能做到清楚就很不容易了。

comments powered by Disqus
下一页
上一页

相关