← [Главная](../README.md)

# 10 — Инструменты DevSecOps

## Цель

Познакомиться с практическими инструментами, которые встраивают безопасность в пайплайн и runtime: CI security, сканеры, секреты, детектирование в Kubernetes.

## Предварительно

- Git, базовый Docker, понимание CI/CD (job, pipeline, artifact).
- Желательно: локальный [kind](https://kind.sigs.k8s.io/) или minikube для темы Falco (не обязательно для чтения).

## Время

~4–5 часов (чтение + опциональные команды из статей).

## Карта раздела

| Инструмент / тема | Файл | Задача |
|-------------------|------|--------|
| GitLab CI | [gitlab-ci-security.md](gitlab-ci-security.md) | SAST, секреты, policy в `.gitlab-ci.yml` |
| GitHub Actions | [github-actions-security.md](github-actions-security.md) | Workflows, permissions, OIDC |
| Trivy, Semgrep, Gitleaks | [trivy-semgrep-gitleaks.md](trivy-semgrep-gitleaks.md) | Образы, код, секреты в репо |
| HashiCorp Vault | [vault-i-sekrety.md](vault-i-sekrety.md) | Хранение и выдача секретов |
| Falco | [falco-k8s-runtime.md](falco-k8s-runtime.md) | Runtime-угрозы в K8s |

## Слои защиты (Defense in Depth)

```
Код (Semgrep, Gitleaks)
    ↓
CI/CD (GitLab/GitHub policies)
    ↓
Артефакт (Trivy image scan)
    ↓
Deploy (signed images, Vault secrets)
    ↓
Runtime (Falco, NetworkPolicy)
```

Один инструмент не заменяет остальные: Gitleaks не видит CVE в базовом образе, Trivy не ловит shell в поде в runtime.

## Как выбирать инструмент

| Критерий | Вопрос |
|----------|--------|
| Покрытие | Код, зависимости, образ, кластер? |
| Интеграция | Есть ли официальный action / template? |
| Шум | Сколько false positive на вашем стеке? |
| Политика | Можно ли fail pipeline по severity? |
| Лицензия | OSS vs enterprise-only features |

Для обучения достаточно **open-source** связки: Gitleaks + Semgrep + Trivy + Vault dev mode + Falco.

## Самопроверка

- [ ] Могу назвать, на каком этапе SDLC работает каждый инструмент из таблицы.
- [ ] Понимаю разницу между secret scanning и SAST.
- [ ] Знаю, зачем ограничивать `permissions` в GitHub Actions.

## Матрица «инструмент → артефакт для аудита»

| Инструмент | Артефакт | Срок хранения (типично) |
|------------|----------|-------------------------|
| Gitleaks | JSON/log job CI | 90 дней |
| Semgrep | SARIF / JSON | 90 дней |
| Trivy | Отчёт image/fs | До следующего релиза + архив |
| Vault | Audit log | 1 год+ |
| Falco | Alert export | 90 дней |

## Локальная песочница (один раз)

```bash
mkdir -p ~/devsecops-labs/tools-demo && cd ~/devsecops-labs/tools-demo
git init
echo 'demo_key=FAKE_ONLY' > config.txt
docker run --rm -v "$(pwd):/repo" zricethezav/gitleaks:latest detect --source /repo --redact
```

Если команда отработала — Docker и Gitleaks готовы для [практикума](../11-praktikum/README.md).

## Частые вопросы новичков

**Нужны ли все инструменты сразу?** Нет. Минимум: Gitleaks + Trivy + один CI.

**Платный Snyk vs Trivy?** Trivy достаточен для обучения; в enterprise смотрят интеграцию и SLA вендора.

**Vault обязателен?** Для курса — понять концепт; в облаке часто Secrets Manager + SOPS.

## Рекомендуемый порядок изучения

| Шаг | Файл | Действие |
|-----|------|----------|
| 1 | gitlab-ci **или** github-actions | Скопировать workflow в тестовый репо |
| 2 | trivy-semgrep-gitleaks | Прогнать `make security` локально |
| 3 | vault-i-sekrety | Поднять dev Vault, один `kv put` |
| 4 | falco-k8s-runtime | Опционально в kind |

После шага 2 переходите к [Lab 01](../11-praktikum/lab-01-secrets-v-git.md).

## Интеграция с разделом 09

Каждый инструмент из этого раздела должен оставлять след для [audit-evidence](../09-compliance/audit-evidence.md):

- имя job в CI;
- retention артефактов;
- владелец политики (кто меняет `.trivyignore`).

Без этих трёх полей инструмент «есть», а доказательства для аудита — нет.

## Дальше

Начните с вашей платформы CI: [GitLab](gitlab-ci-security.md) или [GitHub Actions](github-actions-security.md), затем [сканеры](trivy-semgrep-gitleaks.md). Практика — в [разделе 11](../11-praktikum/README.md).
