• Русский
  • 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']