의존성 목록
- 그룹 수준 의존성 목록이 GitLab 16.2에서 도입됨 플래그
group_level_dependencies
와 함께. 기본적으로 비활성화됨.- GitLab 16.4에서 GitLab.com 및 자기 관리에서 활성화됨.
- GitLab 16.5에서 일반적으로 사용 가능. 기능 플래그
group_level_dependencies
가 제거됨.
의존성 목록을 사용하여 프로젝트 또는 그룹의 의존성과 해당 의존성에 대한 주요 세부정보를 검토하세요. 여기에는 알려진 취약점이 포함됩니다. 이 목록은 프로젝트의 의존성 및 기존 및 새로운 발견 사항의 모음입니다. 이 정보는 때때로 소프트웨어 자재 명세서(Software Bill of Materials, SBOM) 또는 BOM이라고 불립니다.
개요는 프로젝트 의존성을 참조하세요.
전제 조건
프로젝트의 의존성을 나열하려면 SBOM 문서가 다음을 충족해야 합니다:
-
CycloneDX 사양 버전
1.4
또는1.5
를 준수해야 합니다. CycloneDX 웹 도구의 온라인 검증기 사용 가능. - 성공적인 파이프라인에서 기본 브랜치의 CI/CD 아티팩트 보고서로 업로드되어야 합니다.
GitLab은 다음 요구 사항이 충족될 때 이 문서를 이미 생성합니다:
- 의존성 스캐닝 또는 컨테이너 스캐닝 CI 작업이 프로젝트에 대해 구성되어 있어야 합니다.
- 프로젝트에서 최소한 하나의 지원하는 언어 및 패키지 관리자를 사용해야 합니다.
- 기본 브랜치에서 성공적인 파이프라인이 실행되어야 합니다. 애플리케이션 보안 작업의 기본 동작이 실패하는 것을 허용하도록 변경하지 마세요.
프로젝트 의존성 보기
- GitLab 17.2에서는
location
필드가 더 이상 의존성이 마지막으로 감지된 커밋에 링크되지 않으며 기능 플래그skip_sbom_occurrences_update_on_pipeline_id_change
가 활성화되어 있을 때. 기본적으로 플래그는 비활성화되어 있습니다.- GitLab 17.3에서는
location
필드가 항상 의존성이 처음 감지된 커밋에 링크됩니다. 기능 플래그skip_sbom_occurrences_update_on_pipeline_id_change
가 제거되었습니다.
프로젝트 또는 그룹의 모든 프로젝트의 의존성을 보려면:
- 왼쪽 사이드바에서 검색 또는 이동을 선택하고 프로젝트 또는 그룹을 찾습니다.
- 보안 > 의존성 목록을 선택합니다.
각 의존성의 세부정보는 취약성의 심각도에 따라 내림차순으로 정렬되어 나열됩니다(있는 경우). 대신 구성 요소 이름이나 패키저별로 목록을 정렬할 수 있습니다.
필드 | 설명 |
---|---|
구성 요소 | 의존성의 이름과 버전. |
패키저 | 의존성을 설치하는 데 사용된 패키저. |
위치 | 시스템 의존성의 경우 스캔된 이미지를 나열합니다. 애플리케이션 의존성의 경우 해당 의존성을 선언한 프로젝트의 패키저별 잠금 파일에 링크가 표시됩니다. 또한 최상위 의존성에 대한 의존성 경로가 표시됩니다(있는 경우, 지원되는 경우). |
라이센스 (프로젝트 전용) | 의존성의 소프트웨어 라이센스에 링크합니다. 의존성에서 감지된 취약성 수를 포함한 경고 배지. |
프로젝트 (그룹 전용) | 의존성이 있는 프로젝트에 링크합니다. 여러 프로젝트가 동일한 의존성을 가지고 있는 경우 이 프로젝트의 총 수가 표시됩니다. 이 의존성을 가진 프로젝트로 이동하려면 프로젝트 수를 선택한 다음 이름을 검색하여 선택합니다. 프로젝트 검색 기능은 그룹 계층에서 최대 600개의 발생이 있는 그룹만 지원됩니다. |
의존성 목록 필터
그룹 수준의 의존성 목록에서 다음으로 필터링할 수 있습니다:
- 프로젝트
- 라이선스
의존성 목록을 필터링하려면:
- 왼쪽 사이드바에서 상단의 GitLab 검색 ()을 선택하여 프로젝트나 그룹을 찾습니다.
- 보안 > 의존성 목록을 선택합니다.
- 필터 바를 선택합니다.
- 필터를 선택한 다음 드롭다운 목록에서 하나 이상의 기준을 선택합니다. 드롭다운 목록을 닫으려면 목록 외부를 선택합니다. 추가 필터를 추가하려면 이 단계를 반복합니다.
- 선택한 필터를 적용하려면 Enter를 누릅니다.
의존성 목록은 선택한 필터와 일치하는 의존성만 표시합니다.
취약점
의존성에 알려진 취약점이 있는 경우, 의존성 이름 옆의 화살표나 알려진 취약점 수를 나타내는 배지를 선택하여 확인할 수 있습니다. 각 취약점에 대해 그 심각도와 설명이 아래에 표시됩니다. 취약점의 자세한 내용을 보려면 취약점의 설명을 선택합니다. 취약점 세부정보 페이지가 열립니다.
의존성 경로
- CycloneDX SBOM의 의존성 경로 정보는 GitLab 16.9에서 도입됨. 기본적으로 비활성화되어 있는
project_level_sbom_occurrences
라는 플래그가 있습니다.- CycloneDX SBOM의 의존성 경로 정보는 GitLab 17.0에서 GitLab.com, 자체 관리 및 GitLab 전용에서 활성화됨.
- GitLab 17.4에서 일반 제공됨. 기능 플래그
project_level_sbom_occurrences
제거됨.
의존성 목록은 의존성과 연결된 최상위 의존성 간의 경로를 표시합니다. 여러 경로가 임시 의존성을 최상위 의존성과 연결할 수 있지만, 사용자 인터페이스는 가장 짧은 경로만 표시합니다.
참고: 의존성 경로는 취약점이 있는 의존성에 대해서만 표시됩니다.
의존성 경로는 다음 패키지 관리자를 지원합니다:
라이선스
의존성 스캐닝 CI 작업이 구성되어 있는 경우, 발견된 라이선스가 이 페이지에 표시됩니다.
의존성 목록 다운로드
의존성과 그 세부정보의 전체 목록을 JSON 형식으로 다운로드할 수 있습니다. 의존성 목록은 기본 브랜치에서 실행된 마지막 성공적인 파이프라인의 결과만 표시합니다.
의존성 목록을 다운로드하려면:
- 왼쪽 사이드바에서 검색 또는 이동을 선택하고 프로젝트나 그룹을 찾습니다.
- 보안 > 의존성 목록을 선택합니다.
- 내보내기를 선택합니다.
문제 해결
라이센스가 ‘unknown’으로 표시됨
특정 의존성의 라이센스가 unknown
으로 표시되는 몇 가지 가능한 이유가 있을 수 있습니다. 이 섹션에서는 특정 의존성의 라이센스가 알려진 이유로 unknown
으로 표시되는지 확인하는 방법을 설명합니다.
라이센스가 ‘unknown’ 업스트림
의존성의 업스트림에서 지정된 라이센스를 확인하세요:
-
C/C++ 패키지의 경우, Conancenter를 확인하세요.
-
npm 패키지의 경우, npmjs.com을 확인하세요.
-
Python 패키지의 경우, PyPI를 확인하세요.
-
NuGet 패키지의 경우, Nuget을 확인하세요.
-
Go 패키지의 경우, pkg.go.dev를 확인하세요.
업스트림에서 라이센스가 unknown
으로 나타나면, GitLab에서도 해당 의존성의 License가 unknown
으로 표시되는 것이 예상됩니다.
라이센스에 SPDX 라이센스 표현이 포함됨
SPDX 라이센스 표현은 지원되지 않습니다. SPDX 라이센스 표현이 있는 의존성은 License가 unknown
으로 나타납니다. SPDX 라이센스 표현의 예는 (MIT OR CC0-1.0)
입니다. 이슈 336878에서 더 읽어보세요.
패키지 버전이 패키지 메타데이터 DB에 없음
특정 의존성 패키지의 버전은 패키지 메타데이터 데이터베이스에 존재해야 합니다. 존재하지 않는 경우, 해당 의존성의 License는 unknown
으로 나타납니다. Go 모듈에 대한 이슈 440218을 참고하세요.
패키지 이름에 특수 문자가 포함됨
의존성 패키지의 이름에 하이픈(-
)이 포함된 경우 License가 unknown
으로 나타날 수 있습니다. 이는 패키지가 requirements.txt
에 수동으로 추가되거나 pip-compile
이 사용될 때 발생할 수 있습니다. GitLab이 의존성에 대한 정보를 수집할 때 PEP 503의 정규화된 이름에 대한 지침에 따라 Python 패키지 이름을 정규화하지 않기 때문에 발생합니다. 이슈 440391에서 더 읽어보세요.