Kubernetes SecurityContext(s)
Reading time: 8 minutes
tip
Вивчайте та практикуйте AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Вивчайте та практикуйте GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Вивчайте та практикуйте Azure Hacking:
HackTricks Training Azure Red Team Expert (AzRTE)
Підтримка HackTricks
- Перевірте плани підписки!
- Приєднуйтесь до 💬 групи Discord або групи Telegram або слідкуйте за нами в Twitter 🐦 @hacktricks_live.
- Діліться хакерськими трюками, надсилаючи PR до HackTricks та HackTricks Cloud репозиторіїв на GitHub.
PodSecurityContext
При вказуванні контексту безпеки 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
рядок
runAsGroup
ціле число
runAsNonRoot
логічне значення
runAsUser
ціле число
seLinuxOptions
SELinuxOptions
Більше інформації про seLinux
seccompProfile
SeccompProfile
Більше інформації про Seccomp
supplementalGroups
масив цілих чисел
sysctls
Sysctl масив
Більше інформації про sysctls
windowsOptions
WindowsSecurityContextOptions
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 | Можливості, які потрібно додати/видалити при запуску контейнерів. За замовчуванням - набір можливостей за замовчуванням. |
privileged | Запустіть контейнер у привілейованому режимі. Процеси в привілейованих контейнерах фактично є еквівалентом root на хості. За замовчуванням - false. |
procMount | procMount позначає тип монтування proc, який потрібно використовувати для контейнерів. За замовчуванням - DefaultProcMount, який використовує значення за замовчуванням контейнерного виконувального середовища для шляхів тільки для читання та маскованих шляхів. |
readOnlyRootFilesystem | Чи має цей контейнер файлову систему кореня тільки для читання. За замовчуванням - false. |
runAsGroup | GID для запуску точки входу процесу контейнера. Використовує значення за замовчуванням, якщо не встановлено. |
runAsNonRoot | Вказує, що контейнер повинен працювати як не-root користувач. Якщо true, Kubelet перевірить зображення під час виконання, щоб переконатися, що воно не працює як UID 0 (root) і не зможе запустити контейнер, якщо це так. |
runAsUser | UID для запуску точки входу процесу контейнера. За замовчуванням - користувач, вказаний у метаданих зображення, якщо не вказано. |
seLinuxOptions | Контекст SELinux, який буде застосовано до контейнера. Якщо не вказано, контейнерний виконувальний середовище виділить випадковий контекст SELinux для кожного контейнера. |
Опції seccomp, які використовуються цим контейнером. | |
Специфічні для Windows налаштування, які застосовуються до всіх контейнерів. |
References
- https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.23/#podsecuritycontext-v1-core
- https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.23/#securitycontext-v1-core
tip
Вивчайте та практикуйте AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Вивчайте та практикуйте GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Вивчайте та практикуйте Azure Hacking:
HackTricks Training Azure Red Team Expert (AzRTE)
Підтримка HackTricks
- Перевірте плани підписки!
- Приєднуйтесь до 💬 групи Discord або групи Telegram або слідкуйте за нами в Twitter 🐦 @hacktricks_live.
- Діліться хакерськими трюками, надсилаючи PR до HackTricks та HackTricks Cloud репозиторіїв на GitHub.