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
|
||
```
|