Kubernetes SecurityContext(s)
Last updated
Last updated
Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Коли ви вказуєте контекст безпеки Pod, ви можете використовувати кілька атрибутів. З точки зору оборонної безпеки, ви повинні врахувати:
Мати runASNonRoot як True
Налаштувати runAsUser
Якщо можливо, розгляньте можливість обмеження дозволів, вказуючи seLinuxOptions та seccompProfile
НЕ надавайте доступ до привілейованої групи через runAsGroup та supplementaryGroups
fsGroup ціле число
Спеціальна додаткова група, яка застосовується до всіх контейнерів у pod. Деякі типи томів дозволяють Kubelet змінювати власність цього тому, щоб він належав pod: 1. Власний GID буде FSGroup 2. Біт setgid встановлений (нові файли, створені в томі, будуть належати FSGroup) 3. Біт дозволів OR'd з rw-rw---- Якщо не встановлено, Kubelet не змінюватиме власність і дозволи жодного тому
fsGroupChangePolicy рядок
Це визначає поведінку зміни власності та дозволів тому перед його відкриттям всередині Pod.
runAsGroup ціле число
GID для запуску точки входу процесу контейнера. Використовує значення за замовчуванням часу виконання, якщо не встановлено.
runAsNonRoot логічне
Вказує, що контейнер повинен працювати як не-root користувач. Якщо true, Kubelet перевірить зображення під час виконання, щоб переконатися, що воно не працює як UID 0 (root) і не зможе запустити контейнер, якщо це так.
runAsUser ціле число
UID для запуску точки входу процесу контейнера. За замовчуванням - користувач, вказаний у метаданих зображення, якщо не вказано.
seLinuxOptions SELinuxOptions Більше інформації про seLinux
Контекст SELinux, який буде застосовано до всіх контейнерів. Якщо не вказано, контейнерний час виконання виділить випадковий контекст SELinux для кожного контейнера.
seccompProfile SeccompProfile Більше інформації про Seccomp
Опції seccomp, які використовуються контейнерами в цьому pod.
supplementalGroups масив цілих чисел
Список груп, які застосовуються до першого процесу, запущеного в кожному контейнері, на додаток до основного GID контейнера.
Sysctls містять список namespaced sysctls, які використовуються для pod. Pods з несумісними sysctls (за версією контейнерного часу виконання) можуть не запуститися.
Специфічні для Windows налаштування, які застосовуються до всіх контейнерів. Якщо не вказано, будуть використані параметри в SecurityContext контейнера.
Цей контекст встановлюється всередині визначень контейнерів. З точки зору оборонної безпеки, ви повинні врахувати:
allowPrivilegeEscalation як False
Не додавайте чутливі можливості (і видаліть ті, які вам не потрібні)
привілейований як False
Якщо можливо, встановіть readOnlyFilesystem як True
Встановіть runAsNonRoot як True і задайте runAsUser
Якщо можливо, розгляньте можливість обмеження дозволів, вказуючи seLinuxOptions та seccompProfile
НЕ надавайте доступ до привілейованої групи через runAsGroup.
Зверніть увагу, що атрибути, встановлені в обох SecurityContext і PodSecurityContext, значення, вказане в SecurityContext, має пріоритет.
allowPrivilegeEscalation логічне
AllowPrivilegeEscalation контролює, чи може процес отримати більше привілеїв, ніж його батьківський процес. Цей булевий параметр безпосередньо контролює, чи буде встановлено прапор no_new_privs на процес контейнера. AllowPrivilegeEscalation завжди true, коли контейнер запускається як Privileged або має CAP_SYS_ADMIN
capabilities Capabilities Більше інформації про Capabilities
Можливості, які потрібно додати/видалити при запуску контейнерів. За замовчуванням - набір можливостей за замовчуванням.
privileged логічне
Запустіть контейнер у привілейованому режимі. Процеси в привілейованих контейнерах фактично еквівалентні root на хості. За замовчуванням - false.
procMount рядок
procMount позначає тип монту proc, який потрібно використовувати для контейнерів. За замовчуванням - DefaultProcMount, який використовує значення за замовчуванням контейнерного часу виконання для шляхів тільки для читання та маскованих шляхів.
readOnlyRootFilesystem логічне
Чи має цей контейнер файлову систему кореня тільки для читання. За замовчуванням - false.
runAsGroup ціле число
GID для запуску точки входу процесу контейнера. Використовує значення за замовчуванням часу виконання, якщо не встановлено.
runAsNonRoot логічне
Вказує, що контейнер повинен працювати як не-root користувач. Якщо true, Kubelet перевірить зображення під час виконання, щоб переконатися, що воно не працює як UID 0 (root) і не зможе запустити контейнер, якщо це так.
runAsUser ціле число
UID для запуску точки входу процесу контейнера. За замовчуванням - користувач, вказаний у метаданих зображення, якщо не вказано.
seLinuxOptions SELinuxOptions Більше інформації про seLinux
Контекст SELinux, який буде застосовано до контейнера. Якщо не вказано, контейнерний час виконання виділить випадковий контекст SELinux для кожного контейнера.
Опції seccomp, які використовуються цим контейнером.
Специфічні для Windows налаштування, які застосовуються до всіх контейнерів.
Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)