Как обеспечивается безопасность при работе с контейнерами и Kubernetes?

«Как обеспечивается безопасность при работе с контейнерами и Kubernetes?» — вопрос из категории Безопасность, который задают на 23% собеседований Devops Инженер. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Безопасность в Kubernetes — это многоуровневая модель. Я выстраиваю её по принципу Defense in Depth.

1. Безопасность образов:

  • Использую минималистичные базовые образы (Alpine, Distroless) для сокращения поверхности атаки.
  • Интегрирую сканирование образов на уязвимости (Trivy, Grype) в CI/CD пайплайн. Образы с критическими CVE не попадают в registry.
  • Подписываю образы с помощью Cosign и проверяю подписи на этапе деплоя через политики Kyverno или OPA Gatekeeper.

2. Безопасность рантайма (Pod Security):

  • Применяю принцип наименьших привилегий через securityContext. Стандартная практика:
    apiVersion: v1
    kind: Pod
    metadata:
    name: secured-app
    spec:
    securityContext:
    runAsNonRoot: true
    runAsUser: 1000
    seccompProfile:
      type: RuntimeDefault
    containers:
    - name: app
    image: myapp:latest
    securityContext:
      allowPrivilegeEscalation: false
      capabilities:
        drop: ["ALL"]
      readOnlyRootFilesystem: true
  • Включаю Pod Security Admission (PSA) в кластере, применяя стандартные профили (restricted, baseline).

3. Сетевая безопасность:

  • Сегментирую трафик с помощью NetworkPolicies. По умолчанию запрещаю весь входящий и исходящий трафик, а затем разрешаю только необходимые соединения между компонентами (например, от фронтенда к бэкенду).
  • Использую service mesh (например, Istio) для mTLS-шифрования трафика "сервис-сервис".

4. Управление секретами:

  • Не храню секреты в манифестах или образах. Использую HashiCorp Vault с механизмом инжекции через CSI Driver или сторонние решения типа External Secrets Operator для синхронизации с облачными KMS (AWS Secrets Manager, GCP Secret Manager).

5. Аудит и соответствие:

  • Включаю аудит Kubernetes API-сервера и отправляю логи в централизованную систему (Loki, Elasticsearch).
  • Использую инструменты для проверки соответствия стандартам CIS Benchmarks (kube-bench, kube-hunter).