ADG Оставить заявку
Блог Управление и процессы 5 мин чтения

Итоги первого полугодия 2019: GitOps у пяти заказчиков, BlueKeep как стресс-тест и Terraform 0.12 как новый стандарт

Шесть месяцев: GitOps-практики внедрены у пяти заказчиков, BlueKeep потребовал трёх волн экстренного реагирования, Terraform 0.12 закрепился как рабочий стандарт IaC.

Контекст момента

Итоги первого полугодия 2019: GitOps-практики внедрены у пяти заказчиков, BlueKeep потребовал экстренного реагирования, а Terraform 0.12 закрепился как стандарт IaC в командах

Полгода закрылось. Хорошее время сесть и честно посмотреть что реально вышло, а что прошло мимо - без прикрас, но и без лишней скромности.

Если одним абзацем: GitOps перестал быть экспериментом, BlueKeep показал что экстренное реагирование - навык, который надо держать в тонусе, а Terraform 0.12 закрыл больную тему с count-костылями и теперь просто работает. ГосСОПКА - отдельная история, медленная, но движущаяся.

GitOps: от пилота к пяти заказчикам

В январе мы запускали ArgoCD в тестовом кластере и честно написали, что не знаем как это приживётся в продакшне. За полгода ответ получили: приживается, хотя и с трением.

Сейчас GitOps-подход работает у пяти заказчиков - в разных комбинациях ArgoCD и Flux, с Helm и без. Что оказалось главным результатом не на уровне инструментов, а на уровне процессов:

  • Дрейф конфигурации стал видимым. Раньше «кто-то что-то поменял руками в кластере» выяснялось постфактум. Теперь ArgoCD это показывает сразу - жёлтый статус Out of Sync и список дельты. Это меняет культуру: инженеры начинают думать дважды перед kubectl edit без коммита.
  • Ревью инфраструктурных изменений через PR стало нормой. Не везде и не сразу - но там, где приживается, команды говорят что это самое ценное, а не сам ArgoCD.
  • Rollback через git revert работает. Звучит банально. На практике это первый раз, когда rollback инфраструктуры занимает минуты, а не звонок дежурному с вопросом «а что там было до этого».

Где не пошло: у одного заказчика пилот зависнул из-за того, что команда разработки и команда эксплуатации так и не договорились кто владеет репозиторием с манифестами. Инструмент готов, организационный вопрос - нет. Это не проблема GitOps - это проблема границ ответственности, которую GitOps сделал видимой раньше, чем инцидент.

BlueKeep: три волны, не одна

CVE-2019-0708 мы встретили в апреле - экстренным аудитом периметра и патчингом того что нашли. Казалось, закрыли и двинулись дальше.

Не получилось. BlueKeep вернулся трижды.

Первая волна - сам патч в мае: сканирование, список уязвимых хостов, согласование окон обслуживания, патчинг. У части заказчиков Windows Server 2008 R2 без ESU ещё числился в продакшне - вот тут по-настоящему начался разговор об EOL.

Вторая волна - в июне, когда детали уязвимости стали достаточно публичными для воспроизведения, а у нескольких клиентов выяснилось что RDP на периметре никуда не делся - просто переехал на нестандартный порт. Нестандартный порт от Shodan не спасает, но некоторых это удивило.

Третья волна - позднее, когда мы делали ретроспективный разбор патча и обнаружили несколько машин, которые формально прошли через процедуру патчинга, но по факту обновление не применилось - сервис не был перезапущен, и ядро RDP-стека жило в памяти со старой версией. Проверка winver и дата termsrv.dll расходились.

Практический вывод из трёх волн: патчинг - это не «выкатили обновление», это «убедились что обновление применилось и сервис перезапущен». Банально, но оказывается не все процедуры это включают явно.

Terraform 0.12: миграция сделана, HCL2 работает

В апреле мы мигрировали несколько десятков модулей с 0.11 на 0.12 и написали подробно что вышло. К концу полугодия картина устоялась.

Что могу сказать по итогам трёх месяцев работы с GA: for_each по map - это именно то, чего не хватало. count-хак с индексами элементов - классический источник головной боли при добавлении/удалении ресурсов в середину списка. for_each это убирает. Модульный рефакторинг, который мы делали в мае - первый случай когда переработка модульной структуры не превратилась в трёхчасовой terraform plan с тридцатью заменами ресурсов, которые «никуда не делись, просто индексы поменялись».

Dynamic blocks - отдельная история. Синтаксис поначалу кажется избыточным, но когда пишешь модуль для security groups с переменным набором правил - альтернативы нет.

terraform 0.12upgrade справился с большей частью механической работы автоматически. Остаток - места где в 0.11 жили условные костыли или использовались неявные преобразования типов. Это честно нашлось и честно потребовало ручного вмешательства.

Terraform 0.12 теперь - наш стандарт для новых проектов. Возвращаться к 0.11 нет желания и повода.

ГосСОПКА: подключения идут, медленно

В январе мы помогали первым клиентам выстраивать технический регламент. За полгода количество активных проектов по подключению к ГосСОПКА выросло - но скорость процесса определяется не нами и не заказчиком, а темпом согласований с регулятором.

Что изменилось практически: техническая сторона подключения - передача событий через агентов, формат STIX/TAXII, настройка каналов - стала понятнее. Документация ФСБ и НКЦКИ обросла конкретикой, появились реальные прецеденты от других организаций, на которые можно ориентироваться.

Организационная сторона - другой разговор. Определить на стороне заказчика ответственного за взаимодействие с ГосСОПКА - отдельная задача, которая не решается техническими средствами. В нескольких проектах основной затык именно здесь: технически готовы, организационно - нет.

По категорированию КИИ - процесс идёт, большинство наших клиентов из субъектов КИИ к середине года завершили или близки к завершению инвентаризации объектов. Следующий этап - разработка и согласование планов реагирования на инциденты.

Что в итоге

Полугодие было плотным и достаточно разнообразным: GitOps и IaC - это развитие практик в плановом режиме, BlueKeep - реагирование на внезапное, ГосСОПКА - долгосрочный процесс с горизонтом явно не на квартал.

Если выделить одно наблюдение: инструменты стали зрелее, но ключевые затыки в проектах по-прежнему организационные - кто владеет репозиторием, кто отвечает за взаимодействие с регулятором, у кого есть мандат принять решение об EOL. Terraform и ArgoCD это не решают, только делают проблему более заметной.

Второе полугодие обещает продолжение по всем направлениям. BlueKeep наверняка преподнесёт ещё что-нибудь по мере роста числа публичных эксплойтов. GitOps-практики будут расширяться на новые проекты. ГосСОПКА никуда не денется. Работы хватит.

Контакт

Нужна такая же инженерная работа?

Опишите задачу и контекст. Ответим в течение рабочего дня, при необходимости подпишем NDA.