InfoGrab DocsInfoGrab Docs

SLSA 레벨 3 출처 증명(Provenance Attestation)

요약

이 기능의 사용 가능 여부는 기능 플래그로 제어됩니다. GitLab은 SLSA 레벨 3 호환 출처 증명을 생성할 수 있습니다. 증명에 대한 자세한 내용은 GitLab SLSA 출처 명세를 참조하세요. 컨테이너 또는 아티팩트에 대한 증명이 이루어지려면 다음 조건을 충족해야 합니다:

Status: Experiment

히스토리
  • GitLab 18.3에서 slsa_provenance_statement라는 플래그와 함께 도입됨. 기본적으로 비활성화됨.

이 기능의 사용 가능 여부는 기능 플래그로 제어됩니다. 자세한 내용은 히스토리를 참조하세요. 이 기능은 테스트 용도로 사용할 수 있지만, 프로덕션 환경에서는 아직 사용할 준비가 되지 않았습니다.

GitLab은 SLSA 레벨 3 호환 출처 증명을 생성할 수 있습니다. 레벨 2와 레벨 3 출처 증명의 주요 차이점은 격리 및 "위조 불가" 요구 사항입니다.

증명에 대한 자세한 내용은 GitLab SLSA 출처 명세를 참조하세요.

전제 조건#

컨테이너 또는 아티팩트에 대한 증명이 이루어지려면 다음 조건을 충족해야 합니다:

  • 빌드와 연결된 프로젝트가 공개(public) 상태여야 합니다. 이 요구 사항은 Rekor에 정보가 실수로 공개되는 것을 방지하기 위해 적용됩니다.

  • 빌드는 build Stage를 사용해야 합니다.

  • 프로젝트에 대해 slsa_provenance_statement 기능 플래그가 활성화되어 있어야 합니다.

아티팩트에 대한 증명 생성#

빌드에서 생성된 모든 아티팩트에 대한 증명을 생성하려면:

  • ATTEST_BUILD_ARTIFACTS CI/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_IMAGEStrue로 설정합니다.

  • 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.

SLSA 레벨 3 출처 증명(Provenance Attestation)

GitLab v19.1
Tier: Ultimate
Offering: GitLab.com
원문 보기
요약

이 기능의 사용 가능 여부는 기능 플래그로 제어됩니다. GitLab은 SLSA 레벨 3 호환 출처 증명을 생성할 수 있습니다. 증명에 대한 자세한 내용은 GitLab SLSA 출처 명세를 참조하세요. 컨테이너 또는 아티팩트에 대한 증명이 이루어지려면 다음 조건을 충족해야 합니다:

Status: Experiment

히스토리
  • GitLab 18.3에서 slsa_provenance_statement라는 플래그와 함께 도입됨. 기본적으로 비활성화됨.

이 기능의 사용 가능 여부는 기능 플래그로 제어됩니다. 자세한 내용은 히스토리를 참조하세요. 이 기능은 테스트 용도로 사용할 수 있지만, 프로덕션 환경에서는 아직 사용할 준비가 되지 않았습니다.

GitLab은 SLSA 레벨 3 호환 출처 증명을 생성할 수 있습니다. 레벨 2와 레벨 3 출처 증명의 주요 차이점은 격리 및 "위조 불가" 요구 사항입니다.

증명에 대한 자세한 내용은 GitLab SLSA 출처 명세를 참조하세요.

전제 조건#

컨테이너 또는 아티팩트에 대한 증명이 이루어지려면 다음 조건을 충족해야 합니다:

  • 빌드와 연결된 프로젝트가 공개(public) 상태여야 합니다. 이 요구 사항은 Rekor에 정보가 실수로 공개되는 것을 방지하기 위해 적용됩니다.

  • 빌드는 build Stage를 사용해야 합니다.

  • 프로젝트에 대해 slsa_provenance_statement 기능 플래그가 활성화되어 있어야 합니다.

아티팩트에 대한 증명 생성#

빌드에서 생성된 모든 아티팩트에 대한 증명을 생성하려면:

  • ATTEST_BUILD_ARTIFACTS CI/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_IMAGEStrue로 설정합니다.

  • 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.