SLSA 레벨 3 출처 증명(Provenance Attestation)
GitLab v19.1Offering: GitLab.com
이 기능의 사용 가능 여부는 기능 플래그로 제어됩니다. GitLab은 SLSA 레벨 3 호환 출처 증명을 생성할 수 있습니다. 증명에 대한 자세한 내용은 GitLab SLSA 출처 명세를 참조하세요. 컨테이너 또는 아티팩트에 대한 증명이 이루어지려면 다음 조건을 충족해야 합니다:
Status: Experiment
이 기능의 사용 가능 여부는 기능 플래그로 제어됩니다. 자세한 내용은 히스토리를 참조하세요. 이 기능은 테스트 용도로 사용할 수 있지만, 프로덕션 환경에서는 아직 사용할 준비가 되지 않았습니다.
GitLab은 SLSA 레벨 3 호환 출처 증명을 생성할 수 있습니다. 레벨 2와 레벨 3 출처 증명의 주요 차이점은 격리 및 "위조 불가" 요구 사항입니다.
증명에 대한 자세한 내용은 GitLab SLSA 출처 명세를 참조하세요.
전제 조건#
컨테이너 또는 아티팩트에 대한 증명이 이루어지려면 다음 조건을 충족해야 합니다:
-
빌드와 연결된 프로젝트가 공개(public) 상태여야 합니다. 이 요구 사항은 Rekor에 정보가 실수로 공개되는 것을 방지하기 위해 적용됩니다.
-
빌드는
buildStage를 사용해야 합니다. -
프로젝트에 대해
slsa_provenance_statement기능 플래그가 활성화되어 있어야 합니다.
아티팩트에 대한 증명 생성#
빌드에서 생성된 모든 아티팩트에 대한 증명을 생성하려면:
-
ATTEST_BUILD_ARTIFACTSCI/CD 변수를true로 설정합니다. -
아티팩트는 100 MB를 초과하지 않아야 합니다.
예를 들어, GitLab은 다음 CI/CD job의 아티팩트에 대한 증명을 생성합니다:
build-job:
stage: build
variables:
ATTEST_BUILD_ARTIFACTS: true
script:
- echo "Hello, $GITLAB_USER_LOGIN!"
- echo "Hello, $GITLAB_USER_LOGIN!" > test.txt
artifacts:
paths:
- test.txt
컨테이너에 대한 증명 생성#
컨테이너에 대한 증명을 생성하려면:
-
CI/CD 변수
ATTEST_CONTAINER_IMAGES를true로 설정합니다. -
IMAGE_DIGEST변수를 다음 형식의 유효한 SHA256 참조로 설정합니다:
sha256:9bf00f5090086aba643d21f8ed663576855add63b7b780b4eaffc5124812c3c9
org/project-name@sha256:9bf00f5090086aba643d21f8ed663576855add63b7b780b4eaffc5124812c3c9
9bf00f5090086aba643d21f8ed663576855add63b7b780b4eaffc5124812c3c9
예를 들어, GitLab은 다음 CI/CD job에서 생성된 이미지에 대한 증명을 생성합니다:
build-dockerhub:
stage: build
variables:
ATTEST_CONTAINER_IMAGES: true
CI_REGISTRY: docker.io
DOCKER_IMAGE_NAME: sroqueworcel/test-slsa-sbom:stable
script:
- echo $DOCKER_REGISTRY_PASSWORD | docker login $CI_REGISTRY -u $DOCKER_REGISTRY_USER --password-stdin
- docker build -t $DOCKER_IMAGE_NAME .
- docker push $DOCKER_IMAGE_NAME
- IMAGE_DIGEST="$(docker inspect --format='{{index .Id}}' "$DOCKER_IMAGE_NAME")"
- echo "IMAGE_DIGEST=$IMAGE_DIGEST" >> build.env
artifacts:
reports:
dotenv: build.env
증명 보기#
성공한 증명은 증명 페이지에 저장됩니다. 증명을 보려면:
-
상단 바에서 검색 또는 이동을 선택하고 프로젝트를 찾습니다.
-
왼쪽 사이드바에서 빌드 > 증명을 선택합니다.
증명이 성공하지 못한 경우 CI/CD job 로그에 오류가 표시됩니다.
증명 API를 사용하여 성공한 증명을 가져올 수도 있습니다.
증명 검증#
glab 명령줄 인터페이스를 사용하여 아티팩트와 컨테이너 모두를 검증할 수 있습니다.
예를 들면:
- 검증 성공 시:
% glab attestation verify ~/file-or-container -p org/project-name
Artifact provenance successfully verified. Signatures confirm file.txt was attested by org/project-name
- 검증 실패 시:
% glab attestation verify ~/file.txt -p org/project-name
ERROR
Unable to find a provenance statement for 1f9e5808a340916aa5618ee13a893dcf9d4f7e2d42a254be0f7eb06a094ab8ea.