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

# Портфолио и pet-проекты

## Цель

Собрать **портфолио**, которое доказывает навыки DevSecOps работодателю: публичный код, CI с security gates, документация и измеримые результаты — не просто «сертификат в PDF».

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

- GitHub/GitLab аккаунт.
- Пройден [практикум](../11-praktikum/README.md).

## Время

~45 минут планирования + 20–40 часов на один сильный проект.

## Что смотрят hiring manager

| Сигнал | Слабо | Сильно |
|--------|-------|--------|
| Репозиторий | Пустой README | Architecture diagram + runbooks |
| CI | Нет | Gitleaks + Semgrep + Trivy с badges |
| Секреты | `.env` в истории | Vault / SOPS + gitleaks green |
| K8s | docker-compose only | kind + NetworkPolicy + RBAC yaml |
| Инциденты | Нет | Post-mortem шаблон из Lab 04 |

## Три проекта уровня Pro

### Проект A — «Secure Microshop» (рекомендуется)

Мини-интернет-магазин (статика + API) с полным пайплайном.

**Стек:** GitHub Actions, Docker, kind, Trivy, Gitleaks, optional Vault.

**Deliverables:**

1. `/.github/workflows/security.yml` — fail on Critical.
2. `k8s/` — Namespace, Deployment, NetworkPolicy, Role.
3. `docs/THREAT_MODEL.md` — STRIDE на 1 страницу.
4. `docs/incidents/INC-001-tabletop.md` — из Lab 04.

**Метрика для README:** «Critical CVE in release image: 0 (Trivy)».

### Проект B — «Policy-as-Code Pack»

Набор OPA/Kyverno политик:

- запрет `latest` tag;
- обязательный `runAsNonRoot`;
- запрет `hostPath`.

Плюс тесты conftest на примерах YAML.

### Проект C — «Supply Chain Mini»

Репо с:

- SBOM generation (Trivy spdx);
- cosign sign в CI (self-managed key);
- verify перед deploy job.

Подходит для демонстрации **software supply chain** тренда.

## Структура README портфолио-репо

```markdown
# secure-microshop

## Problem
Учебный магазин с типичными ошибками junior DevOps — исправлены по модели DevSecOps.

## Security controls
| Control | Implementation |
|---------|------------------|
| Secret scan | Gitleaks in CI |
| SAST | Semgrep p/ci |
| Image scan | Trivy CRITICAL gate |
| Runtime | Falco helm (optional) |

## Demo
- Pipeline: [link to public Actions run]
- Screenshots: /docs/images/

## How to run locally
make kind-up && make deploy && make security

## Author
@yourhandle — DevSecOps learner, CKA (in progress)
```

## Badges (опционально)

```markdown
![gitleaks](https://img.shields.io/badge/gitleaks-passed-green)
![trivy](https://img.shields.io/badge/trivy-0_critical-green)
```

Только если **правда** зелёные на `main`.

## Чего избегать

1. **Fork без изменений** популярного репо — не видно вашего вклада.
2. **Случайные CVE** без фикса — лучше меньше фич, но чистый scan.
3. **Licensed tools** без trial — опишите OSS альтернативу.
4. **Production credentials** даже «старые».

## Публикация write-up

Формат статьи (Medium, Habr, personal blog):

1. Контекст и цель (200 слов).
2. Архитектура (диаграмма).
3. Одна ошибка и как исправили (story).
4. Ссылка на GitHub.

Связывает с [audit-evidence](../09-compliance/audit-evidence.md) — показывает коммуникацию.

## Чеклист перед ссылкой в резюме

- [ ] `gitleaks detect` clean на публичном clone.
- [ ] Dependabot / renovate включён.
- [ ] LICENSE файл (MIT/Apache-2.0).
- [ ] Нет PII в тестовых данных.
- [ ] CI зелёный на main за последние 7 дней.

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

1. Какой один проект лучше всего доказывает DevSecOps, а не pure DevOps?
2. Зачем THREAT_MODEL в pet-проекте?
3. Что hiring manager увидит в первые 30 секунд на GitHub?
4. Как превратить Lab 03 в коммит в портфолио?

## Дальше

[Вопросы на интервью](intervyu-voprosy.md)
