Skip to main content

Использование аттестаций артефактов и повторно используемых рабочих процессов для достижения уровня сборки SLSA версии 3

Создание программного обеспечения с помощью многократно используемых рабочих процессов и аттестаций артефактов может упростить безопасность цепочки поставок и помочь вам достичь уровня сборки SLSA версии 1.0 3.

Note

Аттестации артефактов находятся в общедоступной бета-версии и подлежат изменению.

Введение

Аттестации артефактов — отличный способ создания нефиксируемых подтверждений и гарантий целостности создаваемого программного обеспечения.

Но помните, что само по себе артефакты предоставляют ссылки, такие как инструкции сборки, с помощью которого создан артефакт, который соответствует SLSA версии 1.0 уровня сборки 2. Чтобы принять информированное решение о рисках, вы можете следовать этим ссылкам и оценивать эти инструкции сборки.

Это можно сделать дальше, требуя, чтобы сборки использовали известные, проверенные инструкции по сборке. Отличный способ сделать это заключается в том, чтобы создать сборку в многократно используемый рабочий процесс, который многие репозитории в вашей организации совместно используются. Повторно используемые рабочие процессы могут обеспечить изоляцию между процессом сборки и вызывающим рабочим процессом, чтобы соответствовать уровню сборки SLSA версии 1.0.

Перед началом работы с этим руководством необходимо ознакомиться со следующими сведениями:

Шаг 1. Настройка сборок

Во-первых, необходимо создать сборку как с аттестациями артефактов, так и с повторно используемым рабочим процессом.

Создание с помощью повторно используемых рабочих процессов

Если вы еще не используете повторно используемые рабочие процессы для сборки программного обеспечения, вам потребуется выполнить шаги сборки и переместить их в повторно используемый рабочий процесс. Дополнительные сведения о том, как записывать и вызывать повторно используемый рабочий процесс, см. в разделе "Повторное использование рабочих процессов".

Создание с аттестациями артефактов

Повторно используемый рабочий процесс, используемый для сборки программного обеспечения, также должен создавать аттестации артефактов для установления подтверждения сборки. Дополнительные сведения см. в разделе Использование аттестаций артефактов для установления происхождения сборок.

При использовании повторно используемого рабочего процесса для создания аттестаций артефактов вызов рабочий процесс и повторно используемый рабочий процесс должны иметь следующие разрешения.

YAML
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 , можно сделать следующее:

Bash
gh attestation verify -o ORGANIZATION_NAME --signer-repo REUSABLE_ORGANIZATION_NAME/REUSABLE_REPOSITORY_NAME PATH/TO/YOUR/BUILD/ARTIFACT-BINARY

Или если вы хотите указать точный рабочий процесс:

Bash
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. Вы можете проверить, что артефакты создаются с помощью известных, проверенных инструкций по сборке, требуя создания артефакта с определенным рабочим процессом, повторно используемым или нет.