← [Раздел 05](README.md) · [Главная](../README.md)

# Shift-left: безопасность с самого начала

## Цель

Понять, что такое **shift-left** в DevSecOps, почему «проверять в конце» дороже и опаснее, и какие практики переносят безопасность на ранние этапы без блокировки команды.

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

- Прочитали [README раздела 05](README.md).
- Представляете, что такое CI/CD pipeline (цепочка автоматических шагов при изменении кода).

## Время

~25 минут чтения + 20 минут упражнения

---

## Что такое shift-left

**Shift-left** — перенос проверок безопасности **влево** по временной шкале проекта: от production и pre-release к design, разработке и commit.

```
Без shift-left:  [Design] [Code] [Test] [Deploy] ──► 🔒 Security audit (дорого, поздно)

С shift-left:    [Design🔒] [Code🔒] [Test🔒] [Deploy🔒] ──► меньше сюрпризов
```

**Аналогия:** проверять качество детали на заводе дешевле, чем отзывать всю партию автомобилей.

## Почему «в конце» не работает

| Проблема | Последствие |
|----------|-------------|
| Уязвимость найдена за день до релиза | Давление «выпустить любой ценой» |
| Архитектурный дефект | Переделка месяцами, не патчем |
| Нет автоматизации | Security-отдел — узкое горлышко |
| Нет требований | Разработчики не знают, что проверять |

**Cost of fix** (условно): ошибка на этапе design ×1 → в production ×100 и выше (инцидент, репутация, штрафы).

## Что переносим влево

| Этап | Практики shift-left |
|------|---------------------|
| **Design / Requirements** | Threat modeling, security user stories, NFR (non-functional requirements) |
| **Development** | Secure coding guidelines, pre-commit hooks, IDE-подсказки |
| **Commit / PR** | SAST, secrets scanning, dependency check (SCA), security code review |
| **CI** | Quality gates: блок merge при critical findings |
| **Pre-deploy** | DAST на staging, container/image scan |
| **Production** | Runtime monitoring, WAF — это **не** shift-left, а последний рубеж |

Подробнее об инструментах — в [разделе 06](../06-bezopasnost-koda/README.md).

## Shift-left ≠ «всё на разработчиков»

Частое заблуждение: «shift-left значит, security больше не нужен».

| Роль | Что делает при shift-left |
|------|---------------------------|
| **Security / AppSec** | Шаблоны threat model, политики, обучение, triage алертов |
| **Разработка** | Следует гайдам, исправляет findings в своём коде |
| **DevOps / Platform** | Встраивает сканеры в pipeline, даёт безопасные defaults |
| **Product** | Приоритизирует security stories наравне с фичами |

## Минимальный shift-left для маленькой команды

Чеклист «с чего начать за неделю»:

- [ ] Secrets scanning в CI (GitLeaks, TruffleHog и аналоги)
- [ ] SCA: проверка зависимостей при каждом PR
- [ ] 5–10 security checklist пунктов в PR template
- [ ] Один threat modeling workshop на ключевой сервис
- [ ] Политика: critical/high findings блокируют merge

## Антипаттерны

| Антипаттерн | Почему плохо |
|-------------|--------------|
| «Security sprint перед релизом» | Не масштабируется, создаёт конфликт |
| Тысячи алертов без triage | Разработчики игнорируют всё |
| Shift-left без обучения | Ложное чувство безопасности |
| Блокировка без SLA на исправление | Pipeline всегда красный → обходят правила |

## Пример: одна user story

**Без shift-left:** «Сделать форму входа» → релиз → pentest нашёл отсутствие rate limit.

**С shift-left:**

1. **Requirements:** «Не более 5 попыток входа в минуту с одного IP» (см. [bezopasnye-trebovaniya.md](bezopasnye-trebovaniya.md))
2. **Threat model:** brute force на `/login` (см. [threat-modeling-lite.md](threat-modeling-lite.md))
3. **Code review:** проверить middleware rate limit
4. **CI:** DAST проверяет 429 после N запросов

## Метрики shift-left (для менеджмента)

| Метрика | Что показывает |
|---------|----------------|
| % PR с security scan | Adoption |
| Mean time to fix (critical) | Эффективность процесса |
| Findings на этапе design vs production | Реальный «shift» |
| Repeat findings (те же CWE) | Качество обучения |

---

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

1. Объясните shift-left коллеге без IT-бэкграунда одним предложением.
2. Назовите три проверки, которые логично запускать в CI, а не раз в год.
3. Почему runtime WAF не заменяет SAST?
4. Составьте мини-чеклист из 5 пунктов для PR вашего (воображаемого) проекта.

## Связь shift-left с compliance

Аудиторы часто спрашивают: «Как вы обеспечиваете безопасность **до** production?»

| Evidence shift-left | Где хранить |
|---------------------|-------------|
| Threat model на релиз | Wiki / repo `docs/security/` |
| PR с security checklist | GitHub PR template |
| CI scan reports | SARIF, pipeline artifacts |
| Exception tickets | Jira с expiry date |

Документированный процесс важнее дорогих инструментов на старте.

## Дальше

[Threat modeling (lite)](threat-modeling-lite.md) — учимся находить угрозы до кода.
