Застосування Стандартів безпеки Pod на рівні простору імен
Примітка
Цей посібник застосовується лише для нових кластерів.Pod Security Admission — це контролер допуску, який застосовує Стандарти безпеки Pod при створенні Podʼів. Це функція, яка є загально доступною з v1.25. У цьому посібнику ви будете застосовувати Стандарт безпеки Pod baseline, по одному простору імен за раз.
Ви також можете застосовувати Стандарти безпеки Pod до кількох просторів імен одночасно на рівні кластера. Щоб дізнатися більше, перейдіть за посиланням Застосування Стандартів безпеки Pod на рівні кластера.
Перш ніж ви розпочнете
Встановіть на ваш компʼютер наступне:
Створення кластера
Створіть кластер
kindнаступним чином:kind create cluster --name psa-ns-levelВивід буде подібний до цього:
Creating cluster "psa-ns-level" ... ✓ Ensuring node image (kindest/node:v1.35.0) 🖼 ✓ Preparing nodes 📦 ✓ Writing configuration 📜 ✓ Starting control-plane 🕹️ ✓ Installing CNI 🔌 ✓ Installing StorageClass 💾 Set kubectl context to "kind-psa-ns-level" You can now use your cluster with: kubectl cluster-info --context kind-psa-ns-level Not sure what to do next? 😅 Check out https://kind.sigs.k8s.io/docs/user/quick-start/Встановіть контекст kubectl для нового кластера:
kubectl cluster-info --context kind-psa-ns-levelВивід буде подібний до цього:
Kubernetes control plane is running at https://127.0.0.1:50996 CoreDNS is running at https://127.0.0.1:50996/api/v1/namespaces/kube-system/services/kube-dns:dns/proxy To further debug and diagnose cluster problems, use 'kubectl cluster-info dump'.
Створення простору імен
Створіть новий простір імен з назвою example:
kubectl create ns example
Вивід буде подібний до цього:
namespace/example created
Увімкнення перевірки Стандартів безпеки Pod для цього простору імен
Увімкніть Стандарти безпеки Pod на цьому просторі імен за допомогою підтримуваних міток, вбудованих в Pod Security Admission. На цьому кроці ви налаштуєте перевірку, щоб система попереджувала про Podʼи, які не відповідають останньої версії стандарту безпеки підсистеми baseline.
kubectl label --overwrite ns example \ pod-security.kubernetes.io/warn=baseline \ pod-security.kubernetes.io/warn-version=latestВи можете налаштувати кілька перевірок стандартів безпеки Podʼів для будь-якого простору імен за допомогою міток. Наступна команда буде застосовувати стандарт безпеки Pod
baseline, алеwarnтаauditдля стандартів безпеки Podrestrictedзгідно з останньою версією (стандартне значення)kubectl label --overwrite ns example \ pod-security.kubernetes.io/enforce=baseline \ pod-security.kubernetes.io/enforce-version=latest \ pod-security.kubernetes.io/warn=restricted \ pod-security.kubernetes.io/warn-version=latest \ pod-security.kubernetes.io/audit=restricted \ pod-security.kubernetes.io/audit-version=latest
Перевірте дотримання стандарту безпеки Podʼів
Створіть Pod з базовим стандартом в просторі імен
example:kubectl apply -n example -f https://k8s.io/examples/security/example-baseline-pod.yamlPod дійсно запускається; вивід містить попередження. Наприклад:
Warning: would violate PodSecurity "restricted:latest": allowPrivilegeEscalation != false (container "nginx" must set securityContext.allowPrivilegeEscalation=false), unrestricted capabilities (container "nginx" must set securityContext.capabilities.drop=["ALL"]), runAsNonRoot != true (pod or container "nginx" must set securityContext.runAsNonRoot=true), seccompProfile (pod or container "nginx" must set securityContext.seccompProfile.type to "RuntimeDefault" or "Localhost") pod/nginx createdСтворіть Pod з базовим стандартом у просторі імен
default:kubectl apply -n default -f https://k8s.io/examples/security/example-baseline-pod.yamlВивід буде подібний до такого:
pod/nginx створено
Виконання стандартів безпеки Podʼів та налаштування попереджень було застосовано лише до простору імен example. Ви можете створити такий самий Pod в просторі імен default без будь-яких попереджень.
Очищення
Тепер видаліть кластер, який було створено:
kind delete cluster --name psa-ns-level
Що далі
Виконайте скрипт для виконання всіх попередніх кроків одночасно.
- Створіть кластер kind.
- Створіть новий простір імен.
- Застосуйте стандарт безпеки підсистеми
baselineв режиміenforce, при цьому застосовуючи стандарт безпеки підсистемиrestrictedтакож у режиміwarnтаaudit. - Створіть новий Pod з застосованими стандартами безпеки Podʼів.