Применение стандартов безопасности подов

Материал из Документация Ключ-АСТРОМ
Версия от 20:06, 1 декабря 2025; IKuznetsov (обсуждение | вклад) (Новая страница: «<code>Kubernetes версии 1.25+</code> Уровни изоляции на основе пространства имён для модулей можно з...»)
(разн.) ← Предыдущая | Текущая версия (разн.) | Следующая → (разн.)

Kubernetes версии 1.25+

Уровни изоляции на основе пространства имён для модулей можно задать с помощью стандартов безопасности подов (Pod Security Standards), которые реализуются встроенным контроллером допуска Pod Security. Эти стандарты определяют список элементов управления, таких как возможности, профили seccomp и типы томов.

Хотя контроллер доступа Pod Security является встроенной функцией Kubernetes, он не обязательно включен по умолчанию во всех дистрибутивах Kubernetes. Более того, в средах, где требуются расширенные или иные политики безопасности, можно использовать сторонние альтернативы, такие как Open Policy Agent (OPA). Подробнее об использовании сторонних инструментов для обеспечения соблюдения стандартов безопасности Pod см. в статье «Обеспечение соблюдения стандартов безопасности Pod с помощью сторонних альтернатив».

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

Стандарты безопасности Pod определяют три политики:

Стандарты безопасности Pod — это встроенная функция Kubernetes, и их нельзя расширить или настроить.

Настройте безопасность пода для пространства имен

Стандарты безопасности подов применяются на уровне пространства имён при их создании. Если профиль безопасности по умолчанию, заданный встроенным контроллером допуска, отличается от privileged (например, baseline или restricted), на уровне встроенного контроллера допуска профиль privileged необходимо настроить для вашего пространства имён. Ключ-АСТРОМ Operator поддерживает только политику privileged, поскольку драйвер CSI и поды ЕдиногоАгента требуют больше прав, чем позволяют baseline политики restricted.

Выполните следующую команду, чтобы задать astromkey пространство имен privileged:

kubectl label namespace astromkey pod-security.kubernetes.io/enforce=privileged pod-security.kubernetes.io/audit=privileged pod-security.kubernetes.io/warn=privileged

Режимы аудита и предупреждения

Режимы аудита и предупреждения применяются к развертыванию, DaemonSet или другим ресурсам рабочей нагрузки для выявления нарушений, даже если модуль не был создан.

Поиск неисправностей

Чтобы понять, почему поды ЕдиногоАгента могут не создаваться при ограниченной политике, используйте следующую команду.

kubectl -n astromkey describe daemonset.apps/<dynakube>-oneagent

Следующий вывод события показывает нарушение стандарта безопасности пода, препятствующее созданию пода. На этот тип вывода следует обращать внимание при диагностике проблем развертывания.

> Events:

>

> Type | Reason | Age| From| Message

> ---- |--------|---- |----|-------

> Warning|FailedCreate|15s|daemonset-controller|Error creating: pods "dynakube-oneagent-kp6sf" is forbidden: violates PodSecurity "restricted:latest": forbidden AppArmor profile (container.apparmor.security.beta.kubernetes.io/astromkey-oneagent="unconfined"), host namespaces (hostNetwork=true, hostPID=true), allowPrivilegeEscalation != false (container "astromkey-oneagent" must set securityContext.allowPrivilegeEscalation=false), unrestricted capabilities (container "astromkey-oneagent" must not include "CHOWN", "DAC_OVERRIDE", "DAC_READ_SEARCH", "FOWNER", "FSETID", "KILL", "NET_ADMIN", "NET_RAW", "SETFCAP", "SETGID", "SETUID", "SYS_ADMIN", "SYS_CHROOT", "SYS_PTRACE", "SYS_RESOURCE" in securityContext.capabilities.add), restricted volume types (volume "host-root" uses restricted volume type "hostPath"), seccompProfile (pod or container "astromkey-oneagent" must set securityContext.seccompProfile.type to "RuntimeDefault" or "Localhost")

Аналогично, чтобы проверить, почему поды драйверов CSI могут выйти из строя при тех же условиях, используйте следующую команду.

kubectl -n astromkey describe daemonset.apps/astromkey-oneagent-csi-driver
> Events:

>

> Type| Reason | Age| From| Message

> ---- |--------|---- |----| -------

> Warning|FailedCreate|25m|daemonset-controller|Error creating: pods "astromkey-oneagent-csi-driver-nh7p9" is forbidden: violates PodSecurity "restricted:latest": privileged (containers "server", "provisioner" must not set securityContext.privileged=true), allowPrivilegeEscalation != false (containers "server", "provisioner", "registrar" must set securityContext.allowPrivilegeEscalation=false), unrestricted capabilities (containers "csi-init", "server", "provisioner", "registrar", "liveness-probe" must set securityContext.capabilities.drop=["ALL"]), restricted volume types (volumes "registration-dir", "plugin-dir", "data-dir", "mountpoint-dir" use restricted volume type "hostPath"), runAsNonRoot != true (containers "csi-init", "server", "provisioner", "registrar", "liveness-probe" must not set securityContext.runAsNonRoot=false), runAsUser=0 (containers "csi-init", "server", "provisioner", "registrar", "liveness-probe" must not set runAsUser=0)