Воспроизводимый запуск проектов¶
Требования этого документа применяются к локальной разработке, тестовым
средам и целевым средам запускаемых компонентов. Уровни обязательности
определены в корневом README.md.
Способ запуска — контейнер, процесс на host или управляемая платформа — выбирает проект. Docker, Docker Compose и Makefile не являются обязательными, если проект выполняет требования ниже другим способом.
DEV-RUN-003. Изоляция целевой среды¶
Уровень: MUST
Применяется к: процессам приложения в тестовой и production-среде
Процесс должен иметь только необходимые ему файловые, сетевые и системные полномочия. Доступ к host, устройствам, runtime управления контейнерами и секретам других компонентов должен отсутствовать, если он не является частью явно утверждённого назначения компонента.
Обоснование¶
Ограничение полномочий сдерживает последствия компрометации независимо от выбранного способа запуска.
Проверка¶
- проверка effective permissions процесса в целевой среде;
- статическая проверка deployment-конфигурации;
- попытка доступа к неразрешённому ресурсу в security-тесте.
Исключения¶
Расширенные полномочия требуют ADR с границами и компенсирующими мерами.
DEV-RUN-004. Воспроизводимый локальный запуск¶
Уровень: SHOULD
Применяется к: репозиторию запускаемого приложения
Репозиторию следует предоставлять документированную команду или короткую последовательность команд, которая устанавливает зафиксированные зависимости и запускает основной локальный сценарий. Необходимые предварительные инструменты и ручные действия следует перечислять.
Локальный способ запуска MAY использовать host runtime, контейнеры, виртуальную машину или удалённую среду.
Обоснование¶
Воспроизводимый вход в проект сокращает время подготовки среды без навязывания одинакового toolchain проектам с разными потребностями.
Проверка¶
- выполнение документированной последовательности в чистой поддерживаемой среде;
- проверка фиксации версий зависимостей;
- сопоставление результата с основным локальным сценарием.
Исключения¶
Локальная команда MAY отсутствовать, если компонент запускается только на
управляемой платформе, а проект предоставляет воспроизводимый способ проверить
изменение в изолированной среде. Причина отклонения фиксируется по правилам
корневого README.md.
DEV-RUN-008. Разделение локальной и целевой конфигурации¶
Уровень: MUST
Применяется к: локальной, CI/CD- и deployment-конфигурации
Локальные значения, отладочные порты, test doubles и bind mounts не должны неявно применяться в production. CI/CD и deployment должны явно выбирать конфигурацию и секреты своей среды.
Scripts и команды MAY совместно использоваться разными средами, если выбор конфигурации остаётся явным и проверяемым.
Обоснование¶
Разделение предотвращает перенос локальных послаблений в production, не создавая параллельные наборы одинаковой автоматизации.
Проверка¶
- статическая проверка источников конфигурации;
- сопоставление локальной и production-конфигурации;
- проверка отсутствия локальных секретов и test doubles в deployment.
Исключения¶
Review environment MAY использовать test double, явно указанный в её конфигурации.
DEV-RUN-009. Безопасные входы локального запуска¶
Уровень: MUST
Применяется к: локальному запуску приложения
Локальный запуск должен использовать только непроизводственные секреты, учётные записи и данные. Он не должен требовать доступа к production-секретам, production-данным или изменяющего доступа к production-системам.
Предварительная аутентификация в закрытом registry или разрешённой sandbox допускается, если она явно описана и не предоставляет доступ к production.
Обоснование¶
Необязательность локальной команды не должна разрешать перенос production- credentials и защищаемых данных в среду разработки.
Проверка¶
- secret scanning локальной конфигурации;
- review источников данных и credentials локального запуска;
- проверка отсутствия доступа к production-данным и изменяющих production-полномочий.
Исключения¶
Обезличенная копия production-данных допускается только по отдельной утверждённой политике подготовки и доступа. Production-секреты не допускаются.