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

Microsoft Sentinel
Azure Monitor
GitHub

Идеи решения

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

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

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

Архитектура

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

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

Поток данных

  1. С помощью тестовой разработки вы проверяете изменения кода для определений инфраструктуры, таких как Шаблоны IaC, в репозитории GitHub. Вы разрабатываете модульные тесты, тесты интеграции и PaC одновременно для тестирования качества IaC.
  2. Запросы на вытягивание (PR) активируют автоматическое модульное тестирование с помощью GitHub Actions.
  3. Вы настраиваете рабочий процесс GitHub Actions для тестирования IaC с локально развернутыми состояниями и планами инфраструктуры.
  4. Вы настраиваете GitHub Actions для проверки качества кода и проблем безопасности. Затем вы используете средства проверки безопасности, созданные на основе CodeQL GitHub, для проверки уязвимостей безопасности в IaC. Если обнаружена уязвимость, GitHub отправляет оповещения в организацию или владельцы репозиториев и обслуживающие серверы.
  5. Средство IaC подготавливает и изменяет ресурсы для каждой среды, настраивает размер, количество экземпляров и другие свойства. Вы можете запускать автоматические тесты интеграции для IaC на подготовленных ресурсах.
  6. При необходимости ручного обновления инфраструктуры назначенный администратор имеет повышенный уровень доступа для выполнения изменений. После изменения удаленный доступ с повышенными привилегиями удаляется, и для выверки IaC необходимо войти в GitHub. Этапы выверки и возможности зависят от конкретных средств IaC.
  7. SecOps постоянно отслеживает и защищает от угроз безопасности и уязвимостей. Политика Azure применяет управление облаком.
  8. При обнаружении аномалии проблема должна быть автоматически вызвана в GitHub для исправления.

Компоненты

  • GitHub — это платформа размещения кода для управления версиями и совместной работы. Репозиторий системы управления версиями GitHub содержит все файлы проекта и журнал их редакций. Разработчики могут совместно участвовать, обсуждать и управлять кодом в репозитории.
  • GitHub Actions предоставляет набор рабочих процессов сборки и выпуска, охватывающих непрерывную интеграцию (CI), автоматизированное тестирование и развертывание контейнеров.
  • GitHub Advanced Security предоставляет функции для защиты IaC. Для этого требуется другая лицензия.
  • CodeQL предоставляет средства проверки безопасности, которые выполняются в статичном коде для обнаружения неправильной настройки инфраструктуры.
  • Terraform — это партнерский продукт, разработанный HashiCorp, который позволяет автоматизации инфраструктуры в Azure и других средах.
  • Защитник Майкрософт для облака предоставляет единое управление безопасностью и расширенную защиту от угроз в гибридных облачных рабочих нагрузках.
  • Microsoft Sentinel — это облачное решение SIEM и автоматическое управление безопасностью (SOAR). Он использует расширенную аналитику ИИ и безопасности, чтобы помочь вам обнаруживать и реагировать на угрозы в вашей организации.
  • Политика Azure помогает командам управлять ИТ-задачами и предотвращать появление проблем с помощью определений политик, которые могут применять правила к облачным ресурсам. Например, если проект планируется развернуть виртуальную машину с нераспознанным номером SKU, Политика Azure оповещения о проблеме и останавливает развертывание.
  • Azure Monitor собирает и анализирует данные телеметрии приложений, такие как метрики производительности и журналы действий. Когда эта служба определяет нерегулярные условия, она оповещает приложения и персонал.

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

Концептуально, DevSecOps для инфраструктуры в виде кода (IaC) аналогична DevSecOps для кода приложения в AKS. Но вам нужен другой набор конвейеров и инструментов для управления непрерывной интеграцией и непрерывной доставкой (CI/CD) для IaC.

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

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

Защита инфраструктуры на ранней стадии разработки снижает риски неправильной настройки инфраструктуры, которая открывает точки для атаки после развертывания. Вы можете интегрировать средства анализа статического кода для инфраструктуры, например Synk или Aquasecurity tfsec, с помощью CodeQL GitHub для сканирования проблем безопасности в коде инфраструктуры. Этот процесс похож на статическое тестирование безопасности приложений (SAST).

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

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

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

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

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

Соавторы

Эта статья поддерживается корпорацией Майкрософт. Первоначально он был написан следующими участниками.

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

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

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