Ответ
Безопасность в Kubernetes — это многослойный подход (Defense in Depth). Вот ключевые практики, которые я применял:
-
Использование минимально привилегированных образов:
- Запуск контейнеров не от root. Создание отдельного пользователя в Dockerfile.
FROM alpine RUN addgroup -S appgroup && adduser -S appuser -G appgroup USER appuser COPY --chown=appuser:appgroup app /app
- Запуск контейнеров не от root. Создание отдельного пользователя в Dockerfile.
-
Применение Pod Security Standards (PSS): Настройка
Pod Security Admissionна уровне namespace для автоматического запрета привилегированных подов.# namespace.yaml apiVersion: v1 kind: Namespace metadata: name: my-app labels: pod-security.kubernetes.io/enforce: baseline pod-security.kubernetes.io/enforce-version: latest -
Строгий RBAC (Role-Based Access Control): Принцип наименьших привилегий. Создание
ServiceAccount,Role/ClusterRoleиRoleBindingтолько с необходимыми правами.# role.yaml - роль, разрешающая только читать логи в конкретном namespace apiVersion: rbac.authorization.k8s.io/v1 kind: Role metadata: namespace: monitoring name: pod-log-reader rules: - apiGroups: [""] resources: ["pods", "pods/log"] verbs: ["get", "list"] -
Сетевая изоляция с Network Policies: По умолчанию весь трафик между подами разрешен. Необходимо явно запретить всё и разрешить только необходимое.
apiVersion: networking.k8s.io/v1 kind: NetworkPolicy metadata: name: api-allow-only-frontend spec: podSelector: matchLabels: app: backend-api policyTypes: - Ingress ingress: - from: - podSelector: matchLabels: app: frontend ports: - protocol: TCP port: 8080 -
Безопасное управление секретами: Использование
Secrets(в зашифрованном виде с помощьюEncryptionConfiguration) или, что лучше, внешних систем типа HashiCorp Vault с использованием инжектора (Vault Agent Sidecar). -
Сканирование образов на уязвимости: Интеграция сканеров (Trivy, Grype) в CI/CD пайплайн для проверки базовых образов и зависимостей перед сборкой и деплоем.
-
Аудит (Audit Logging): Включение и анализ логов аудита Kubernetes API для отслеживания подозрительных операций (например, массовое создание подов или попытки эскалации привилегий).