Kubernetes SecurityContext(s)

Підтримайте HackTricks

Контекст безпеки Pod

З документації:

При вказанні контексту безпеки Pod можна використовувати кілька атрибутів. З точки зору оборонної безпеки слід враховувати:

  • Мати runASNonRoot як True

  • Налаштувати runAsUser

  • Якщо можливо, розгляньте обмеження дозволів, вказавши seLinuxOptions та seccompProfile

  • НЕ надавати доступ до групи привілеїв через runAsGroup та supplementaryGroups

fsGroup ціле число

Спеціальна додаткова група, яка застосовується до всіх контейнерів у Pod. Деякі типи томів дозволяють Kubelet змінювати власника цього тому, щоб власником був сам Pod: 1. GID власника буде FSGroup 2. Встановлюється біт setgid (нові файли, створені в томі, будуть належати FSGroup) 3. Біти дозволів ОБ'ЄДНАНІ з rw-rw---- Якщо не вказано, Kubelet не буде змінювати власника та дозволи жодного тому

Це визначає поведінку зміни власності та дозволів тому перед тим, як вони будуть викладені всередині Pod.

runAsGroup ціле число

GID для запуску точки входу процесу контейнера. Використовується за замовчуванням під час відсутності встановлення. Може бути також встановлено в SecurityContext.

runAsNonRoot логічний

Вказує, що контейнер повинен працювати в якості користувача, що не є root. Якщо true, Kubelet перевірить зображення під час виконання, щоб переконатися, що воно не працює як UID 0 (root), і не запустить контейнер, якщо це так.

runAsUser ціле число

UID для запуску точки входу процесу контейнера. За замовчуванням використовується користувач, вказаний в метаданих зображення, якщо не вказано.

seLinuxOptions SELinuxOptions Додаткова інформація про seLinux

Контекст SELinux, який застосовується до всіх контейнерів. Якщо не вказано, контейнерний середовище виділить випадковий контекст SELinux для кожного контейнера.

seccompProfile SeccompProfile Додаткова інформація про Seccomp

Параметри seccomp, які використовуються контейнерами у цьому Pod.

supplementalGroups масив цілих чисел

Список груп, які застосовуються до першого процесу, який запускається в кожному контейнері, крім основного GID контейнера.

sysctls Sysctl масив Додаткова інформація про sysctls

Sysctls містять список просторово-обмежених sysctls, використовуваних для Pod. Поди з непідтриманими sysctls (контейнерним середовищем) можуть не запускатися.

Налаштування, специфічні для Windows, які застосовуються до всіх контейнерів. Якщо не вказано, будуть використані параметри всередині SecurityContext контейнера.

## Контекст безпеки

З документації:

Цей контекст встановлюється всередині визначень контейнерів. З точки зору оборонної безпеки варто враховувати:

  • allowPrivilegeEscalation на False

  • Не додавайте чутливі capabilities (і видаліть ті, які вам не потрібні)

  • privileged на False

  • Якщо можливо, встановіть readOnlyFilesystem як True

  • Встановіть runAsNonRoot на True і вкажіть runAsUser

  • Якщо можливо, розгляньте обмеження дозволів, вказавши seLinuxOptions та seccompProfile

  • НЕ надавайте доступ до групи привілеїв через runAsGroup.

Зверніть увагу, що атрибути, встановлені в SecurityContext та PodSecurityContext, значення, вказане в SecurityContext, має перевагу.

AllowPrivilegeEscalation контролює, чи може процес отримати більше привілеїв, ніж його батьківський процес. Цей булевий тип безпосередньо контролює, чи буде встановлено прапор no_new_privs для процесу контейнера. AllowPrivilegeEscalation завжди true, коли контейнер запускається як Privileged або має CAP_SYS_ADMIN

capabilities Capabilities More info about Capabilities

Capabilities для додавання/вилучення при запуску контейнерів. За замовчуванням використовується стандартний набір можливостей.

privileged boolean

Запуск контейнера в привілейованому режимі. Процеси в привілейованих контейнерах фактично еквівалентні root на хості. За замовчуванням - false.

procMount string

procMount вказує тип пристрою proc, який слід використовувати для контейнерів. За замовчуванням використовується DefaultProcMount, який використовує стандартні параметри читання-лише шляхів та маскованих шляхів контейнера.

Чи має цей контейнер файлову систему кореня тільки для читання. За замовчуванням - false.

runAsGroup integer

GID для запуску точки входу процесу контейнера. Використовує стандартні параметри виконання, якщо не вказано.

runAsNonRoot boolean

Вказує, що контейнер має працювати в якості користувача, що не є root. Якщо true, Kubelet перевірить зображення під час виконання, щоб переконатися, що воно не працює як UID 0 (root), і не запустить контейнер, якщо це так.

runAsUser integer

UID для запуску точки входу процесу контейнера. За замовчуванням використовується користувач, вказаний в метаданих зображення, якщо не вказано.

seLinuxOptions SELinuxOptions More info about seLinux

Контекст SELinux, який слід застосовувати до контейнера. Якщо не вказано, контейнерний середовищний час виконання виділить випадковий контекст SELinux для кожного контейнера.

Параметри seccomp, які слід використовувати цим контейнером.

Налаштування, специфічні для Windows, які застосовуються до всіх контейнерів.

Посилання

Підтримайте HackTricks

Last updated