22

简介:CIS Kubernetes 安全基准指南

 4 years ago
source link: https://blog.fleeto.us/post/cis-benchmark-brief/
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

在使用 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
    
  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
    false
    
  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
    • 不用缺省命名空间

About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK