DevSecOps для инфраструктуры как кода (IaC)

Microsoft Sentinel
Azure Monitor
GitHub

Идеи решения

В этой статье описывается идея решения. Ваш архитектор облака может использовать это руководство, чтобы визуализировать основные компоненты для типичной реализации этой архитектуры. Используйте эту статью в качестве отправной точки для разработки хорошо спроектированного решения, которое соответствует конкретным требованиям рабочей нагрузки.

Эта концепция решения иллюстрирует конвейер DevSecOps, в котором GitHub используется для реализации подхода «инфраструктура как код» (IaC). Рассматривая определения инфраструктуры как источник истины, рабочие нагрузки могут автоматизировать проверку, сканирование безопасности, управление и соответствие требованиям на протяжении всего жизненного цикла развертывания.

Стандартные шаблоны развертывания, разработка с поддержкой ИИ, проверка кода и настройка, управление на основе политик и управление жизненным циклом помогают повысить безопасность, повысить эффективность работы, уменьшить смещение конфигурации и обеспечить надежные облачные среды.

Архитектура

Схема, демонстрирующая архитектуру DevSecOps для IaC.

На схеме показана архитектура, использующая DevSecOps для IaC. Слева направо, выноска 1 содержит маркированные пункты «Инфраструктура как код и тесты» и «Политики как код» и указывает на значок пользователя, соединённый стрелкой с надписью «GitHub Copilot» со значком GitHub. Выноска 2 показывает стрелку с надписью "GitHub repos", направленную от значка GitHub к блоку. Внутри поля выноски 3, 4 и 5 ссылаются на значки, помеченные GitHub Actions, GitHub Advanced Security и DevOps Security в Microsoft Defender для облака соответственно. Выноска 6 содержит маркированный текст "Azure проверенные модули" и "стеки развертывания Azure" и отображает стрелку, указывающую от поля на значок, помеченный Azure Resource Manager и оттуда в другое поле. Выноска 7 находится в этом поле вместе со значками, помеченными Microsoft Defender для облака, Microsoft Sentinel, Политика Azure и Azure Monitor. Стрелка точечной линии слева от нижней части этого поля указывает на выноску 8. Выноска 8 обозначена как GitHub Issues и содержит текст «Дрейф конфигурации и согласование». Пунктирная стрелка, идущая влево от выноски 8, указывает обратно вверх на выноску 2.

Скачайте файл Visio для этой архитектуры.

Поток данных

Следующий поток данных соответствует приведенной выше схеме:

  1. Разработчики используют ИИ и подход разработки через тестирование для создания и сопровождения кода инфраструктуры, повторно используемых модулей, тестов и процессов развертывания. Они разрабатывают модульные тесты, интеграционные тесты и проверки policy as code (PaC) наряду с определениями инфраструктуры.

  2. Разработчики коммитят IaC, тесты и проверки в репозитории GitHub, чтобы подтвердить качество, безопасность и соответствие требованиям перед отправкой pull request.

  3. Запросы на включение изменений запускают автоматические тесты в GitHub Actions. Этот рабочий процесс создает и проверяет предварительные версии развертывания перед развертыванием.

  4. GitHub Advanced Security предоставляет проверки безопасности на уровне репозитория. Проверки включают сканирование кода или процессы проверки зависимостей, где это уместно, а также включение сканирования секретов и защиты при push в репозитории для обнаружения раскрытых секретов.

  5. Настроенное действие безопасности DevOps сканирует определения инфраструктуры на наличие неправильных конфигураций и передает результаты в службу безопасности DevOps в Microsoft Defender для облака. Defender для облака сопоставляет эти результаты с аналитическими сведениями о состоянии облачной безопасности, чтобы помочь определить приоритет исправления перед развертыванием.

  6. Конвейер развертывания создает или обновляет ресурсы Azure с помощью повторно используемых артефактов IaC на основе утвержденных определений инфраструктуры, таких как проверенные модули Azure (AVM). Стеки развертывания Azure помогают поддерживать согласованность между развернутыми ресурсами и определениями в системе контроля версий, а параметры запрета развертывания помогают уменьшить дрейф конфигурации, ограничивая несанкционированные изменения в обход процесса развертывания. Утвержденные изменения вручную документируются и согласовываются с помощью системы управления версиями, чтобы сохранить Git в качестве авторитетного источника истины.

  7. DevSecOps постоянно отслеживает и защищает от угроз безопасности и уязвимостей. Политика Azure применяет управление облаком.

  8. Настроенная автоматизация создает обращение в GitHub, когда службы мониторинга или безопасности обнаруживают аномалию. Например, Defender для облака может определить общедоступный ресурс, который нарушает требования безопасности. Группа действий Azure Monitor или правило автоматизации Microsoft Sentinel может запускать рабочий процесс Azure Logic Apps, который создает обращение в GitHub для проверки и устранения проблемы.

