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