소개
아티팩트 증명은 빌드한 소프트웨어에 대해 수정할 수 없는 출처 및 무결성 보장을 생성할 수 있는 좋은 방법입니다.
기본적으로 증명은 GitHub의 증명 API에 저장되며, 증명을 확인하러 갈 때 gh attestation verify
가 쿼리합니다. 또한 이 명령은 GitHub의 서버에 연결하여 증명을 확인하는 데 사용할 업데이트된 키 자료를 확인합니다.
이 명령은 인터넷에 연결하지 않고도 작동할 수 있지만 신뢰할 수 있는 루트의 증명 번들 및 키 자료를 수동으로 입력해야 합니다.
이 가이드를 시작하기 전에 아티팩트 증명을 생성하여 빌드해야 합니다. 아티팩트 증명을 사용하여 빌드의 출처 설정을(를) 참조하세요.
1단계: 증명 번들 다운로드
먼저 증명 API에서 증명 번들을 가져옵니다.
온라인 컴퓨터에서 다음 명령을 사용하여 수행할 수 있습니다.
gh attestation download PATH/TO/YOUR/BUILD/ARTIFACT-BINARY -R ORGANIZATION_NAME/REPOSITORY_NAME
gh attestation download PATH/TO/YOUR/BUILD/ARTIFACT-BINARY -R ORGANIZATION_NAME/REPOSITORY_NAME
다음은 해당 명령의 출력 예시입니다.
Wrote attestations to file sha256:ae57936def59bc4c75edd3a837d89bcefc6d3a5e31d55a6fa7a71624f92c3c3b.jsonl.
Any previous content has been overwritten
The trusted metadata is now available at sha256:ae57936def59bc4c75edd3a837d89bcefc6d3a5e31d55a6fa7a71624f92c3c3b.jsonl
2단계: 신뢰할 수 있는 루트 다운로드
다음으로 신뢰할 수 있는 루트에서 키 자료를 가져옵니다.
아티팩트 증명은 퍼블릭 리포지토리에 대해 Sigstore 공공재 인스턴스를 사용하고 프라이빗 리포지토리에 대해 GitHub의 Sigstore 인스턴스를 사용합니다. 하나의 명령을 사용하여 신뢰할 수 있는 루트를 모두 가져올 수 있습니다.
gh attestation trusted-root > trusted_root.jsonl
gh attestation trusted-root > trusted_root.jsonl
오프라인 환경에서 신뢰할 수 있는 루트 정보 업데이트
서명된 새 자료를 오프라인 환경으로 가져올 때마다 새 trusted_root.jsonl
파일을 생성하는 것이 가장 좋습니다.
trusted_root.jsonl
의 키 자료에는 기본 제공 만료 날짜가 없으므로 신뢰할 수 있는 루트 파일을 생성하기 전에 서명된 모든 항목은 계속해서 성공적으로 확인됩니다. 파일이 생성된 후 서명된 모든 항목은 Sigstore 인스턴스가 키 자료를 회전할 때까지 확인되며, 이는 일반적으로 일년에 몇 번 발생합니다. 신뢰할 수 있는 루트 파일을 마지막으로 생성한 이후 키 자료가 해지되었는지 알 수 없습니다.
3단계: 오프라인 확인 수행
이제 아티팩트 오프라인을 확인할 준비가 되었습니다.
오프라인 환경으로 다음 항목을 가져와야 합니다.
- GitHub CLI
- 아티팩트
- 번들 파일
- 신뢰할 수 있는 루트 파일
그런 다음, 다음 명령을 사용하여 오프라인 확인을 수행할 수 있습니다.
gh attestation verify PATH/TO/YOUR/BUILD/ARTIFACT-BINARY -R ORGANIZATION_NAME/REPOSITORY_NAME --bundle sha256:ae57936def59bc4c75edd3a837d89bcefc6d3a5e31d55a6fa7a71624f92c3c3b.jsonl --custom-trusted-root trusted_root.jsonl
gh attestation verify PATH/TO/YOUR/BUILD/ARTIFACT-BINARY -R ORGANIZATION_NAME/REPOSITORY_NAME --bundle sha256:ae57936def59bc4c75edd3a837d89bcefc6d3a5e31d55a6fa7a71624f92c3c3b.jsonl --custom-trusted-root trusted_root.jsonl
결론
이제 오프라인 환경에서 아티팩트 증명을 확인합니다. 오프라인 환경에 서명된 새 아티팩트를 도입할 때마다 신뢰할 수 있는 새 루트를 가져오는 것이 좋습니다.