Перейти к содержанию

kube-bench — аудит K8s по CIS Benchmark

Безопасность · Kubernetes
Изучено

Проблема

Кластер поднят, работает, приложения катаются. Никто не знает, включён ли audit log, разрешён ли --anonymous-auth, не торчит ли etcd наружу и как настроен kubelet. Все смотрят в документацию CIS Kubernetes Benchmark и скучнеют от 100+ пунктов ручной проверки.

Решение

kube-bench от Aqua — автоматическая проверка кластера по CIS Kubernetes Benchmark. Запускается как Job в самом кластере, читает конфиги компонентов на нодах, выдаёт pass/warn/fail по каждому пункту.

Пример

Запуск одной командой на managed-кластере (EKS/GKE/AKS):

kubectl apply -f https://raw.githubusercontent.com/aquasecurity/kube-bench/main/job-eks.yaml
kubectl logs -f job/kube-bench

Фрагмент типичного отчёта:

[INFO] 4 Worker Node Security Configuration
[INFO] 4.1 Worker Node Configuration Files
[PASS] 4.1.1 Ensure kubelet service file permissions are 600 or more restrictive
[FAIL] 4.1.2 Ensure kubelet service file ownership is root:root
[WARN] 4.2.6 Ensure --protect-kernel-defaults is set to true

Для self-managed кластеров (kubeadm):

apiVersion: batch/v1
kind: Job
metadata:
  name: kube-bench-master
spec:
  template:
    spec:
      hostPID: true
      nodeSelector:
        node-role.kubernetes.io/control-plane: ""
      containers:
        - name: kube-bench
          image: aquasec/kube-bench:v0.9.3
          command: ["kube-bench", "run", "--targets=master"]
      restartPolicy: Never

В CI — еженедельный прогон с отправкой отчёта в Slack:

kube-bench --outputfile report.json --json
jq '.Totals.total_fail' report.json   # общее число FAIL

Когда применять

  • Сразу после провиженинга кластера — базовая проверка.
  • Раз в месяц на живых кластерах — ловить дрейф конфигурации.
  • После любого апгрейда control-plane.

Источник

Как применить у себя

  1. Запустить kube-bench разовым Job на каждом кластере (dev/stage/prod).
  2. Разобрать FAIL: что можно поправить сразу (permissions, флаги kubelet), что требует обсуждения (enable audit log).
  3. Добавить еженедельный Job + хранение отчётов в S3.
  4. Когда после второй итерации количество FAIL стабильно уменьшается — статус Изучено.