Компоненты

  • GitHub — это платформа размещения кода для управления версиями и совместной работы. В этой архитектуре GitHub хранятся шаблоны IaC в центральных репозиториях для разработки, тестирования, рабочих процессов управления и разработки с помощью ИИ с помощью GitHub Copilot.

  • GitHub Actions — это средство автоматизации непрерывной интеграции и непрерывного развертывания (CI/CD), которое позволяет рабочим процессам создавать, тестировать и развертывать код непосредственно из репозиториев GitHub. В этой архитектуре GitHub Actions автоматизирует модульное тестирование, сканирование безопасности и подготовку инфраструктуры для конвейеров IaC.

  • GitHub Advanced Security предоставляет возможности безопасности на уровне репозитория, включая сканирование секретов и обнаружение уязвимостей зависимостей. В этой архитектуре GitHub Advanced Security помогает определить предоставленные учетные данные, уязвимые зависимости с открытым кодом и другие риски безопасности репозитория перед объединением и развертыванием кода.

  • Безопасность DevOps в Defender для облака централизует результаты анализа безопасности DevOps и сопоставляет их с облачным контекстом. В этой архитектуре настроенный GitHub Action Microsoft Security DevOps сканирует артефакты IaC на наличие ошибок конфигурации и передаёт сведения об обнаруженных проблемах в Defender для облака для приоритизации и устранения.

  • Проверенные модули Azure (AVM) — это готовые модули IaC, поддерживаемые Microsoft. В этой архитектуре рабочие нагрузки используют AVM для развертывания повторно используемых ресурсов и модулей шаблонов, которые соответствуют рекомендациям Azure Well-Architected Framework.

  • Стеки развертывания Azure позволяют рабочим нагрузкам управлять развернутыми ресурсами как единым объектом с общим жизненным циклом. Стеки развертывания Azure помогают поддерживать согласованность между развернутыми ресурсами и определениями инфраструктуры, хранящимися в системе контроля версий, поддерживают управление жизненным циклом и снижают дрейф конфигурации за счёт применения политик управления и параметров запрета.

  • Defender для облака — это платформа управления безопасностью, которая обеспечивает защиту от угроз в гибридных облачных рабочих нагрузках. В этой архитектуре он постоянно отслеживает развернутую инфраструктуру для уязвимостей и угроз, а также дополняет результаты безопасности DevOps с помощью аналитики безопасности среды выполнения.

  • Microsoft Sentinel — это облачное решение для управления безопасностью и событиями (SIEM) и автоматизированного реагирования системы безопасности (SOAR), использующее ИИ и аналитику для обнаружения угроз и реагирования на них. В этой архитектуре Microsoft Sentinel отслеживает активность инфраструктуры и создаёт оповещения или обращения в GitHub при обнаружении аномалий.

  • Политика Azure оценивает Azure ресурсы по стандартам организации и рабочей нагрузки. В зависимости от назначаемого эффекта политики Политика Azure может выполнять аудит, изменение, исправление или запретить несоответствующие конфигурации. Например, определение политики с deny эффектом может блокировать развертывание виртуальной машины, номер SKU которой не разрешен.

  • Azure Monitor — это платформа телеметрии и наблюдаемости, которая собирает метрики производительности и журналы действий из ресурсов Azure. В этой архитектуре Azure Monitor обнаруживает нештатные состояния инфраструктуры и инициирует оповещения, что позволяет начать первичный анализ инцидента и устранение проблемы.

Подробности сценария

При внедрении IaC создайте автоматические тесты при разработке кода. Создайте планы развертывания и состояния конфигурации инфраструктуры для эмулирования фактических развертываний. Разработка на основе тестов снижает сложность тестирования IaC при масштабировании рабочей нагрузки.

