Почему GitOps необходим для DevSecOps
Опубликовано: 2022-02-24Преимущества DevOps для автоматизации, отслеживаемости и, в частности, сотрудничества между заранее разрозненными группами и заинтересованными сторонами общепризнаны. Но поскольку перед группами DevOps стоит значительная задача по переносу операций в контейнерные среды Kubernetes, длительные и проверенные тактики DevOps могут оказаться короче. Проблемы безопасности — и подводные камни — тоже проявляются в уникальных методах.
Фантастическая информация заключается в том, что GitOps служит для заполнения ряда пробелов в DevOps для обеспечения стабильности распределенных сред. Это связано с тем, что процессы GitOps очень благоприятны для DevSecOps, которые определены здесь как наиболее эффективные тактики безопасности, применимые ко всему жизненному циклу программного обеспечения.
В этой статье мы рассмотрим, как GitOps предлагает жизненно важную основу для DevSecOps, для проверок безопасности, которые повышаются за счет CI/CD, а также на этапах написания-развертывания администрирования приложений в кластерах Kubernetes.
Одинокий неизменный ресурс реальности
GitOps можно описать как:
Функционирующий дизайн для Kubernetes и других облачных систем, предоставляющий набор самых лучших процедур, которые объединяют развертывание, управление и мониторинг Git для контейнерных кластеров и целей.
Путь к практическому опыту разработчика для управления программами, где сквозные конвейеры CI/CD и рабочие процессы Git используются как для операций, так и для разработки.
Git — единственный источник настоящей правды, так как желаемая конфигурация заявлена именно здесь. В Kubernetes работает агент GitOps, он регулярно сравнивает реальную точку внутри Kubernetes с искомой точкой, сохраненной в Git. Любые новые варианты, добавленные в отслеживаемый отдел в Git, мгновенно применяются в Kubernetes. И наоборот, любые варианты справочника, используемые в Kubernetes, автоматически возвращаются к идеальному состоянию, заявленному в Git. Дрейф конфигурации устранен.
Git обычно метко описывается как единственный источник реальной правды, поскольку он применим к GitOps, благодаря его неизменной структуре. Среди прочего, это поможет поддерживать границу — не противоречащую брандмауэру — которая разделяет проблемы между CI и CD. Таким образом, ряд способов, связанных с продвижением приложения как части CI — запросы на вытягивание, проверка, коммиты и так далее. — продолжайте отделяться от Git.
Для разработчика, создающего запрос на извлечение, запрос на извлечение во время проверки и разрешения объединяется и регулярно используется в кластере для предстоящей сверки, которая обычно занимает 15 минут.
По умолчанию процесс является двунаправленным — это означает, что изменения, произведенные непосредственно в Kubernetes, взаимны в Git, когда выполняется будущий цикл согласования (обычно каждые 15 минут). Тем не менее, это положение дел значительно хуже, чем лучшее, когда член команды DevOps или, что еще хуже, злоумышленник-негативное лицо немедленно внесет изменения в кластеры. Эти изменения, напрямую связанные с кластером, не были должным образом проверены с помощью мерж-реквестов и одобрений, и в результате они нарушают теорию GitOps о том, что Git служит непреложным источником истины, когда происходит дрейф.
В качестве альтернативы, чтобы предотвратить возникновение дрейфа, ресурс проверки GitOps может отправлять предупреждения, если в кластер вносятся изменения, которые изначально не использовались в Git. Когда это происходит, благодаря журналу аудита программный код в Git может затем заменить ошибочные модификации, предназначенные для кластеров, через контроллеры в его развернутом месте в естественной среде выполнения.
И наоборот, когда неизменность не достигается, может возникнуть дрейф. Это может произойти во время сетевой атаки или когда сотрудник DevOps непреднамеренно изменяет конфигурацию кластера, чтобы она отличалась от той, что есть в Git. Когда это происходит, несоответствие помечается — за счет использования подходящего оборудования GitOps — таким образом, символизируя квинтэссенцию DevSecOps, присутствующую в процессах GitOps.
Соответствующие приложения автоматизируют систему постоянной проверки, чтобы убедиться, что желаемая точка конфигурации в репозитории Git соответствует истинному состоянию в кластере Kubernetes. Он также используется для согласования и полного развертывания, как только они будут эффективно выделены в объявленном состоянии репозитория.
Аудит управлять
Функции аудита, которые предоставляет GitOps, также имеют решающее значение для помощи DevSecOps. Оставаясь в репозитории Git как единственном источнике фактов, все приложения, код и конфигурации имеют версии и сохраняют весь путь аудита, что является основной необходимостью для любой защищенной естественной среды. Этот контрольный журнал также обычно предлагается как разработчикам, так и операционным сотрудникам, чтобы они могли заметить, что работает в кластере (большинство пользователей ограничены доступом только к просмотру конфигурации кластера).
Разработчику не всегда требуется полагаться на контрольные журналы в такой степени, как это делают пользователи функций и персонала DevSecOps, но они могут использовать возможность понять, какие изменения произошли и что послужило причиной внесения изменений в репозиторий, которые действительно произошли. . В двух словах, для разработчика — как и для всех сотрудников DevOps — все это просто журнал Git.
Журналы аудита в Git также доступны и очень просты для сборщиков, чтобы при необходимости их можно было найти. Это связано с тем, что завершение процесса фиксируется в программе отчета Git, понятной разработчикам.
При наличии контрольного журнала также можно быстро откатить изменения в приложениях, которые вызвали проблемы. Это особенно полезно, когда кластеры были скомпрометированы или неправильно сконфигурированы. В этом случае, вместо того, чтобы восстанавливать кластер с нуля, контрольный журнал состоит из искомой точки в репозитории. Конфигурация кластера и программы с желаемой точкой из журнала аудита затем развертываются, и процедура перестроения выполняется автоматически.
Количество «ключей от королевства»

