Перейти к содержанию

Воспроизводимый запуск проектов

Требования этого документа применяются к локальной разработке, тестовым средам и целевым средам запускаемых компонентов. Уровни обязательности определены в корневом 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-секреты не допускаются.