Chainloop е хранилище за доказателства с отворен код за веригата за доставки на софтуер. Инструмент за команден ред се изпълнява в рамките на конвейер на GitHub Actions, GitLab, Jenkins или Dagger, събира генерираното от компилацията, качва тези файлове в адресируемо по съдържание хранилище и реферира всеки от тях в подписано in-toto удостоверение. in-toto е спецификация за записване на това кой кой етап от дадена компилация е изпълнил, така че записът да може да бъде проверен впоследствие.

Екипите по съответствие и сигурност получават контролна равнина, където пристига всичко това, вече подписано, независимо кой доставчик на непрекъсната интеграция го е генерирал.

Пропуските, които се попълват, се забелязват лесно в конвейер, в който липсва това решение. Дадена компилация генерира спецификация на материалите (BoM), описваща всяка зависимост в изданието, SARIF файл, записващ констатациите на статичния анализатор, отчет за покритието, препратка към контейнерен образ и сканиране от какъвто и да е търговски инструмент, закупен от групата по сигурност миналата година.

Всеки файл попада на различно място. Нищо подписано не свързва нито един от тях с версията (commit), която ги е създала, така че когато шест месеца по-късно клиент попита коя версия на дадена библиотека за компресиране е доставена в конкретно издание, някой трябва да рови в регистрационните файлове на компилацията, за да възстанови отговор, който не може да провери.

Договорът налага изпълнението

Договорът за работен процес (Workflow Contract) декларира какво трябва да предаде една компилация: кои материали, каква информация за компилацията и средата, в която трябва да се изпълнява работният процес.

Екипите по съответствие и сигурност съставят договора, а Chainloop проверява дали изработването на артефактите и удостоверяването отговарят на него. Така конвейер, който спре да излъчва спецификация на материалите, престава да удовлетворява договора. Политиките Rego, написани на езика, използван от Open Policy Agent, се прикрепват към същите тези договори. Те се оценяват автоматично и техните резултати се записват в удостоверението, преди то да бъде подписано и съхранено, така че заключението за дадена компилация се движи в подписания запис, вместо да стои в табло за управление, което някой може да редактира по-късно.

Седемнадесет именувани формата на доказателства получават първокласна поддръжка, а пълният каталог е още по-дълъг. Сред тях са CycloneDX и SPDX спецификации на материалите, OpenVEX, четирите типа CSAF документи, SARIF, ZAP DAST резултати, BlackDuck SCA изходни данни, PrismaCloud Twistcli сканирания, GitLab отчети за сигурност, JUnit резултати, JaCoCo XML покритие, Helm диаграми и препратки към контейнерни образи. Всичко останало влиза под една от четирите общи категории като персонализиран тип доказателство – например доклад за одобрение в JSON формат или като двойки метаданни ключ-стойност.

Подписването също не е обвързано само с един метод: доказателствата могат да бъдат подписани чрез Sigstore или чрез собствена инфраструктура с публичен ключ (PKI) на организацията, включително AWS KMS или Keyfactor, което е важно за всеки, чиито ключове трябва да останат вътрешни.

Две аудитории, една точка на интеграция

Артефактите и доказателствата могат да бъдат маршрутизирани към OCI регистър или облачно блоково съхранение, изпратени към Dependency-Track или Guac за анализ на спецификацията на материалите и оповестени в Jira, Discord или Slack. Замяната на бекенда за анализ не изисква промяна в конвейера, тъй като той комуникира единствено с инструмента за изграждане.

Екипите по съответствие и сигурност дефинират договорите, изготвят политиките, настройват тези интеграции и притежават достъп до контролната равнина. Екипите за разработка получават различно предложение.

Регламенти като FedRamp, Изпълнителна заповед 14028 в САЩ, Законодателният акт на ЕС за киберустойчивост и Актът за цифрова оперативна устойчивост (DORA) превръщат въпросите за това какво е доставено във въпроси, на които някой трябва да отговори в кратки срокове. Проектът публикува ръководства за Законодателния акт за киберустойчивост и за SLSA – рамката за веригата за доставки, за чието ниво 3 е изграден този единствен източник на истина. Ръководството за FedRamp е отбелязано като предстоящо.

Инструментът за команден ред сочи към хостван екземпляр на Chainloop по подразбиране, което е удобно за тестване, но означава, че доказателствата напускат вашата инфраструктура. Стартирането на Helm диаграмата във вашия собствен Kubernetes клъстер връща контролната равнина обратно вътре в организацията.

Chainloop е достъпен безплатно в GitHub.