Kubernetes SecurityContext(s)

Вивчайте хакінг AWS від нуля до героя з htARTE (HackTricks AWS Red Team Expert)!

Інші способи підтримки 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, який слід використовувати для контейнерів. За замовчуванням використовуються стандартні значення контейнерного середовища для шляхів, доступних тільки для читання, та замаскованих шляхів.

Чи має цей контейнер файлову систему кореня тільки для читання. За замовчуванням - 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, які застосовуються до всіх контейнерів.

Посилання

Вивчайте хакінг AWS від нуля до героя з htARTE (HackTricks AWS Red Team Expert)!

Інші способи підтримки HackTricks:

Last updated