소개
아티팩트 증명은 빌드한 소프트웨어에 대해 수정할 수 없는 출처 및 무결성 보장을 생성할 수 있는 좋은 방법입니다.
그러나 아티팩트 증명은 그 자체로 SLSA v1.0 빌드 수준 2를 충족하는 아티팩트가 빌드된 빌드 지침과 같은 링크를 제공합니다. 정보에 입각한 위험 결정을 내리기 위해 이러한 링크를 따르고 해당 빌드 지침을 평가하는 것은 사용자의 몫입니다.
여기서 한 단계 더 나아가 알려지고 검증된 빌드 지침을 사용하도록 할 수도 있습니다. 이 작업을 수행하는 좋은 방법은 조직 전체의 많은 리포지토리가 공유하는 재사용 가능한 워크플로에서 빌드를 수행하는 것입니다. 재사용 가능한 워크플로는 빌드 프로세스와 호출 워크플로를 격리하여 SLSA v1.0 빌드 수준 3을 충족할 수 있습니다.
이 가이드를 시작하기 전에 다음 사항을 숙지해야 합니다.
- 아티팩트 증명을 생성하기. "아티팩트 증명을 사용하여 빌드의 출처 설정" 항목을 참조하세요.
- 재사용 가능한 워크플로를 작성하고 사용하기. "워크플로 다시 사용" 항목을 참조하세요.
1단계: 빌드 구성
먼저 아티팩트 증명과 재사용 가능한 워크플로를 모두 사용하여 빌드해야 합니다.
재사용 가능한 워크플로를 사용하여 빌드
재사용 가능한 워크플로를 사용하여 소프트웨어를 빌드하지 않은 경우, 빌드 단계를 수행하고 재사용 가능한 워크플로로 이동해야 합니다. 재사용 가능한 워크플로를 작성하고 호출하는 방법에 대한 자세한 내용은 "워크플로 다시 사용"을 참조하세요.
아티팩트 증명을 사용하여 빌드
소프트웨어를 빌드하는 데 사용하는 재사용 가능한 워크플로도 빌드 출처를 설정하기 위해 아티팩트 증명을 생성해야 합니다. 자세한 내용은 "아티팩트 증명을 사용하여 빌드의 출처 설정"을(를) 참조하세요.
재사용 가능한 워크플로를 사용하여 아티팩트 증명을 생성하는 경우 호출 워크플로와 재사용 가능한 워크플로 모두에 다음 권한이 있어야 합니다.
permissions: attestations: write contents: read id-token: write
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-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 v1.0 빌드 수준 3에 필요한 격리를 제공할 수 있습니다. 재사용 가능 여부와 상관없이 특정 워크플로로 아티팩트가 빌드되도록 하면 알려지고 검증된 빌드 지침으로 아티팩트가 빌드되었는지 확인할 수 있습니다.