Безопасная
и непрерывная
доставка
Просто, надежно, быстро

trdl — Open Source-решение, которое обеспечивает безопасный канал доставки обновлений от Git-репозитория до хоста пользователя.

Команда проекта выпускает новые версии ПО и переключает их в каналах обновлений. Git используется как единственный источник правды, Vault — как инструмент верификации операций, наполнения и сопровождения TUF-хранилища.

Пользователь выбирает канал обновлений, использует и непрерывно получает актуальную версию ПО из TUF-хранилища.

Какие проблемы решает trdl
  • Ограниченность continuous delivery

    Непрерывная доставка хорошо работает с SaaS-продуктами, но трудно найти инструмент, который так же удобно доставлял бы обновления ПО на хосты.

  • Сложность организации безопасной доставки

    Почему это сложно:

    • Релизы и переключение каналов обновлений должны выполняться на основании совместного решения команды (кворума).
    • Система должна защищать от несанкционированного доступа и компрометации данных.
    • На систему не должны влиять человеческие ошибки, в том числе нарушение регламента.
  • Ограниченность пакетных менеджеров

    Есть множество пакетных менеджеров, но у всех типичные недостатки:

    • Сложно создавать пакеты.
    • Пользователь всё должен делать сам: добавлять источник пакетов, находить пакет, устанавливать, обновлять, удалять.
    • Для каждой платформы нужен свой менеджер.
Компоненты и их функции
trdl-сервер
Отвечает за безопасное наполнение и сопровождение TUF-репозитория.
  • Релиз новых версий ПО.

  • Публикация каналов обновлений.

  • Верификация всех операций с помощью кворума GPG-подписей.

  • Непрерывная ротация ключей шифрования и метаданных TUF-репозитория.

trdl-клиент
Отвечает за надёжную доставку обновлений и использование ПО.
  • Обновление версий ПО через выбранные каналы.

  • Верификация обновлений из доверенного TUF-репозитория.

  • Различные варианты использования и обновления ПО.

Как работает trdl
Релиз новой версии

Разработчик создает Git-тег с новой версией ПО (v1.0.1) и подписывает его своей GPG-подписью.

Кворум проекта подписывает Git-тег своими GPG-подписями.

Инициируется процесс сборки релиза. Из CI-системы имя Git-тега поступает в Vault.

Vault проверяет, содержит ли Git-тег минимальный набор разрешённых GPG-подписей. Если все необходимые подписи есть, Vault инициирует сборку.

Vault подписывает результат сборки (артефакт). Для подписи используются ключи, которые Vault сам же автоматически генерирует и хранит в зашифрованном виде в своём хранилище. Никто не может получить доступ к этим ключам.

Результат сборки вместе с метаданными загружаются в TUF-репозиторий. Однако клиент продолжает работать со старой версией ПО (v1.0.0) до тех пор, пока новая версия не будет опубликована в выбранном канале обновлений.

Публикация каналов

Разработчик изменяет конфигурацию каналов обновлений в Git и делает коммит со своей GPG-подписью.

Кворум проекта подписывает коммит своими GPG-подписями.

Инициируется процесс публикации каналов. Из CI-системы коммит поступает в Vault.

Vault проверяет, содержит ли коммит минимальный набор разрешённых GPG-подписей.

Vault подписывает обновленный список каналов и связанных с ними релизов. Для подписи используются ключи, которые Vault сам же автоматически генерирует и хранит в зашифрованном виде в своём хранилище. Никто не может получить доступ к ключам.

Обновленные каналы вместе с метаданными загружаются в TUF-репозиторий.

Канал опубликован. Новая версия ПО становится доступной для клиента, использующего этот канал обновлений.

Преимущества
  • Каналы обновления вместо версий ПО

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

  • Все операции подтверждаются GPG-кворумом

    В trdl реализован механизм верификации «M of N»: каждый коммит в Git, связанный с релизом или публикацией каналов, должен быть подписан минимальным количеством доверенных GPG-ключей.

  • Действительно безопасная доставка

    В основе системы безопасности trdl три элемента: TUF-репозиторий, плагин Vault и Git.

    • TUF-репозиторий защищает от несанкционированного доступа к ПО, от компрометации и потери ключей. Отвечает за актуальность, согласованность и целостность данных.
    • Vault — платформа для безопасного запуска trdl-сервера, которая обеспечивает безопасное управление ключами шифрования.
    • Git хранит код, конфигурации, а также GPG-подписи коммитов для верификации операций.

    Подробнее о функциях каждого элемента — в разделе «Безопасность».

  • Кроссплатформенный клиент
    • Linux, macOS, Windows.
    • Все популярные shell-оболочки.