Files
kyverno-2026-example/02-validation/02-security/README.md
2026-04-08 20:22:14 +07:00

76 lines
2.6 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Урок 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 — Аудит (неделя 12)
```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
```