Skip to main content

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

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

Необходимые компоненты

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

  • Преимущества использования и безопасности аттестаций артефактов. См . раздел AUTOTITLE.
  • Создание аттестаций артефактов. См . раздел AUTOTITLE.
  • Написание и использование повторно используемых рабочих процессов. См . раздел AUTOTITLE.

Шаг 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