init
This commit is contained in:
75
02-validation/02-security/README.md
Normal file
75
02-validation/02-security/README.md
Normal file
@@ -0,0 +1,75 @@
|
||||
# Урок 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
|
||||
```
|
||||
Reference in New Issue
Block a user