Разработчики обычно полагаются на Jenkins, сервер автоматизации, для разработки, проверки и поддержки CI/CD для создания конвейеров для сред Kubernetes. Без GitOps разработчики могли бы в любом другом случае иметь немедленный доступ к кластерам Kubernetes, когда они прямо развертывают свой код. Другими словами и фразами, строители — независимо от того, являются ли они частью организации или подрядчиком, работающим удаленно, — будут иметь немедленный доступ к выходной среде и будут иметь «ключи от царства», так сказать, для общения. Это редко является идеальным условием безопасности.
Все, что он выберет в ранее упомянутом случае, — это для неподходящего пользователя — или, что еще хуже, злоумышленника — иметь доступ к командам KubeConfig или Kubectl для кластеров в производстве, которые они могли бы запускать со своего ноутбука. Если злоумышленник скомпрометировал процесс CI и установил учетные данные, например, он также может получить доступ к любому кластеру, к которому имеет доступ система CI.
Тот простой факт, что GitOps помогает предотвратить изменение конфигураций кластера пользователями или злоумышленниками, не оставляя никаких следов, в первую очередь жизненно важен для групп эксплуатации и безопасности, а также помогает свести к минимуму умственную нагрузку разработчика. Например, при получении управления разработчик, как правило, не должен иметь прямого доступа к узлам Kubernetes и/или командным строкам kubectl. Таким образом, GitOps согласовывает практически все, что разработчики обрисовывают в Git, но не допускает ручного доступа к кластерам Kubernetes или производственным средам, за исключением того, что у сборщиков есть уникальные разрешения на управление доступом.
DevSecOps от GitOps представляет собой способ предотвратить эту ситуацию с вектором атаки для CD, защищая «ключи от королевства». Когда операторы GitOps, такие как Flux с открытым исходным кодом — подробнее об этом ниже — работают внутри Kubernetes и, следовательно, имеют доступ к кластерам, элементы управления доступом остаются в рамках системы безопасности Kubernetes. Доступность для потребителей устанавливается путем назначения привилегий пространствам имен отдельных групп и членов группы.
В качестве примера того, как DevSecOps и GitOps замечательно помогают другим людям, Департамент обороны США (DoD), Николас Шайлан, главный специалист по компьютерному программному обеспечению ВВС США, недавно описал, как DevSecOps и GitOps — с Flux — играет жизненно важную роль в развитии своего программного обеспечения, которое поддерживает весь спектр сил безопасности США.
«Безопасность и защита не подлежат обсуждению, но мы также хотим, чтобы самостоятельная компания-разработчик повысила эффективность и скорость», — сказал Шайлан.
Например, GitOps — это «ключ к нашим достижениям в настройке и развертывании Platform Just one во всем DoD», — утверждает DoD. Согласно DoD, System Just one представляет собой «набор разрешенных, защищенных дистрибутивов Kubernetes, совместимых с Cloud Indigenous Computing Foundation (CNCF), инфраструктуры в виде сборников кода и защищенных контейнеров» со встроенными конвейерами безопасности.
Сдержки и противовесы
Процедуры DevSecOps сочетаются с проверками и балансами поставок GitOps. Таким образом, команда доступности, которую он дает, помогает предотвратить доступ разработчика или злоумышленника к репозиторию кода поставки, чтобы ввести, например, бэкдор, нулевой день или еще одну форму уязвимости на время CI. процедура. Это просто потому, что все запросы на включение проверяются коллегами.
Поскольку DevSecOps поддерживает систему CI, проверки и противовесы, используемые перед кодом, выделены в Git и развернуты в кластере. Разработчик обычно публикует изменение в виде запроса на вытягивание, которое проходит экспертную оценку. После проверки и авторизации код объединяется в Git, а файл YAML искомого состояния затем изменяется соответствующим образом.
Требуемое условие будет немедленно применено к кластеру Kubernetes. Как упоминалось ранее, правильное оборудование GitOps с функциями DevSecOps постоянно отслеживает точное состояние в целевом процессе, чтобы убедиться, что оно отвечает взаимностью на то, что заявлено в Git. Предупреждение выдается, если есть какие-либо отклонения, поэтому можно принять корректирующие меры.
DevSecOps упрямый
Ряд инструментов GitOps помогают DevSecOps. Например, Flux с открытым исходным кодом помогает поддерживать репозиторий Git как единственный неизменный источник реальной правды. Возможности Flux также расширяются, чтобы регулировать доступность для сдержек и противовесов во время CI/CD для выделенного и развернутого кода.
Для гораздо более самоуверенного знакомства с Flux Weave GitOps Main с открытым исходным кодом упрощает первые способы включения автоматизации CI/CD во многих кластерах. Система размещения методов GitOps и DevSecOps с помощью Weave GitOps Main включает в себя пару несложных команд на консоли.
Компания Weave GitOps стала первой платформой GitOps, которая автоматизирует постоянную доставку приложений и автоматическое операционное управление для Kubernetes. в любом масштабе в гибридных облаках, мультиоблачных и пограничных архитектурах.
Все несколько инструментов помогают автоматизировать мониторинг, чтобы гарантировать, что конфигурация кластера обычно соответствует тому, что есть в Git, чтобы избежать дрейфа. Полный и доступный контрольный журнал позволяет выполнять откаты приложений и конфигурации кластера на необходимой основе — без необходимости перестраивать кластер с нуля.
Таким образом, GitOps означает эволюцию DevOps для рассредоточенных сред Kubernetes, хотя DevSecOps стал важным способом поддержания стабильности CI/CD для GitOps на протяжении всего жизненного цикла приложения.
Стив Уотерворт — супервайзер по техническому маркетингу в Weaveworks .