• Русский
  • Pod Security Admission

    Обратитесь к официальной документации Kubernetes: Pod Security Admission

    Pod Security Admission (PSA) — это контроллер допуска Kubernetes, который обеспечивает выполнение политик безопасности на уровне namespace, проверяя спецификации Pod на соответствие предопределённым стандартам.

    Режимы безопасности

    PSA определяет три режима для управления обработкой нарушений политики:

    РежимПоведениеСценарий использования
    EnforceЗапрещает создание/изменение Pod, не соответствующих требованиям.Производственные среды, требующие строгого соблюдения безопасности.
    AuditПозволяет создавать Pod, но регистрирует нарушения в аудит-логах.Мониторинг и анализ инцидентов безопасности без блокировки рабочих нагрузок.
    WarnПозволяет создавать Pod, но возвращает клиенту предупреждения о нарушениях.Тестовые среды или переходные этапы для корректировки политик.

    Ключевые замечания:

    • Режим Enforce действует только на Pod (например, отклоняет Pod, но разрешает ресурсы, не являющиеся Pod, такие как Deployments).
    • Режимы Audit и Warn применяются как к Pod, так и к их контроллерам (например, Deployments).

    Стандарты безопасности

    PSA определяет три стандарта безопасности для ограничения привилегий Pod:

    СтандартОписаниеОсновные ограничения
    PrivilegedНеограниченный доступ. Подходит для доверенных рабочих нагрузок (например, системных компонентов).Нет проверки полей securityContext.
    BaselineМинимальные ограничения для предотвращения известных эскалаций привилегий.Блокирует hostNetwork, hostPID, привилегированные контейнеры и неограниченные тома hostPath.
    RestrictedСамая строгая политика, обеспечивающая лучшие практики безопасности.Требует:
    - runAsNonRoot: true
    - seccompProfile.type: RuntimeDefault
    - Удалённые Linux capabilities.

    Конфигурация

    Метки Namespace

    Применяйте метки к namespace для определения политик PSA.

    Пример YAML-файла

    apiVersion: v1
    kind: Namespace
    metadata:
      name: example-namespace
      labels:
        pod-security.kubernetes.io/enforce: restricted
        pod-security.kubernetes.io/audit: baseline
        pod-security.kubernetes.io/warn: baseline

    Команда CLI

    # Шаг 1: Обновить метки Pod Admission
    kubectl label namespace <namespace-name> \
      pod-security.kubernetes.io/enforce=baseline \
      pod-security.kubernetes.io/audit=restricted \
      --overwrite
    
    # Шаг 2: Проверить метки
    kubectl get namespace <namespace-name> --show-labels

    Исключения

    Исключайте конкретных пользователей, namespace или runtime классы из проверок PSA.

    Пример конфигурации:

    apiVersion: pod-security.admission.config.k8s.io/v1
    kind: PodSecurityConfiguration
    exemptions:
      usernames: ['admin']
      runtimeClasses: ['nvidia']
      namespaces: ['kube-system']