76 lines
2.6 KiB
Markdown
76 lines
2.6 KiB
Markdown
# Урок 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
|
|
```
|