Поделиться через


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

Microsoft Sentinel
Azure Monitor
GitHub

Идеи решения

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

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

Terraform является товарным знаком Hashicorp. Никакое подтверждение не подразумевается использованием этого знака.

Архитектура

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

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

Поток данных

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

  1. Разработчики используют разработку, управляемую тестированием, чтобы проверять изменения кода в определениях инфраструктуры, таких как шаблоны IaC, в репозиториях GitHub. Они разрабатывают модульные тесты, тесты интеграции и политику как код (PaC) параллельно для тестирования качества IaC.

  2. Запросы на вытягивание активируют автоматическое модульное тестирование с помощью GitHub Actions.

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

  4. Настройте GitHub Actions, чтобы проверить наличие проблем с качеством кода и безопасностью. Сканируйте с использованием ваших собственных настраиваемых запросов GitHub CodeQL или других инструментов безопасности для анализа шаблонов IaC и обнаружения потенциальных уязвимостей. Если обнаружена уязвимость, GitHub отправляет оповещения в организацию или владельцы репозиториев и обслуживающие серверы.

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

  6. Когда необходимо обновить инфраструктуру вручную, назначенный администратор повышает доступ к изменениям. После изменения удаляется повышенный доступ. Для выверки IaC также следует заходить в журнал проблемы GitHub. Шаги и подходы по примирению зависят от конкретных средств IaC.

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

  8. Когда система обнаруживает аномалию, она автоматически регистрирует проблему GitHub для разрешения.

Компоненты

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

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

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

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

    Замечание

    CodeQL не поддерживает сканирование всех файлов IaC, таких как Terraform. Однако вы можете использовать проект сообщества CodeQL IaC Extractor или предоставленные поставщиком альтернативные варианты, такие как Trivy в Aqua Security.

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

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

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

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

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

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

DevSecOps для IaC концептуально похож на DevSecOps для кода приложения в службе Azure Kubernetes (AKS). Однако вам нужен другой набор конвейеров и инструментов для управления непрерывной интеграцией и непрерывной доставкой для IaC.

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

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

Защита инфраструктуры на ранней стадии разработки снижает риски неправильно настроенной инфраструктуры, которая предоставляет точки атаки после развертывания. Вы можете интегрировать средства анализа статического кода, такие как Snyk или Aqua Security Trivy, с GitHub Advanced Security для проверки уязвимостей безопасности в коде инфраструктуры. Этот процесс аналогичен статическому тестированию безопасности приложений.

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

Настройте выделенные субъекты-службы для развертывания или изменения облачной инфраструктуры для рабочих сред. Затем удалите все остальные права доступа, которые позволяют настроить среду вручную. Если вам нужны настройки вручную, повышение доступа для назначенного администратора и удаление повышенного доступа после внесения изменений. Необходимо настроить Azure Monitor для создания проблемы с GitHub, чтобы разработчики могли примирить изменения. Если это возможно, избежать ручной настройки.

Важно постоянно отслеживать облачную среду для угроз и уязвимостей, чтобы предотвратить инциденты безопасности. Вы можете использовать средства защиты от угроз и SIEM для обнаружения аномального трафика. Эти средства автоматически оповещают администраторов безопасности и вызывают проблему GitHub.

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

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

Соавторы

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

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

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

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

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