Запустите тесты интеграции для развернутых ресурсов Azure с помощью Azure SDKs и API, Azure Resource Graph, средств проверки для конкретной рабочей нагрузки или автоматизированных платформ тестирования. Эти тесты помогают проверить конфигурацию ресурсов, подключение, элементы управления безопасностью и готовность к работе.

PaC является еще одним важным способом доставки инфраструктуры, которая соответствует нормативным требованиям и корпоративному управлению. Можно добавить рабочие процессы PaC в ваши каналы для автоматизации управления облаком.

Защита инфраструктуры в начале жизненного цикла разработки снижает риск проблем с безопасностью и соответствием после развертывания. Интегрируйте GitHub Advanced Security и Defender для облака для защиты DevOps в рабочие процессы DevSecOps, чтобы выявлять уязвимости, проблемы с качеством кода, нарушения политик, раскрытие секретов и риски конфигурации в коде IaC. Этот подход аналогичен статическому тестированию безопасности приложений (SAST) для кода приложения.

Смещение конфигурации может быть трудно устранить при развертывании и эксплуатации инфраструктуры, особенно в рабочих средах. Используйте GitHub Actions с OpenID Connect (OIDC) и федерацией удостоверений рабочих нагрузок Microsoft Entra для подготовки и управления ресурсами Azure без хранения учетных данных. Ограничивайте разрешения на развертывание с помощью назначений системы управления доступом на основе ролей Azure (Azure RBAC) по принципу наименьших привилегий и элементов управления защитой среды. Чтобы внести исключительные изменения вручную, используйте привилегированный JIT-доступ, зафиксируйте изменение и автоматически создайте задачу в GitHub, чтобы привести описание инфраструктуры в соответствие через систему контроля версий. Избегайте ручной настройки по возможности и рассматривайте Git как авторитетный источник состояния инфраструктуры.

Чтобы предотвратить дрейф на уровне источника, используйте стеки развертывания Azure, когда группа ресурсов Azure, определённых в шаблоне, имеет общий жизненный цикл. Учитывайте ограничения стека развертывания и применяйте соответствующие запрещающие параметры, чтобы ограничить изменения в плоскости управления в обход основного процесса. Сохраните версию определения IaC в системе управления версиями.

Чтобы предотвратить инциденты безопасности, непрерывно отслеживайте облачную среду для угроз и уязвимостей. Используйте Defender для облака, Microsoft Sentinel, Azure Monitor и другие средства защиты от угроз и SIEM для обнаружения аномальных действий. Эти средства могут автоматически оповещать администраторов системы безопасности и вызывать GitHub проблемы для исследования и исправления.

Потенциальные варианты использования

Централизованные команды платформенной инженерии могут предоставлять командам разработки приложений, данных и ИИ многократно используемые рабочие процессы GitHub Actions, средства контроля PaC и стеки развертывания Azure в качестве утвержденных эталонных сценариев. GitHub Copilot помогает разработчикам создавать определения инфраструктуры, тесты и рабочие процессы развертывания. Настроенное действие Microsoft Security DevOps проверяет безопасность инфраструктуры и конфигурацию перед развертыванием и сообщает о результатах безопасности DevOps в Defender для облака. Организация может ускорить доставку инфраструктуры при поддержании системы управления, согласованности и стандартов безопасности.

Финансовые услуги, здравоохранение, государственный сектор или регулируемые предприятия могут использовать DevSecOps для IaC для автоматизации развертывания инфраструктуры, принудительного применения политики, проверки безопасности и отчетности о соответствии. Политика Azure, Defender для облака, Microsoft Sentinel и стеки развертывания Azure помогают поддерживать изменения инфраструктуры, пригодные для аудита, снижать дрейф конфигурации и обеспечивать соответствие требованиям на протяжении всего жизненного цикла инфраструктуры. GitHub является авторитетным источником истины для всех изменений инфраструктуры и управления системой управления.

Соавторы

Корпорация Майкрософт поддерживает эту статью. Следующие авторы написали эту статью.

Основные авторы:

  • Вито Чин | Старший архитектор облачных решений
  • Yee Shian Ли | Старший архитектор облачных решений

Чтобы просмотреть неопубликованные профили LinkedIn, войдите в LinkedIn.

Следующие шаги