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