아티팩트 증명과 재사용 가능한 워크플로우로 SLSA v1 Build Level 3 달성하기

아티팩트 증명과 재사용 가능한 워크플로우로 SLSA v1 Build Level 3 달성하기

재사용 가능한 워크플로우와 아티팩트 증명으로 소프트웨어를 빌드하면 공급망 보안을 간소화하고 SLSA v1.0 Build Level 3을 달성하는 데 도움이 될 수 있어요.

출처: 문서

본문

재사용 가능한 워크플로우와 아티팩트 증명으로 소프트웨어를 빌드하면 공급망 보안을 간소화하고 SLSA v1.0 Build Level 3을 달성하는 데 도움이 될 수 있어요.

사전 요구 사항

이 가이드를 시작하기 전에 다음에 익숙해야 합니다:

1단계: 빌드 구성하기

먼저 아티팩트 증명과 재사용 가능한 워크플로우 모두로 빌드해야 해요.

재사용 가능한 워크플로우로 빌드하기

아직 재사용 가능한 워크플로우로 소프트웨어를 빌드하고 있지 않다면, 빌드 단계를 가져와 재사용 가능한 워크플로우로 옮겨야 합니다.

아티팩트 증명으로 빌드하기

소프트웨어를 빌드하는 데 사용하는 재사용 가능한 워크플로우는 빌드 출처를 확립하기 위해 아티팩트 증명도 생성해야 합니다.

재사용 가능한 워크플로우를 사용해 아티팩트 증명을 생성할 때, 호출 워크플로우와 재사용 가능한 워크플로우 모두 다음 권한이 필요합니다.

permissions:
  attestations: write
  contents: read
  id-token: write

컨테이너 이미지를 빌드하는 경우 packages: write 권한도 포함해야 합니다.

2단계: 재사용 가능한 워크플로우로 빌드된 아티팩트 증명 검증하기

빌드로 생성된 아티팩트 증명을 검증하려면 GitHub CLI에서 gh attestation verify를 사용할 수 있어요.

gh attestation verify 명령에는 --owner 또는 --repo 플래그 중 하나가 필요합니다. 이 플래그들은 두 가지 작업을 합니다.

  • gh attestation verify에 증명을 가져올 위치를 알려줍니다. 이것은 항상 호출자 워크플로우입니다.
  • gh attestation verify에 서명을 수행한 워크플로우가 어디서 왔는지 알려줍니다. 이것은 항상 attest 액션을 사용하는 워크플로우이며, 재사용 가능한 워크플로우일 수 있어요.

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-workflow REUSABLE_ORGANIZATION_NAME/REUSABLE_REPOSITORY_NAME/.github/workflows/reusable.yml PATH/TO/YOUR/BUILD/ARTIFACT-BINARY

더 알아보기 (Learn more)