Забезпечення стандартів безпеки Podʼів за допомогою міток простору імен
Простори імен можуть бути позначені, щоб забезпечити стандарти безпеки Podʼів. Три політики privileged, baseline та restricted широко охоплюють спектр безпеки та реалізуються за допомогою контролера допуску безпеки Podʼа.
Перш ніж ви розпочнете
Pod Security Admission був доступний в Kubernetes v1.23, у вигляді бета. Починаючи з версії 1.25, Pod Security Admission доступний загалом.
Для перевірки версії введіть kubectl version
.
Вимога стандарту безпеки Pod baseline
за допомогою міток простору імен
Цей маніфест визначає Простір імен my-baseline-namespace
, який:
- Блокує будь-які Podʼи, які не відповідають вимогам політики
baseline
. - Генерує попередження для користувача та додає анотацію аудиту до будь-якого створеного Podʼа, який не відповідає вимогам політики
restricted
. - Фіксує версії політик
baseline
таrestricted
на v1.32.
apiVersion: v1
kind: Namespace
metadata:
name: my-baseline-namespace
labels:
pod-security.kubernetes.io/enforce: baseline
pod-security.kubernetes.io/enforce-version: v1.32
# Ми встановлюємо ці рівні за нашим _бажаним_ `enforce` рівнем.
pod-security.kubernetes.io/audit: restricted
pod-security.kubernetes.io/audit-version: v1.32
pod-security.kubernetes.io/warn: restricted
pod-security.kubernetes.io/warn-version: v1.32
Додавання міток до наявних просторів імен за допомогою kubectl label
Примітка:
Коли мітка політикиenforce
(або версії) додається або змінюється, втулок допуску буде тестувати кожен Pod в просторі імен на відповідність новій політиці. Порушення повертаються користувачу у вигляді попереджень.Корисно застосувати прапорець --dry-run
при початковому оцінюванні змін профілю безпеки для просторів імен. Перевірки стандарту безпеки Pod все ще будуть виконуватися в режимі dry run, що дозволяє отримати інформацію про те, як нова політика буде обробляти наявні Podʼи, без фактичного оновлення політики.
kubectl label --dry-run=server --overwrite ns --all \
pod-security.kubernetes.io/enforce=baseline
Застосування до всіх просторів імен
Якщо ви тільки починаєте зі Pod Security Standards, відповідний перший крок — налаштувати всі простори імен з анотаціями аудиту для строгого рівня, такого як baseline
:
kubectl label --overwrite ns --all \
pod-security.kubernetes.io/audit=baseline \
pod-security.kubernetes.io/warn=baseline
Зверніть увагу, що це не встановлює рівень примусового виконання, щоб можна було відрізняти простори імен, для яких не було явно встановлено рівень примусового виконання. Ви можете перелічити простори імен без явно встановленого рівня примусового виконання за допомогою цієї команди:
kubectl get namespaces --selector='!pod-security.kubernetes.io/enforce'
Застосування до конкретного простору імен
Ви також можете оновити конкретний простір імен. Ця команда додає політику enforce=restricted
до простору імен my-existing-namespace
, закріплюючи версію обмеженої політики на v1.32.
kubectl label --overwrite ns my-existing-namespace \
pod-security.kubernetes.io/enforce=restricted \
pod-security.kubernetes.io/enforce-version=v1.32