증명 API
Offering: GitLab.com, GitLab Self-Managed, GitLab Dedicated
이 기능의 사용 가능 여부는 기능 플래그로 제어됩니다. 이 API를 사용하여 출처 증명과 상호 작용합니다. 일부 엔드포인트는 응답의 일부로 Sigstore 번들을 반환합니다. 지정된 프로젝트와 SHA-256 해시에 대한 모든 증명을 나열합니다.
이 기능의 사용 가능 여부는 기능 플래그로 제어됩니다. 자세한 내용은 히스토리를 참조하세요. 이 기능은 테스트 목적으로 사용 가능하지만, 프로덕션 사용에는 아직 준비되지 않았습니다.
이 API를 사용하여 출처 증명과 상호 작용합니다.
출처 증명#
일부 엔드포인트는 응답의 일부로 Sigstore 번들을 반환합니다. glab 또는 cosign을 사용하여 이를 검증할 수 있습니다. 출처에 대한 자세한 내용은 SLSA 출처 명세를 참조하세요.
모든 증명 목록 조회#
히스토리
- 18.5에서 도입.
지정된 프로젝트와 SHA-256 해시에 대한 모든 증명을 나열합니다.
GET /:id/attestations/:subject_digest
지원되는 속성:
| 속성 | 유형 | 필수 | 설명 |
|---|---|---|---|
id |
integer or string | yes | 프로젝트의 ID 또는 URL 인코딩된 경로 |
subject_digest |
string | yes | 아티팩트의 16진수 인코딩된 SHA-256 해시 |
요청 예시:
curl --request GET \
--url "https://gitlab.example.com/api/v4/projects/namespace%2fproject/attestations/5db1fee4b5703808c48078a76768b155b421b210c0761cd6a5d223f4d99f1eaa"
응답 예시:
[
{
"id": 1,
"iid": 1,
"created_at": "2025-10-07T20:59:27.085Z",
"updated_at": "2025-10-07T20:59:27.085Z",
"expire_at": "2027-10-07T20:59:26.967Z",
"project_id": 1,
"build_id": 1,
"status": "success",
"predicate_kind": "provenance",
"predicate_type": "https://slsa.dev/provenance/v1",
"subject_digest": "76c34666f719ef14bd2b124a7db51e9c05e4db2e12a84800296d559064eebe2c",
"download_url": "https://gitlab.example.com/api/v4/projects/1/attestations/1/download"
}
]
증명 다운로드#
히스토리
- 18.7에서 도입.
프로젝트와 증명 IID로 특정 출처 Sigstore 번들을 다운로드합니다. 번들 자체가 응답 본문으로 반환됩니다. 이 파일 형식에 대한 자세한 내용은 관련 Sigstore 문서를 참조하세요.
GET /:id/attestations/:attestation_iid/download
지원되는 속성:
| 속성 | 유형 | 필수 | 설명 |
|---|---|---|---|
id |
integer or string | yes | 프로젝트의 ID 또는 URL 인코딩된 경로 |
attestation_iid |
integer | yes | 증명 목록 API 엔드포인트에서 반환된 증명의 IID. |
요청 예시:
curl --request GET \
--url "https://gitlab.example.com/api/v4/projects/72356192/attestations/1/download
응답 예시:
{
"mediaType": "application/vnd.dev.sigstore.bundle.v0.3+json",
"verificationMaterial": {
"certificate": {
"rawBytes": "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"
},
"tlogEntries": [
[...]
