Код-ревью Middle Облако и контейнеры обновлено

Ревью: манифест Deployment

Вопрос

Найдите проблемы безопасности в манифесте Kubernetes.

apiVersion: apps/v1
kind: Deployment
metadata: { name: api }
spec:
  template:
    spec:
      serviceAccountName: default
      hostNetwork: true
      containers:
        - name: api
          image: registry.example.com/api:latest
          securityContext:
            privileged: true
            runAsUser: 0
          env:
            - name: JWT_SECRET
              value: "change-me"
          volumeMounts:
            - { name: host, mountPath: /host }
      volumes:
        - name: host
          hostPath: { path: / }

Коротко

Этот манифест не прошёл бы Pod Security уровня baseline, не то что restricted. Включённый Pod Security Admission на namespace просто не дал бы его создать.

Что должен найти ревьюер

  1. Безопасностьстрока 7
    Используется сервисный аккаунт default с автомонтированием токена: нужен отдельный аккаунт с минимальными правами или automountServiceAccountToken: false.
  2. Безопасностьстрока 8
    hostNetwork: true: под видит сеть узла, включая локальные сервисы и метаданные.
  3. Безопасностьстрока 11
    Образ по тегу latest, без digest и проверки подписи.
  4. Безопасностьстрока 13
    privileged: true: полный доступ к устройствам узла, побег из контейнера тривиален.
  5. Безопасностьстрока 14
    Запуск от root (runAsUser: 0). Нужны runAsNonRoot, allowPrivilegeEscalation: false, readOnlyRootFilesystem, capabilities.drop: [ALL].
  6. Безопасностьстрока 17
    Секрет прямо в манифесте и в git, к тому же слабый.
  7. Безопасностьстрока 22
    hostPath: / монтирует всю файловую систему узла.
  8. Производительностьстрока 10
    Нет resources.limits: один под может забрать ресурсы узла.

Разбор

Этот манифест не прошёл бы Pod Security уровня baseline, не то что restricted. Включённый Pod Security Admission на namespace просто не дал бы его создать.

Ответьте сами, а не прочитайте

В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.