CDK Pipelines - это отлично, особенно для развертываний между аккаунтами. Это позволяет разработчикам определять и настраивать конвейер CI / CD для своего приложения по своему усмотрению.
Но чтобы оставаться совместимым с SoC, мы должны убедиться, что необходимые элементы управления, как показано ниже, проверены / применяются.
- Перед этапом, на котором выполняется развертывание в рабочей среде для нескольких аккаунтов, должен присутствовать этап ручного утверждения.
- Прямое развертывание в производственной среде в обход среды разработки / подготовки запрещено.
- Тестовые случаи (модульные тесты / интеграционные тесты) и тесты InfoSec должны пройти перед развертыванием
Я знаю, что описанные выше вещи легко реализовать в конвейерах CDK, но я не совсем уверен, как гарантировать, что каждый конвейер CDK всегда соответствует этим стандартам.
Я могу думать о решениях ниже
- Ограничения веток - слияние с главной веткой (которую отслеживает конвейер CDK) должно быть ограничено и разрешено только через запросы на вытягивание.
- Тесты - добавьте модульные тесты или интеграционные тесты, которые подтверждают, что сгенерированный шаблон формирования облака имеет определенные ресурсы / свойства.
- Создайте стандартный этап производства со всеми необходимыми элементами управления и оберните его в библиотеку, которую разработчики должны использовать в своем определении конвейера CDK, если они хотят развернуть его в производстве.
Но как обеспечить соблюдение вышеуказанного контроля в автоматическом режиме? Разработчики могут обойти указанные выше элементы управления, просто не указав их при определении конвейера. И мы не хотим полагаться на утверждающего, чтобы проверять эти вещи вручную.
Итак, подытоживая, возникает вопрос: как при использовании конвейеров CDK предоставить разработчикам максимальную настраиваемость и свободу в проектировании своего решения CI / CD, гарантируя, что ограничения SoC и обязательные элементы управления проверяются и применяются в автоматическом режиме?