Как читать авторский курс и нормативные материалы
Это учебные материалы, а не заключение о соответствии конкретного продукта. Организационные модели курса отделяйте от терминов стандарта: ППК в опубликованном проекте — машиночитаемый перечень, а живой реестр его версий является практикой сопровождения. Термин OSA в разных материалах имеет разный охват. Статус и обязательность нормативного документа проверяются отдельно; проект КАПО опубликован как проект первой редакции.
П01. Стенд WSL2 Docker и базовая гигиена
Цель
Получить рабочую изолированную среду для всех последующих практик курса: WSL2 на ядре v2, работающий Docker, установленный git. Проверяемый результат — три зафиксированных факта: wsl -l -v показывает дистрибутив с VERSION 2, docker run hello-world печатает приветствие, версии git и Docker записаны в журнал стенда. После этой практики у вас есть «песочница», в которой анализ запускается не на рабочем хосте, а в контейнере или WSL.
Почему отдельная практика про стенд SCA/OSA-инструменты распаковывают чужие архивы, читают чужие lockfile и иногда исполняют чужие build-скрипты. Делать это прямо на рабочей машине — значит смешивать доверенный и недоверенный код. WSL2 + Docker дают дешёвую изоляцию и, что важнее для курса, воспроизводимость: один и тот же образ даёт один и тот же набор findings у преподавателя и у студента.
Команда или действие
# 1. Версия WSL и режим ядра дистрибутива (выполнять в PowerShell)
wsl -l -v
# 2. Внутри WSL — зафиксировать версии инструментов стенда
docker --version
git --version
# 3. Проверить, что Docker реально запускает контейнеры
docker run --rm hello-world
# 4. Гигиена: завести каталог под тестовый проект, не трогая хост
mkdir -p ~/sca-lab/sample && cd ~/sca-lab
git init sample
Гигиена стенда — четыре правила, а не лозунг 1. Анализ запускаем внутри WSL/контейнера, а не в Windows-окружении хоста. 2. Версии инструментов фиксируем (
--versionв журнал): findings без версии генератора невоспроизводимы. 3. Работаем на выделенном тестовом проекте (~/sca-lab/sample), а не на боевом репозитории. 4. Никогда не запускаем неизвестные build-скрипты из чужого архива напрямую — только в одноразовом контейнере (--rm).
Что вы должны увидеть
wsl -l -v — дистрибутив в состоянии Running и именно VERSION 2 (не 1):
NAME STATE VERSION
* Ubuntu Running 2
docker run --rm hello-world — приветствие, означающее, что демон жив и образ скачался:
Hello from Docker!
This message shows that your installation appears to be working correctly.
Версии — конкретные строки вида (числа у вас будут свои, важно, что команда не падает):
Docker version 27.5.1, build 9f9e405
git version 2.43.0
Если не получилось
wsl -l -vпоказываетVERSION 1— дистрибутив на старом ядре, многие тома и сеть Docker будут вести себя иначе. Конвертируйте:wsl --set-version <Имя> 2, при необходимостиwsl --set-default-version 2.docker run hello-world:Cannot connect to the Docker daemon— демон не запущен или нет прав. Для Docker Desktop проверьте, что в его настройках включена интеграция с вашим WSL-дистрибутивом; для нативного движка —sudo service docker startи членство в группеdocker.wslне распознаётся как команда — компонент WSL не установлен. Поставьте:wsl --install(PowerShell от администратора), перезагрузитесь.hello-worldтянется бесконечно / timeout — нет доступа к реестру образов. На закрытом контуре Организации укажите внутреннее зеркало вdaemon.jsonили подгрузите образ изdocker load.
Критерий зачёта
Показать преподавателю терминал WSL2, где подряд проходят: wsl -l -v с VERSION 2, docker run --rm hello-world с приветствием, docker --version и git --version. Версии записаны в журнал стенда (любой текстовый файл) — это базовая дисциплина воспроизводимости, на которую опираются все дальнейшие практики.
Нормативная связка
Стенд — это «безопасная среда разработки», а не SBOM-практика: соответствующий пласт требований — поддержание изолированного и управляемого toolchain. См. NIST SP 800-218 SSDF (практики PO.3 «Support toolchains» и PO.5 «Implement and maintain secure environments for software development»; формулировки уточняйте по официальному источнику) и общий принцип управляемости работ из ГОСТ Р 56939-2024. Дальше на этом стенде запускаются П03. Генерация SBOM через Syft и смежные сканеры; ручное чтение результата — в П02. Чтение CycloneDX JSON руками. Навигация по курсу: М00. Ориентация в курсе и карта решений.