Директор по DevOps и облачным операциям Imperva Итай Говс рассказывает на портале The New Stack о том, как подход «инфраструктура как код» (Infrastructure-as-Code, IaC) позволяет снизить давление на разработчиков и повысить безопасность разработки.

Современные среды разработки приложений беспорядочны. От контейнеров до кластеров, микросервисов, бессерверных функций и API — существует множество зависимостей, которые разработчики должны отслеживать, управляя конфигурацией среды, ИТ-мониторингом, журналами и многим другим. Более того, бизнес-лидеры все чаще оказывают давление на команды DevOps, требуя повышения прочности приложений и применения средств контроля безопасности для смягчения возможных утечек данных. Однако это легче сказать, чем сделать. На первом месте в списке проблем нативной облачной разработки стоят политики безопасности — так утверждает 41% ИТ-специалистов в опросе Red Hat, проведенном в 2021 г.

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

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

Выше скорость, больше согласованности

Поскольку все больше организаций используют модель нативных облачных вычислений для быстрого и масштабного создания приложений, команды разработчиков нуждаются в большей автономии. IaC обеспечивает такую автономию. Это достигается за счет создания ресурсов с кодом, хранящимся в контрольном репозитории исходников. Такой подход позволяет разработчикам выполнять операции автоматически, устраняя необходимость в помощи и контроле DevOps при решении задач, связанных с инфраструктурой. Кроме того, IaC позволяет поддерживать эксплуатационную надежность ресурсов, включая автоматическое масштабирование, мониторинг, оповещение, безопасность и конфигурацию. Автоматизируя эти ручные процессы, IaC снижает риск человеческой ошибки и позволяет внедрять методы CI/CD.

Создавайте быстро и безопасно

С помощью IaC команда DevOps может создать единую, надежную базу кода для организации. Такой подход дает командам безопасности возможность последовательного аудита и позволяет убедиться, что команда DevOps развертывает приложения в соответствии со стандартами безопасности. Кроме того, поскольку IaC сводит производственные среды к коду, DevOps может быстро вывести из эксплуатации любое производственное приложение, которое оказалось скомпрометированным или не отвечает необходимым критериям безопасности. Это позволяет разработчикам действовать быстро и обеспечивать безопасность без необходимости платить за резервные отказоустойчивые среды.

Внедрение IaC также позволяет командам отслеживать несоответствия в коде, что облегчает исправление уязвимостей и предотвращает ложные срабатывания. Этот подход дает возможность реализовать лучшие практики конфигурирования в рамках политик и правил безопасности организации. Например, не разрешать открывать ограниченные порты или запрещать исходящий трафик. IaC помогает DevOps быстро устранять и исправлять общеизвестные уязвимости и дефекты (CVE) до того, как они приведут к утечке данных.

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

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

Почему вы должны применять IaC

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

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

Команды DevOps сталкиваются с такими сложными задачами, как управление безопасностью динамических сред разработки, API и т. д. Использование IaC при разработке нативных облачных приложений является основополагающим шагом к созданию более безопасного жизненного цикла разработки ПО, поскольку позволяет командам разработчиков создать стандарт кода, который можно использовать для быстрого устранения последствий атак с минимальными усилиями и без ущерба для безопасности. Однако одно лишь внедрение IaC не может остановить атаки нулевого дня. Разработчики также должны использовать инструменты безопасности, предназначенные для работы во время выполнения кода, чтобы остановить новые атаки и защитить все пути к своим приложениям.