Введение
Аттестации артефактов — отличный способ создания нефиксируемых подтверждений и гарантий целостности создаваемого программного обеспечения.
Но помните, что само по себе артефакты предоставляют ссылки, такие как инструкции сборки, с помощью которого создан артефакт, который соответствует SLSA версии 1.0 уровня сборки 2. Чтобы принять информированное решение о рисках, вы можете следовать этим ссылкам и оценивать эти инструкции сборки.
Это можно сделать дальше, требуя, чтобы сборки использовали известные, проверенные инструкции по сборке. Отличный способ сделать это заключается в том, чтобы создать сборку в многократно используемый рабочий процесс, который многие репозитории в вашей организации совместно используются. Повторно используемые рабочие процессы могут обеспечить изоляцию между процессом сборки и вызывающим рабочим процессом, чтобы соответствовать уровню сборки SLSA версии 1.0.
Перед началом работы с этим руководством необходимо ознакомиться со следующими сведениями:
- Создание аттестаций артефактов. См. раздел "Использование аттестаций артефактов для установления происхождения сборок".
- Написание и использование повторно используемых рабочих процессов. См. раздел "Повторное использование рабочих процессов".
Шаг 1. Настройка сборок
Во-первых, необходимо создать сборку как с аттестациями артефактов, так и с повторно используемым рабочим процессом.
Создание с помощью повторно используемых рабочих процессов
Если вы еще не используете повторно используемые рабочие процессы для сборки программного обеспечения, вам потребуется выполнить шаги сборки и переместить их в повторно используемый рабочий процесс. Дополнительные сведения о том, как записывать и вызывать повторно используемый рабочий процесс, см. в разделе "Повторное использование рабочих процессов".
Создание с аттестациями артефактов
Повторно используемый рабочий процесс, используемый для сборки программного обеспечения, также должен создавать аттестации артефактов для установления подтверждения сборки. Дополнительные сведения см. в разделе Использование аттестаций артефактов для установления происхождения сборок.
При использовании повторно используемого рабочего процесса для создания аттестаций артефактов вызов рабочий процесс и повторно используемый рабочий процесс должны иметь следующие разрешения.
permissions: attestations: write contents: read id-token: write
permissions:
attestations: write
contents: read
id-token: write
Если вы создаете образы контейнеров, вам также потребуется включить packages: write
разрешение.
Шаг 2. Проверка аттестаций артефактов, созданных с помощью повторно используемых рабочих процессов
Чтобы проверить аттестации артефактов, созданных с помощью сборок, можно использовать gh attestation verify
из интерфейса командной строки GitHub.
Для gh attestation verify
выполнения команды требуется --owner
использовать с ней флаги или --repo
флаги. Эти флаги выполняют две действия.
- Они говорят
gh attestation verify
, откуда получить аттестацию. Это всегда будет рабочий процесс вызывающего объекта. - Они говорят
gh attestation verify
, откуда пришел рабочий процесс, из которого была подписана подпись. Это всегда будет рабочий процесс, использующийattest-build-provenance
действие, которое может быть повторно используемым рабочим процессом.
С помощью команды можно использовать необязательные флаги gh attestation verify
.
- Если повторно используемый рабочий процесс не находится в том же репозитории, что и рабочий процесс вызывающего объекта, используйте
--signer-repo
флаг, чтобы указать репозиторий, содержащий повторно используемый рабочий процесс. - Если требуется подписать аттестацию артефактов с определенным рабочим процессом, используйте
--signer-workflow
флаг, чтобы указать файл рабочего процесса, который следует использовать.
Например, если ваш вызывающий рабочий процесс и ORGANIZATION_NAME/REPOSITORY_NAME/.github/workflows/calling.yml
используется REUSABLE_ORGANIZATION_NAME/REUSABLE_REPOSITORY_NAME/.github/workflows/reusable.yml
, можно сделать следующее:
gh attestation verify -o ORGANIZATION_NAME --signer-repo REUSABLE_ORGANIZATION_NAME/REUSABLE_REPOSITORY_NAME PATH/TO/YOUR/BUILD/ARTIFACT-BINARY
gh attestation verify -o ORGANIZATION_NAME --signer-repo REUSABLE_ORGANIZATION_NAME/REUSABLE_REPOSITORY_NAME PATH/TO/YOUR/BUILD/ARTIFACT-BINARY
Или если вы хотите указать точный рабочий процесс:
gh attestation verify -o ORGANIZATION_NAME --signer-workflow REUSABLE_ORGANIZATION_NAME/REUSABLE_REPOSITORY_NAME/.github/workflows/reusable.yml PATH/TO/YOUR/BUILD/ARTIFACT-BINARY
gh attestation verify -o ORGANIZATION_NAME --signer-workflow REUSABLE_ORGANIZATION_NAME/REUSABLE_REPOSITORY_NAME/.github/workflows/reusable.yml PATH/TO/YOUR/BUILD/ARTIFACT-BINARY
Заключение
Теперь вы создаете и подписываете артефакты в многократно используемый рабочий процесс, который может обеспечить изоляцию, необходимую для SLSA версии 1.0 уровня сборки 3. Вы можете проверить, что артефакты создаются с помощью известных, проверенных инструкций по сборке, требуя создания артефакта с определенным рабочим процессом, повторно используемым или нет.