За последние полгода компания Chainguard увеличила объем выпуска с 500 миллионов до более чем 1 миллиарда манифестов сборки контейнеров. Кроме того, каталог расширился до 3000 уникальных образов контейнеров и 675000 версий образов. Эти цифры впечатляют, но за ними стоит нечто большее. Сама цифра менее важна, чем система, которая её произвела, и причины, по которым пришлось кардинально пересмотреть подход.
Что на самом деле представляет собой манифест сборки
Давайте точно определимся, что мы считаем. Манифест сборки — это каждый момент, когда фабрика Chainguard Factory создаёт новый проверяемый артефакт: свежий образ go:1.26.5, пересборку nginx после обновления libc, новый вариант архитектуры или обновленный SBOM после изменения зависимостей. Все эти события приводят к новой сборке и появлению новых артефактов.
На таком масштабе один проект, например Python, может иметь десятки поддерживаемых версий, каждая с несколькими архитектурными вариантами, каждая периодически пересобирается при изменениях в исходном коде, обновлениях зависимостей и усилении базового образа. Количество показывает, как весь каталог остаётся актуальным в любой момент для каждого поддерживаемого проекта.
Это различие — разница между каталогом, который безопасен в момент загрузки образа, и тем, который остаётся безопасным каждый день после этого. Большинство систем управления уязвимостями основаны на первом подходе, но мы создаём инфраструктуру для второго.
Как мы строим
Всё начинается с Chainguard OS — специально разработанной операционной системы Linux. Она спроектирована для современных облачных рабочих нагрузок и обеспечивает полный контроль над цепочкой поставок ПО. В отличие от традиционных дистрибутивов Linux, Chainguard OS предназначена для непрерывной интеграции и доставки, а также для быстрых микрообновлений и пересборок. Система захватывает все обновления безопасности, функциональные и производительные улучшения из сообщества открытого исходного кода и доставляет их клиентам максимально быстро. Мы не выпускаем релизы раз в полгода, чтобы потом позволить дистрибутиву устаревать. Chainguard OS использует модель непрерывного выпуска, и новые артефакты доставляются постоянно.
Chainguard Factory — это инфраструктура и автоматизированный движок, обеспечивающий эту доставку. Каждый артефакт, выходящий из фабрики, защищен несколькими уровнями обороны, собран из исходного кода с провенансом уровня SLSA 3, подписями Sigstore и полными SBOM-файлами.
Масштаб и архитектура фабрики делают возможной пересборку в таких объёмах. Благодаря тому, что сборки декларативны и воспроизводимы, мы можем переделать образ, не беспокоясь о скрытых состояниях или расхождениях между тем, что мы хотели доставить, и тем, что на самом деле доставили. Но воспроизводимость одна не приведёт к миллиарду манифестов в такие сроки. Для высокой скорости нужно что-то ещё: знание того, когда нужно пересобирать, и способность немедленно это сделать для тысяч взаимозависимых проектов без участия человека в каждом решении.
Почему мы создали Factory 2.0
Оригинальная Chainguard Factory автоматизировала механику сборки. Она брала определение пакета, разрешала зависимости, собирала пакет, подписывала его и отправляла. Но такая архитектура была традиционной системой, управляемой событиями, и по мере роста каталога её ограничения стали невозможны игнорировать. Система превратилась в то, что мы внутри называли «каскадный беспорядок». Инженеры SRE утонули в уведомлениях о событиях, очереди стали нестабильными, дублирование сбоев сборки было обычным явлением. Когда задача заканчивалась неполностью или возникала непредвиденная ситуация, требовалось вмешательство человека. Мы столкнулись с «циклом CVE ада»: неважно, как усердно работала команда, инфраструктура постоянно боролась с конфигурационным дрейфом и деградацией вместо того, чтобы опережать события.
Factory 2.0, приводимая в действие тем, что мы называем DriftlessAF, — это наш ответ на эту проблему. Это самоисправляющаяся система сборки, которая накладывает агентивную, управляемую искусственным интеллектом сверку на нашу существующую детерминированную автоматизацию. Конкретно это означает:
- Цикл сверки: Вместо реакции на отдельные события DriftlessAF постоянно сравнивает желаемое состояние с фактическим и работает над закрытием разрыва всякий раз, когда объявляется CVE, поступает новая версия пакета из источника, внедряется новая лучшая практика или устанавливается другой критерий.
- Постоянная очередь работ: Большое количество ботов-сверщиков постоянно получают задания из общей очереди, приводя в соответствие состояние, обнаруженное из хранилищ кода и источников безопасности, к целевому состоянию.
- Избыточность по проектированию: Поскольку каждая задача работает на достижение определённого конечного состояния, а не выполняет одноразовое действие, неудачную задачу можно просто отбросить или повторить. Система в конечном итоге сходится к правильному результату, и не требуется, чтобы каждый шаг прошёл с первой попытки.
- Искусственный интеллект там, где он приносит пользу: Боты-сверщики используют искусственный интеллект специально для работы с неструктурированными решениями, которые традиционная автоматизация не могла обработать — такими как рассуждения о вновь добавленном компоненте в промежуточном выпуске или обратный перенос исправления CVE в более старую версию пакета — всё ещё работая через высокоструктурированные проверяемые инструменты, чтобы цикл не заблуждался в плохих результатах. Более того, система учится на предыдущих успехах, например на исправлении старой версии библиотеки, прошедшей тест обратного переноса. Она использует это знание для информирования будущих исправлений для других старых версий. Со временем система становится всё более независимой и мощной в решении сложных задач.
Ценность здесь в том, что искусственный интеллект впитывает операционные трудозатраты — простые решения, детальную сортировку и тысячи небольших решений — которые раньше были узким местом в скорости пересборки.
Почему эта скорость имеет значение
Модель угроз изменилась, и скорость в масштабе — это всё. Злоумышленники всё чаще пользуются теми же инструментами искусственного интеллекта для обнаружения уязвимостей, создания эксплойтов и сложной цепочки эксплойтов для эффективных атак. ИИ может сканировать графики зависимостей, объединять слабые места и создавать работающий эксплойт намного быстрее, чем когда-либо мог бы сделать человеческий злоумышленник. Когда время цикла атакующего сжимается, время цикла защитника должно сжаться как минимум на столько же.
Скорость пересборки — это то, что сохраняет каталог в безопасности. Каждый час, на который мы сокращаем время между изменением в источнике и пересобранным, подписанным, проверенным образом — это час, с которым у злоумышленника нет возможности работать. Удвоение нашего выпуска с 500 миллионов до 1 миллиарда манифестов сборки за шесть месяцев доказывает, что цикл сверки работает на скорости, которая правдоподобно может поспеть за развитием ландшафта угроз.
Агентивный и автоматизированный характер Chainguard Factory также позволяет нашей инженерной команде выступать экспертами для агентов, одобрять предлагаемые изменения и сосредоточиться на дальнейших улучшениях инфраструктуры фабрики, качества выходных данных и общего объёма всего, что строит и поддерживает Chainguard Factory.
Что дальше
Мы не замедляемся. Команда продолжает расширять DriftlessAF, наш основной фреймворк с открытым исходным кодом в Chainguard Factory, добавляя больше ботов-сверщиков, больше источников, питающих очередь работ, и больше каталога, работающего через цикл самоисцеления вместо старого пути, управляемого событиями. И поскольку ядро DriftlessAF теперь имеет открытый исходный код, другие команды, столкнувшиеся со своими собственными массивными проблемами автоматизации, могут строить на основе того, что мы узнали, вместо того чтобы начинать с нуля.
