Kube-bench

Материал из ALT Linux Wiki

kube-bench — это инструмент, который проверяет безопасность развертывания Kubernetes, выполняя проверки, описанные в CIS Kubernetes Benchmark .

Тесты настраиваются с помощью файлов YAML, что позволяет легко обновлять этот инструмент по мере развития спецификаций тестов.

Быстрый старт на kubernetes

1. Получите манифест универсальной проверки для нужной ветки и версии. (Другие варианты проверок можно найти в апрстимном репозитории тут)

$ curl -O https://altlinux.space/cloud/manifests/raw/branch/master/kube-bench/sisyphus/latest/job.yaml

2. Примените манифест

$ kubectl apply -f job.yaml

3. Проверьте, что проверка выполнилась.

$ kubectl get pod

NAME               READY   STATUS      RESTARTS   AGE
kube-bench-5vrvf   0/1     Completed   0          19h

4. Получите репорт о проверке.

$ kubectl logs kube-bench-5vrvf > kube-bench.report

5. Если статус Error вместо Completed, то получить ошибку можно той же командой чтения логов.

$ kubectl logs kube-bench-5vrvf

6. Uninstall

$ kubectl delete -f job.yaml

Особенности на ALT Оркестрации (talos)

Для ALT Оркестрации добавлен отдельный манифест репорта, что связанно с составом функциональности, входящей в систему продукта.

https://altlinux.space/cloud/manifests/raw/branch/master/kube-bench/<branch>/<version>/job-talos.yaml

Так как на ALT Оркестрации есть встроенные настройки привилегий для namespace'ов, необходимо создавать job.yaml в стандартном kube-system или создать новый namespace и установить ей нужный лэйбл. Проверить admissions в системе можно, прочитав конфиг.

$ talosctl cat /system/config/kubernetes/kube-apiserver/admission-control-config.yaml -n alt-orchestra-c-1.zvirt.test 
apiVersion: apiserver.config.k8s.io/v1
kind: AdmissionConfiguration
plugins:
- configuration:
    apiVersion: pod-security.admission.config.k8s.io/v1alpha1
    defaults:
      audit: restricted
      audit-version: latest
      enforce: baseline
      enforce-version: latest
      warn: restricted
      warn-version: latest
    exemptions:
      namespaces:
      - kube-system
      runtimeClasses: []
      usernames: []
    kind: PodSecurityConfiguration
  name: PodSecurity
  path: ""

В данном случае понадобится лэйбл pod-security.kubernetes.io/enforce: Privileged

Документация по admission, по security-standards.