Kubernetes SecurityContext(s)
Контекст безпеки Pod
При вказанні контексту безпеки Pod можна використовувати кілька атрибутів. З точки зору оборонної безпеки слід враховувати:
Мати runASNonRoot як True
Налаштувати runAsUser
Якщо можливо, розгляньте обмеження дозволів, вказавши seLinuxOptions та seccompProfile
НЕ надавати доступ до групи привілеїв через runAsGroup та supplementaryGroups
fsGroup ціле число | Спеціальна додаткова група, яка застосовується до всіх контейнерів у Pod. Деякі типи томів дозволяють Kubelet змінювати власника цього тому, щоб власником був сам Pod: 1. GID власника буде FSGroup 2. Встановлюється біт setgid (нові файли, створені в томі, будуть належати FSGroup) 3. Біти дозволів ОБ'ЄДНАНІ з rw-rw---- Якщо не вказано, Kubelet не буде змінювати власника та дозволи жодного тому |
fsGroupChangePolicy рядок | Це визначає поведінку зміни власності та дозволів тому перед тим, як вони будуть викладені всередині 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 містять список просторово-обмежених sysctls, використовуваних для Pod. Поди з непідтриманими sysctls (контейнерним середовищем) можуть не запускатися. | |
Налаштування, специфічні для Windows, які застосовуються до всіх контейнерів. Якщо не вказано, будуть використані параметри всередині SecurityContext контейнера. | |
## Контекст безпеки |
Цей контекст встановлюється всередині визначень контейнерів. З точки зору оборонної безпеки варто враховувати:
allowPrivilegeEscalation на False
Не додавайте чутливі capabilities (і видаліть ті, які вам не потрібні)
privileged на False
Якщо можливо, встановіть readOnlyFilesystem як True
Встановіть runAsNonRoot на True і вкажіть runAsUser
Якщо можливо, розгляньте обмеження дозволів, вказавши seLinuxOptions та seccompProfile
НЕ надавайте доступ до групи привілеїв через runAsGroup.
Зверніть увагу, що атрибути, встановлені в SecurityContext та PodSecurityContext, значення, вказане в SecurityContext, має перевагу.
allowPrivilegeEscalation boolean | 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, який використовує стандартні параметри читання-лише шляхів та маскованих шляхів контейнера. |
readOnlyRootFilesystem boolean | Чи має цей контейнер файлову систему кореня тільки для читання. За замовчуванням - 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, які застосовуються до всіх контейнерів. |
Посилання
Last updated