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

# Раздел 05 — Secure SDLC

**Secure SDLC** (Secure Software Development Life Cycle) — это подход, при котором безопасность встроена в каждый этап создания ПО: от идеи до вывода в production и поддержки.

## Зачем этот раздел

Большинство инцидентов начинается не с «хакера в маске», а с пропущенного требования, неучтённого сценария атаки или позднего исправления. Раздел учит думать о безопасности **до** написания кода и **до** деплоя.

## Что вы изучите

| Тема | Файл | Ключевая идея |
|------|------|---------------|
| Shift-left | [shift-left.md](shift-left.md) | Перенос проверок безопасности влево по timeline |
| Threat modeling (lite) | [threat-modeling-lite.md](threat-modeling-lite.md) | Кто, что и как может атаковать ваш сервис |
| Безопасные требования | [bezopasnye-trebovaniya.md](bezopasnye-trebovaniya.md) | Формулировка требований, которые можно проверить |
| Security code review | [security-code-review.md](security-code-review.md) | Ревью кода с фокусом на риски, а не на стиль |

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

```
shift-left → threat-modeling-lite → bezopasnye-trebovaniya → security-code-review
```

## Цель раздела

После прохождения вы сможете объяснить, **на каком этапе** какая проверка безопасности должна происходить, и составить минимальный threat model для простого веб-сервиса.

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

- Базовое понимание жизненного цикла ПО (идея → разработка → тест → деплой).
- Знакомство с CI/CD на уровне «есть pipeline, он что-то запускает» (подробнее — в других разделах курса).

## Время

| Формат | Оценка |
|--------|--------|
| Чтение всех страниц | 2–3 часа |
| Практика (упражнения в самопроверках) | 2–4 часа |

## Связь с другими разделами

| Раздел | Связь |
|--------|-------|
| [06 — Безопасность кода](../06-bezopasnost-koda/README.md) | Инструменты (SAST, SCA), которые реализуют shift-left |
| [08 — Runtime](../08-runtime-monitoring/README.md) | Мониторинг и реагирование после выхода в production |

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

- [ ] Могу назвать 4 этапа SDLC и по одной проверке безопасности на каждом.
- [ ] Понимаю разницу между «безопасным кодом» и «безопасным процессом».
- [ ] Могу описать, зачем threat model нужен до первой строки кода.

## Ключевые термины раздела

| Термин | Кратко |
|--------|--------|
| **SDLC** | Software Development Life Cycle — этапы создания ПО |
| **Shift-left** | Ранние проверки безопасности |
| **Threat model** | Модель угроз для системы |
| **Security requirement** | Проверяемое требование к безопасности |
| **Security code review** | Ревью PR с фокусом на риски |

## Практические артефакты после раздела

После прохождения у вас должны появиться (хотя бы в учебном виде):

1. **One-page threat model** для простого сервиса (диаграмма + таблица угроз).
2. **SRTM** — матрица «угроза → требование → тест» на 5–10 строк.
3. **PR security checklist** — 10 пунктов для команды.
4. **Shift-left roadmap** — что внедрить в CI за первый месяц.

## Типичные вопросы новичков

| Вопрос | Короткий ответ |
|--------|----------------|
| «Нужен ли threat model для landing page?» | Минимальный — если нет форм и данных |
| «Security review каждого PR?» | Risk-based: auth, PII, payments — да |
| «Кто пишет security requirements?» | Product + AppSec + dev вместе |
| «Shift-left заменяет pentest?» | Нет, дополняет |

## Ошибки при внедрении Secure SDLC

| Ошибка | Последствие | Что делать |
|--------|-------------|------------|
| Threat model «для галочки» | Не влияет на код | Привязать к requirements |
| Checklist из 100 пунктов | Игнорируют | Top-10 по рискам |
| Нет владельца процесса | Забросят через месяц | AppSec champion в команде |
| Только документы, без CI | Нет enforcement | Gates в pipeline |

## Материалы для углубления (вне курса)

- OWASP SAMM — зрелость AppSec программы
- OWASP ASVS — каталог verifiable requirements
- Microsoft SDL — классический secure SDLC reference
- OWASP Threat Dragon — бесплатный threat modeling tool

## Самопроверка (раздел)

- [ ] Могу нарисовать timeline SDLC и отметить, где shift-left экономит деньги.
- [ ] Есть учебный threat model с минимум 5 угрозами.
- [ ] Могу превратить угрозу T1 в measurable security requirement.

## Дальше

Начните с [shift-left.md](shift-left.md).
