의존성 목록

Tier: Ultimate Offering: GitLab.com, Self-Managed, GitLab Dedicated
  • GitLab 16.2에 도입된 그룹 수준 의존성 목록. group_level_dependencies라는 플래그로 기본적으로 비활성화됨.
  • GitLab 16.4에서 GitLab.com 및 자체 설치에서 그룹 수준 의존성 목록이 활성화됨.
  • GitLab 16.5에서 일반적으로 사용 가능. group_level_dependencies 기능 플래그 삭제.

프로젝트나 그룹의 의존성 및 해당 의존성의 중요한 세부 정보를 검토하려면 의존성 목록을 사용하세요. 이 목록은 프로젝트의 기존 및 새로운 발견을 포함하여 프로젝트의 종속성 집합입니다. 이 정보는 때로는 소프트웨어 부품 목록(SBOM) 또는 BOM으로 언급되기도 합니다.

개요는 프로젝트 의존성을 참조하세요.

전제 조건

프로젝트의 의존성을 나열하려면 SBOM 문서가 다음을 준수해야 합니다:

참고: 의존성 목록을 작성하는 데 있어서 필수는 아니지만, SBOM 문서에는 GitLab CycloneDX 속성 분류를 포함하고 준수해야 하며 일부 속성을 제공하고 일부 보안 기능을 활성화해야 함.

다음 요구 사항을 충족하는 경우 GitLab은 이미 이 문서를 생성합니다:

프로젝트 의존성 보기

  • GitLab 17.2에서 기능 플래그 skip_sbom_occurrences_update_on_pipeline_id_change가 활성화되면 location 필드가 더 이상 의존성이 마지막으로 감지된 커밋으로 링크되지 않음. 플래그는 기본적으로 비활성화됨.
  • GitLab 17.3에서 location 필드가 의존성이 처음으로 감지된 커밋으로 항상 링크됨. skip_sbom_occurrences_update_on_pipeline_id_change 기능 플래그 삭제됨.

프로젝트 또는 그룹의 의존성을 보려면 다음을 수행합니다:

  1. 왼쪽 사이드바에서 검색 또는 이동을 선택하고 프로젝트나 그룹을 찾습니다.
  2. 보안 > 의존성 목록을 선택합니다.

각 의존성의 세부 정보가 취약점(있는 경우)의 심각도에 따라 정렬되어 나열됩니다. 대신 구성 요소 이름이나 패키저로 목록을 정렬할 수도 있습니다.

필드 설명
구성 요소 의존성의 이름과 버전입니다.
패키저 의존성을 설치하는 데 사용된 패키저입니다.
위치 시스템 의존성의 경우 스캔된 이미지가 나열됩니다. 응용 프로그램 의존성의 경우 프로젝트의 패키저별 락 파일로 링크됩니다. 또한 (있는 경우) 최상위 의존성으로의 의존성 경로 및 지원되는 경우 표시됩니다.
라이선스 (프로젝트 용) 의존성의 소프트웨어 라이선스에 대한 링크입니다. 의존성에서 감지된 취약점 수를 포함하는 경고 배지가 있습니다.
프로젝트 (그룹 용) 의존성이 있는 프로젝트에 대한 링크입니다. 여러 프로젝트가 동일한 의존성을 갖는 경우 해당 프로젝트의 총 수가 표시됩니다. 이 의존성이 있는 프로젝트로 이동하려면 프로젝트 번호를 선택하고 해당 이름을 검색하고 선택하면 됩니다. 프로젝트 검색 기능은 그룹 계층 구조에 최대 600개의 발생을 갖는 그룹에만 지원됩니다.

의존성 목록

의존성 목록 필터링

  • GitLab 16.7에서 group_level_dependencies_filtering이라는 플래그로 도입. 기본적으로 비활성화됨.
  • GitLab 16.10에서 일반적으로 사용 가능. group_level_dependencies_filtering 기능 플래그 삭제됨.

그룹 수준 의존성 목록에서 다음으로 필터링할 수 있습니다:

  • 프로젝트
  • 라이선스

의존성 목록을 필터링하려면 다음을 수행하세요:

  1. 왼쪽 사이드바 상단에서 GitLab 검색 ()을 선택하여 프로젝트나 그룹을 찾습니다.
  2. 보안 > 의존성 목록을 선택합니다.
  3. 필터 바를 선택하세요.
  4. 필터를 선택한 다음 드롭다운 목록에서 하나 이상의 기준을 선택합니다. 드롭다운 목록을 닫으려면 목록 외부를 선택하세요. 추가 필터를 추가하려면 이 단계를 반복하세요.
  5. 선택한 필터를 적용하려면 Enter를 누릅니다.

