# Урок 2.2 — Политики безопасности и соответствия стандартам ## Файлы | Файл | PSS профиль | Описание | |------|-------------|----------| | `disallow-privileged-containers.yaml` | Baseline | Запрет `privileged: true` | | `disallow-dangerous-capabilities.yaml` | Baseline | Запрет опасных capabilities | | `require-drop-all-capabilities.yaml` | Restricted | Обязательный `drop: [ALL]` | | `require-run-as-non-root.yaml` | Restricted | Запрет запуска от root | | `disallow-host-namespaces.yaml` | Baseline | Запрет hostNetwork/PID/IPC/Path | | `require-seccomp-profile.yaml` | Restricted | Обязательный seccomp | | `restrict-automount-sa-token.yaml` | CIS | Отключение автомонтирования токена | ## Стратегия внедрения (поэтапно) ### Этап 1 — Аудит (неделя 1–2) ```bash # Применить все политики в режиме Audit for f in *.yaml; do kubectl apply -f "$f" done # Подождать 5 минут для background scan, затем: kubectl get policyreports -A -o json | \ jq -r '[.items[].results[] | select(.result == "fail") | .policy] | group_by(.) | map({policy: .[0], count: length}) | sort_by(-.count)[] | "\(.count)\t\(.policy)"' ``` ### Этап 2 — Оценка нарушений ```bash # Детали нарушений по конкретной политике POLICY="disallow-privileged-containers" kubectl get policyreports -A -o json | \ jq --arg p "$POLICY" \ -r '.items[] | .metadata.namespace as $ns | .results[] | select(.policy == $p and .result == "fail") | "\($ns)/\(.resources[0].name): \(.message)"' ``` ### Этап 3 — Тестирование через Kyverno CLI ```bash # Проверить под с нарушениями kyverno apply . \ --resource test-resources/pod-insecure.yaml \ --table # Проверить корректный под kyverno apply . \ --resource test-resources/pod-secure.yaml \ --table ``` ### Этап 4 — Перевод в Enforce ```bash # По одной политике kubectl patch clusterpolicy disallow-privileged-containers \ --type merge \ -p '{"spec":{"validationFailureAction":"Enforce"}}' ``` ## Тестовые ресурсы ```bash # Под с нарушениями (должен быть отклонён) kubectl apply -f test-resources/pod-insecure.yaml # Безопасный под (должен пройти) kubectl apply -f test-resources/pod-secure.yaml ```