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

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

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

    Содержание

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

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

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

    Основные замечания:

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

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

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

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

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

    Метки 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']