의존성 목록 내보내기 API
Offering: GitLab.com, GitLab Self-Managed, GitLab Dedicated
이 API를 사용하여 의존성 목록을 내보냅니다. 파이프라인에서 감지된 모든 프로젝트 의존성에 대한 CycloneDX JSON 내보내기를 만듭니다. 인증된 사용자에게 read_dependency 권한이 없는 경우 이 요청은 403 Forbidden 상태 코드를 반환합니다.
이 API를 사용하여 의존성 목록을 내보냅니다. 이 API에 대한 모든 호출에는 인증이 필요합니다.
의존성 목록 내보내기 만들기#
히스토리
- GitLab 16.4에서
merge_sbom_api라는 플래그와 함께 도입됨. 기본적으로 활성화됨. - GitLab 16.7에서 일반적으로 사용 가능해짐. 기능 플래그
merge_sbom_api가 제거됨.
파이프라인에서 감지된 모든 프로젝트 의존성에 대한 CycloneDX JSON 내보내기를 만듭니다.
인증된 사용자에게 read_dependency
권한이 없는 경우 이 요청은 403 Forbidden 상태 코드를 반환합니다.
SBOM 내보내기는 내보내기의 작성자만 액세스할 수 있습니다.
POST /projects/:id/dependency_list_exports
POST /groups/:id/dependency_list_exports
POST /pipelines/:id/dependency_list_exports
| 속성 | 유형 | 필수 | 설명 |
|---|---|---|---|
id |
integer | yes | 인증된 사용자가 액세스할 수 있는 프로젝트, 그룹 또는 파이프라인의 ID. |
export_type |
string | yes | 내보내기 형식. 허용된 값 목록은 내보내기 유형을 참조하세요. |
send_email |
boolean | no | true로 설정하면 내보내기가 완료될 때 내보내기를 요청한 사용자에게 이메일 알림을 보냅니다. |
curl --request POST \
--header "PRIVATE-TOKEN: <private_token>" \
--url "https://gitlab.example.com/api/v4/pipelines/1/dependency_list_exports" \
--data "export_type=sbom"
만들어진 의존성 목록 내보내기는 expires_at 필드에 지정된 시간에 자동으로 삭제됩니다.
응답 예시:
{
"id": 2,
"status": "running",
"has_finished": false,
"export_type": "sbom",
"send_email": false,
"expires_at": "2025-04-06T09:35:38.746Z",
"self": "http://gitlab.example.com/api/v4/dependency_list_exports/2",
"download": "http://gitlab.example.com/api/v4/dependency_list_exports/2/download"
}
내보내기 유형#
다양한 파일 형식으로 내보내기를 요청할 수 있습니다. 일부 형식은 특정 객체에만 사용할 수 있습니다.
| 내보내기 유형 | 설명 | 사용 가능 대상 |
|---|---|---|
dependency_list |
키-값 쌍으로 의존성을 나열하는 표준 JSON 객체. | 프로젝트 |
sbom |
CycloneDX 1.4 명세서 | 파이프라인 |
cyclonedx_1_6_json |
CycloneDX 1.6 명세서 | 프로젝트 |
json_array |
구성 요소 객체를 포함하는 플랫 JSON 배열. | 그룹 |
csv |
쉼표로 구분된 값(CSV) 문서. | 프로젝트, 그룹 |
단일 의존성 목록 내보내기 조회#
의존성 목록 내보내기를 조회합니다.
GET /dependency_list_exports/:id
| 속성 | 유형 | 필수 | 설명 |
|---|---|---|---|
id |
integer | yes | 의존성 목록 내보내기의 ID. |
curl --request GET \
--header "PRIVATE-TOKEN: <private_token>" \
--url "https://gitlab.example.com/api/v4/dependency_list_exports/2"
의존성 목록 내보내기가 생성 중인 경우 상태 코드는 202 Accepted이고, 준비된 경우 200 OK입니다.
응답 예시:
{
"id": 4,
"has_finished": true,
"self": "http://gitlab.example.com/api/v4/dependency_list_exports/4",
"download": "http://gitlab.example.com/api/v4/dependency_list_exports/4/download"
}
의존성 목록 내보내기 다운로드#
의존성 목록 내보내기를 다운로드합니다.
GET /dependency_list_exports/:id/download
| 속성 | 유형 | 필수 | 설명 |
|---|---|---|---|
id |
integer | yes | 의존성 목록 내보내기의 ID. |
curl --request GET \
--header "PRIVATE-TOKEN: <private_token>" \
--url "https://gitlab.example.com/api/v4/dependency_list_exports/2/download"
의존성 목록 내보내기가 아직 완료되지 않았거나 찾을 수 없는 경우 응답은 404 Not Found입니다.
응답 예시:
{
"bomFormat": "CycloneDX",
"specVersion": "1.4",
"serialNumber": "urn:uuid:aec33827-20ae-40d0-ae83-18ee846364d2",
"version": 1,
"metadata": {
"tools": [
{
"vendor": "Gitlab",
"name": "Gemnasium",
"version": "2.34.0"
}
],
"authors": [
{
"name": "Gitlab",
"email": "support@gitlab.com"
}
],
"properties": [
{
"name": "gitlab:dependency_scanning:input_file",
"value": "package-lock.json"
}
]
},
"components": [
{
"name": "com.fasterxml.jackson.core/jackson-core",
"purl": "pkg:maven/com.fasterxml.jackson.core/jackson-core@2.9.2",
"version": "2.9.2",
"type": "library",
"licenses": [
{
"license": {
"id": "MIT",
"url": "https://spdx.org/licenses/MIT.html"
}
},
{
"license": {
"id": "BSD-3-Clause",
"url": "https://spdx.org/licenses/BSD-3-Clause.html"
}
}
]
}
]
}