의존성 목록에는 선택한 필터와 일치하는 의존성만 표시됩니다.

취약점

특정 의존성에 알려진 취약점이 있는 경우 해당 의존성 옆의 화살표나 알려진 취약점의 수를 나타내는 배지를 선택하여 그 취약점을 확인할 수 있습니다. 각 취약점에 대한 심각도와 설명이 나열됩니다. 취약점의 자세한 정보를 보려면 취약점의 설명을 선택합니다. 취약점의 세부 정보 페이지가 열립니다.

의존성 경로

  • CycloneDX SBOM으로부터 의존성 경로 정보가 GitLab 16.9에 도입되었습니다. 기능 플래그 project_level_sbom_occurrences가 기본적으로 비활성화됨.
  • CycloneDX SBOM으로부터 의존성 경로 정보가 GitLab 17.0에서 GitLab.com, 자체 관리 및 GitLab Dedicated에서 활성화됨.
  • 일반적으로 사용 가능 in GitLab 17.4. Feature flag project_level_sbom_occurrences removed.

의존성 목록에는 해당 의존성과 연결된 최상위 의존성 사이의 경로가 표시됩니다(있는 경우). 여러 경로가 하나의 통과 의존성과 상위 의존성을 연결할 수 있지만 사용자 인터페이스에서는 가장 짧은 경로 중 하나만 표시됩니다.

참고: 의존성 경로는 취약점이 있는 의존성에 대해서만 표시됩니다.

의존성 경로

다음 패키지 관리자에 대한 의존성 경로가 지원됩니다:

라이센스

만약 의존성 스캔 CI 작업이 구성되어 있다면, 발견된 라이센스가 이 페이지에 표시됩니다.

의존성 목록 다운로드

JSON 형식으로 의존성 및 자세한 정보를 포함한 전체 목록을 다운로드할 수 있습니다. 의존성 목록은 기본 브랜치에서 마지막으로 성공한 파이프라인의 결과만 표시됩니다.

의존성 목록을 다운로드하려면:

  1. 왼쪽 사이드바에서 검색 또는 이동하여을(를) 선택하고 프로젝트 또는 그룹을 찾습니다.
  2. 보안 > 의존성 목록을(를) 선택합니다.
  3. 내보내기를 선택합니다.

문제 해결

라이센스가 ‘unknown’으로 표시됨

특정한 의존성의 라이센스가 unknown으로 표시될 수 있는 몇 가지 이유가 있습니다. 이 섹션에서는 특정 의존성의 라이센스가 unknown으로 표시되는 이유를 확인하는 방법에 대해 설명합니다.

라이센스가 ‘unknown’으로 표시됨

의존성의 상류에 지정된 라이센스를 확인합니다:

  • C/C++ 패키지의 경우 Conancenter를 확인합니다.
  • npm 패키지의 경우 npmjs.com을(를) 확인합니다.
  • Python 패키지의 경우 PyPI를 확인합니다.
  • NuGet 패키지의 경우 Nuget를 확인합니다.
  • Go 패키지의 경우 pkg.go.dev를 확인합니다.

만약 상류에서 라이센스가 unknown으로 표시된다면, GitLab에서도 해당 의존성의 라이센스unknown으로 표시될 것으로 예상됩니다.

SPDX 라이센스 표현 포함

SPDX 라이센스 표현은 지원되지 않습니다. SPDX 라이센스 표현을 가진 의존성은 unknown라이센스로 나타납니다. SPDX 라이센스 표현의 예는 (MIT OR CC0-1.0)입니다. 더 자세한 정보는 issue 336878에서 확인하세요.

패키지 버전이 패키지 메타데이터 DB에 없음

의존성 패키지의 특정 버전은 패키지 메타데이터 데이터베이스에 존재해야 합니다. 그렇지 않으면 해당 의존성의 라이센스unknown으로 나타납니다. Go 모듈에 대한 자세한 내용은 issue 440218에서 확인하세요.

패키지 이름에 특수 문자가 포함됨

의존성 패키지의 이름에 하이픈(-)이 포함되어있으면 라이센스unknown으로 표시될 수 있습니다. 이는 패키지가 수동으로 requirements.txt에 추가되었거나 pip-compile을 사용할 때 발생할 수 있습니다. 이는 GitLab이 종속성에 대한 정보를 소화할 때 PEP 503의 정규화된 이름에 따라 Python 패키지 이름을 정규화하지 않기 때문에 발생합니다. 더 자세한 정보는 issue 440391에서 확인하세요.