Практический курс по прикладной безопасности приложений: от Git до полноценного DevSecOps-конвейера.
Что изучаем:
- Инфраструктура:
Git,CI/CD,Docker,Docker Compose,GitHub Actions,YAML - Языки:
Python,Shell(JavaиGo— в контексте SCA и анализа зависимостей) - AppSec инструменты:
Semgrep,Checkov,OWASP Dependency-Check,Trivy,OWASP ZAP,Gitleaks - Стандарты: OWASP Top 10, CIS Benchmarks, CVSS, ISO 27005
- Анализ рисков: оценка, приоритизация, стратегии снижения рисков ИБ
Как устроен курс:
- 10 лабораторных работ + итоговый pet-project
- Каждая лабораторная — отдельный репозиторий с исходным кодом и отчётом в формате
gistup - Все работы выполняются в ветке
develop→pull request→ approve от geminishkv - Прогрессия:
Git→Linux→Nmap→Docker→CIS Benchmark→SAST/SCA→DAST→Secret Detection→CI/CD→Risk Analysis
Замечания:
- Лабораторные обязательны для всех — вне зависимости от уровня подготовки
- Каждая работа разбивается на атомарные коммиты для трекинга изменений
- Отчёт сдаётся индивидуально с защитой: каждая команда — с описанием флагов и выводом из терминала
- В отчётах — вывод из консоли, не скриншоты
- Часть инструментов требует установки дополнительных
open-sourceпакетов
- Выполнить подготовительные инструкции:
- Подготовка рабочего окружения — VirtualBox, установка Linux
- Настройка Git, GPG и GitHub CLI — git config, SSH, GnuPG, gh
- Оформление отчётов Gistup — формат, структура, правила
- Каждый репозиторий должен содержать
.gitignore,CODE_OF_CONDUCT,CONTRIBUTING,LICENSE,NOTICE,SECURITY - Выполнить лабораторные работы по порядку:
- lab01 — GitSCM — подготовка рабочего окружения
- lab02 — *nix — права доступа, SUID, ACL, процессы
- lab03 — Nmap — сканирование сети, NSE и защита результатов
- lab04 — Анализ и определение мер снижения рисков ИБ
- lab05 — Docker — контейнеризация приложений
- lab06 — Docker CIS Benchmark и Trivy
- lab07 — SAST, SCA и Secret Detection
- lab08 — DAST — OWASP ZAP и ручное тестирование
- lab09 — DevSecOps CI/CD конвейер на GitHub Actions
- lab10 — Оценка анализа рисков ИБ — практика
- Реализовать итоговую работу:
- pet_project — Индивидуальный проект: полный стек AppSec/DevSecOps
flowchart TD
subgraph Intro["Подготовка"]
I01["VirtualBox & Linux"]
I02["Git, GPG, SSH, gh"]
I03["Gistup отчёты"]
end
subgraph Foundations["Основы"]
L01["Lab 01 · Git SCM"]
L02["Lab 02 · Linux, SUID, ACL"]
L03["Lab 03 · Nmap, NSE"]
L04["Lab 04 · Risk Analysis"]
end
subgraph Containers["Контейнеризация"]
L05["Lab 05 · Docker"]
L06["Lab 06 · CIS Benchmark, Trivy"]
end
subgraph AppSec["AppSec Toolchain"]
L07["Lab 07 · SAST, SCA, Secret Detection\nSemgrep · Checkov · Gitleaks"]
L08["Lab 08 · DAST\nOWASP ZAP"]
end
subgraph DevSecOps["DevSecOps"]
L09["Lab 09 · CI/CD Pipeline\nGitHub Actions"]
L10["Lab 10 · Risk Analysis · Practice"]
end
PET["Pet Project — индивидуальная работа"]
Intro --> Foundations
Foundations --> Containers
Containers --> AppSec
AppSec --> DevSecOps
DevSecOps --> PET
- Единый стиль кода
- Все функции по работе с деревом должны находиться в пространстве имен
- Оформление
README.mdв соответствии с содержанием проекта - Оформление
.gitignoreв соответствии с содержанием проекта - Оформление
.dockerignoreв соответствии с содержанием проекта - Использовать подходящий тип
LICENSEдля проекта иNOTICE - Создать и использовать скрипты для автоматизации сборки проекта, примеров, тестов, пакетирования
- Обеспечить непрерывный процесс сборки проекта с использованием сервиса
GitHub Actions - Написать документацию к проекту с использованием инструмента doxygen
- Обеспечить размещение пакета проекта на сервисе
GitHub Releaseпри успешном слияние веткиdevelop - Рефакторинг и поддержка лабораторных работ в процессной деятельности
- Все команды выполняться строго из
терминала/ консолибез использованияWebUIза исключениям работы с токенами, ключами и специфичными настройками
- Подготовка окружения
$ python3 -m venv .venv
$ source .venv/bin/activate
$ pip install -r requirements.txt
$ python -m mkdocs serve --livereload
# or
$ mkdocs serve -a 127.0.0.1:8001 # прямое обозначение адреса- Очистка локального репозитория
$ rm -rf __pycache__ scripts/__pycache__ # etc.
$ rm -rf .venv
$ lsof -i :8000
$ kill <PID>- Release
$ git tag -a v1.0.0 -m "v1.0.0"
$ git push origin v1.0.0
$ git tag -d v0.1.0 # удалить локальный тег
$ git push origin :refs/tags/v0.1.0 # удалить тот же тег на GitHub├── docs/ # MkDocs source
│ ├── index.md # Главная
│ ├── licenses.md # 41 лицензия
│ ├── appsec_tt.md # 29 классов инструментов
│ ├── APPENDIX.md # Команды и утилиты
│ ├── troubleshooting.md # FAQ
│ ├── glossary.md # 39 аббревиатур
│ ├── labs/
│ │ ├── intro/ # vmbox, git_setup, gistup
│ │ ├── basic/ # lab01-10
│ │ └── pet_project.md
│ ├── materials/ # Примеры, OWASP Top 10
│ ├── artifacts/ # CheatSheets, PDF, assets
│ ├── stylesheets/ # CSS (tokens, layout, ...)
│ ├── javascripts/ # JS
│ └── overrides/ # main.html, 404.html
├── labs/
│ ├── intro/ # vmbox, git_setup, gistup
│ ├── basic/ # lab01-10
│ └── pet_project/
├── .github/workflows/
│ ├── ci.yml # Lint → Audit → Build → Deploy
│ └── release-from-notes.yml
├── hooks.py # Sitemap enrichment
├── mkdocs.yml
├── requirements.txt
└── RELEASE_NOTES.md