Что это такое?
Chainloop — это хранилище свидетельств (evidence store) с открытым исходным кодом для аттестаций цепочки поставок программного обеспечения (Software Supply Chain), спецификаций программного обеспечения (Software Bill of Materials, SBOM), VEX, SARIF, отчётов по контролю качества и многого другого. С помощью Chainloop команды по безопасности, соответствию требованиям и управлению рисками могут определять политики безопасности и соответствия, указывать, какие свидетельства и артефакты они хотят получать и где их хранить. Разработчики при этом избавлены от всей этой сложности: им достаточно следовать простым инструкциям о том, что нужно предоставить при инструментировании CI/CD-конвейеров.
Чтобы узнать больше о мотивации проекта, обратитесь к нашей документации.
Как это работает?
Единый соответствующий требованиям источник истины
Создавайте и храните метаданные аттестаций и артефакты через единую точку интеграции — независимо от того, какой CI/CD-провайдер вы используете.
В результате формируется единый источник истины, соответствующий уровню SLSA 3, для метаданных, артефактов и аттестаций, построенный на открытых стандартах: Sigstore, in-toto, SLSA и OCI.
Chainloop также следит за тем, чтобы создание артефактов и аттестаций соответствовало лучшим практикам и требованиям, заявленным в связанном контракте рабочего процесса (Workflow Contract).
Декларативная аттестация на основе контрактов
Ключевая особенность Chainloop состоит в том, что интеграции с CI/CD описываются через контракты рабочих процессов (Workflow Contracts).
Контракт рабочего процесса даёт командам по соответствию требованиям и безопасности полный контроль над тем, какие данные (информация о сборке, материалы) должны поступать в рамках аттестации, и над средой, в которой эти рабочие процессы должны выполняться. Это обеспечивает простой и удобный в сопровождении способ распространения и применения требований во всей организации.
Можно представить это как API для цепочки поставок программного обеспечения вашей организации — инструмент, с помощью которого обе стороны, команды разработки и команды по соответствию требованиям и безопасности, могут эффективно взаимодействовать.
Политики как код
Команды по соответствию требованиям и безопасности могут создавать политики на языке Rego и привязывать их к контрактам рабочих процессов. Эти политики будут автоматически оцениваться, а их результаты добавятся в аттестацию до подписания и сохранения.
Интеграция с инструментами, которые вы уже используете
Операторы могут настраивать интеграции со сторонними инструментами: например, Dependency-Track или Guac для анализа SBOM, а также использовать в качестве бэкенда хранилища реестр OCI или облачное хранилище объектов — для размещения полученных артефактов, свидетельств и метаданных аттестаций.
Команды по соответствию требованиям и безопасности могут свободно комбинировать различные интеграции, не требуя от разработчиков никаких изменений с их стороны!
Чтобы узнать больше и ознакомиться со списком доступных интеграций, посетите ./devel/integrations.md[страницу интеграций].
Опыт, адаптированный под роли
Chainloop чётко разграничивает зоны ответственности, пользовательский опыт и функциональный охват двух основных ролей: команд по соответствию/безопасности и команд разработки.
Команды по соответствию требованиям и безопасности отвечают за определение контрактов рабочих процессов, создание политик, настройку интеграций со сторонними инструментами и имеют доступ к плоскости управления (control plane), где сосредоточены все инструменты безопасности цепочки поставок.
Команды разработки, в свою очередь, должны лишь подключить понятный инструмент создания аттестаций и следовать привычному рабочему процессу, чтобы убедиться в соответствии контракту, определённому командой SecOps. Никакого изучения in-toto, подписания, SLSA, OCI, API — ничего лишнего :)
Поддерживаемые типы свидетельств и материалов
В процессе аттестации можно прикреплять различные свидетельства и артефакты, которые будут загружены в адресуемое по содержимому хранилище (Content Addressable Storage, CAS) — там, где это применимо — и включены в подписанную аттестацию in-toto.
Chainloop поддерживает сбор следующих типов свидетельств. Полный список доступен на этой странице:
-
Attestation: существующие аттестации Chainloop.
-
Artifact Type: представляет программный артефакт.
-
Custom Evidence Type: произвольное свидетельство, не относящееся ни к одной другой категории — например, отчёт об утверждении в формате JSON и т. п.
-
Пары метаданных «ключ — значение»
Начало работы
Следуйте руководству по быстрому старту или подробному руководству по началу работы — там описано, как скачать и настроить Chainloop CLI и как развернуть Chainloop в кластере Kubernetes.
Установка интерфейса командной строки (CLI)
|
Примечание
|
Также можно скачать CLI со страницы релизов или собрать из исходного кода. |
Чтобы установить последнюю версию для macOS, Linux или Windows (через WSL), выберите один из следующих способов установки.
curl -sfL https://dl.chainloop.dev/cli/install.sh | bash -s -- --oss
|
Примечание
|
Чтобы установить корпоративную версию, опустите флаг |
Можно установить конкретную версию:
curl -sfL https://dl.chainloop.dev/cli/install.sh | bash -s -- --oss --version v1.7.0
А также задать путь установки (по умолчанию /usr/local/bin):
curl -sfL https://dl.chainloop.dev/cli/install.sh | bash -s -- --oss --path /my-path
Если в системе установлен cosign, помимо проверки контрольной суммы будет выполнена верификация подписи. Это поведение можно принудительно включить с помощью флага --force-verification.
curl -sfL https://dl.chainloop.dev/cli/install.sh | bash -s -- --oss --force-verification
Развёртывание Chainloop (необязательно)
Чтобы попробовать Chainloop, достаточно скачать CLI — по умолчанию он указывает на уже запущенный экземпляр Chainloop.
Вы также можете развернуть собственный экземпляр Chainloop в кластере Kubernetes с помощью этого Helm-чарта.
Настройка CLI (необязательно)
Если вы используете собственный экземпляр плоскости управления, укажите CLI на него с помощью команды chainloop config save.
chainloop config save \
--control-plane my-controlplane.acme.com \
--artifact-cas cas.acme.com
Аутентификация
Для аутентификации в плоскости управления выполните:
$ chainloop auth login
Завершение настройки
После входа в систему следуйте этим инструкциям, чтобы настроить свою учётную запись.
Документация
Чтобы узнать больше, посетите сайт документации проекта Chainloop: https://docs.chainloop.dev — там вы найдёте руководство по началу работы, ответы на часто задаваемые вопросы, примеры и многое другое.
Сообщество, обсуждения и поддержка
Участие в разработке
Хотите присоединиться? Мы рады вкладу от всех желающих.
Если вы готовы тестировать, писать код или помогать с документацией, следуйте инструкциям на странице Contributing. Соблюдайте наш Кодекс поведения.
Если не знаете, с чего начать, загляните в трекер задач — особенно в задачи с меткой Good first issue.
Журнал изменений
Следите за списком релизов, чтобы быть в курсе последних возможностей и изменений.
Лицензия
Chainloop распространяется под лицензией Apache License, Version 2.0. Подробнее см. в файле LICENSE.