InfoGrab DocsInfoGrab Docs

SBOM을 사용한 의존성 스캔으로 마이그레이션

요약

의존성 스캔 기능이 GitLab SBOM 취약점 스캐너로 업그레이드됩니다. GitLab 의존성 스캔을 사용하고 있고 다음 조건 중 하나에 해당하면 이 마이그레이션 가이드를 따릅니다. 의존성 스캔 CI/CD job이 의존성 스캔 CI/CD 템플릿 중 하나를 포함하여 구성되어 있습니다.

히스토리
  • Gemnasium 분석기 기반의 의존성 스캔 기능은 GitLab 17.9에서 지원이 종료되었으며, GitLab 20.0에서 제거가 제안되었습니다. 다만 제거 일정은 확정되지 않았으므로 필요에 따라 Gemnasium을 계속 사용할 수 있습니다.

의존성 스캔 기능이 GitLab SBOM 취약점 스캐너로 업그레이드됩니다. 이 변경에 따라 SBOM을 사용하는 의존성 스캔 기능과 새로운 의존성 스캔 분석기가 Gemnasium 분석기 기반의 레거시 의존성 스캔 기능을 대체합니다. 다만 이 전환에 따른 중요한 변경 사항으로 인해 기존 프로젝트는 자동으로 마이그레이션되지 않습니다.

GitLab 의존성 스캔을 사용하고 있고 다음 조건 중 하나에 해당하면 이 마이그레이션 가이드를 따릅니다.

  • 의존성 스캔 CI/CD job이 의존성 스캔 CI/CD 템플릿 중 하나를 포함하여 구성되어 있습니다.

      include:
        - template: Jobs/Dependency-Scanning.gitlab-ci.yml
        - template: Jobs/Dependency-Scanning.latest.gitlab-ci.yml
    
  • 의존성 스캔 CI/CD job이 스캔 실행 정책을 사용하여 구성되어 있습니다.

  • 의존성 스캔 CI/CD job이 파이프라인 실행 정책을 사용하여 구성되어 있습니다.

마이그레이션 준비#

마이그레이션 작업량을 평가하고 경로를 파악하며 사전 요구 사항을 확인하고 영향을 받는 프로젝트를 확인합니다.

마이그레이션 작업량 추정#

의존성 스캔 마이그레이션 평가 도구는 프로젝트에서 의존성 스캔이 구성된 방식을 기반으로 맞춤 마이그레이션 체크리스트를 생성합니다. 이 도구는 활성화 경로, 언어 생태계, CI/CD 커스터마이징, (GitLab Self-Managed 인스턴스의 경우) 패키지 메타데이터 데이터베이스 동기화 상태를 확인합니다. 이 평가 도구는 다음을 생성합니다.

  • 작업량 추정치(minimal, moderate, significant, complex 중 하나).
  • 설정에 적용되는 마이그레이션 단계 체크리스트(이 가이드의 관련 절로 연결되는 직접 링크 포함).
  • 추가 주의가 필요한 상황에 대한 플래그(스캔 실행 정책에서 파이프라인 실행 정책으로 전환해야 하는 프로젝트 등).

이 평가 도구는 브라우저에서만 실행되며 데이터를 어디로도 전송하지 않습니다.

마이그레이션 경로 파악#

기존 구성은 자동으로 마이그레이션되지 않습니다. 새 기능을 사용하려면 구성을 업데이트해야 합니다.

다음 목록에서 자신에게 해당하는 마이그레이션 경로를 확인합니다.

  • 안정 템플릿(Jobs/Dependency-Scanning.gitlab-ci.yml): 일반 마이그레이션 단계에 따라 v2 템플릿으로 전환한 다음, 프로젝트에서 사용하는 생태계에 대한 언어별 지침을 적용합니다.
  • 최신 템플릿(Jobs/Dependency-Scanning.latest.gitlab-ci.yml): 안정 템플릿과 동일합니다. 일반 마이그레이션 단계에 따라 v2 템플릿으로 전환한 다음 언어별 지침을 적용합니다.
  • CI/CD 구성요소: 메인 구성요소는 이미 새로운 분석기를 사용하지만, 이전 버전(v0, v1)은 분석기 버전과 지원되는 입력값이 뒤처져 있습니다. include를 v2 버전으로 올리고 언어별 지침을 적용합니다. Android, Rust, Swift, CocoaPods용 전용 구성요소를 사용하는 경우 메인 구성요소로 마이그레이션합니다.
  • 스캔 실행 정책(SEP) 또는 파이프라인 실행 정책(PEP): 정책이 v2 템플릿을 참조하도록 수정한 다음, 대상 프로젝트에 대해 일반 마이그레이션 단계와 언어별 지침을 따릅니다. SEP와 PEP는 CI/CD 템플릿을 기반으로 만들어지므로, SEP가 업데이트되면 템플릿 변경 사항이 대상 범위의 모든 프로젝트에 자동으로 전파됩니다. PEP의 경우에는 정책의 CI/CD 구성을 직접 수정하여 v2 템플릿을 참조하도록 합니다.

사전 요구 사항 확인: 패키지 메타데이터 데이터베이스 동기화#

새로운 의존성 스캔 분석기는 프로젝트에서 사용하는 패키지 유형에 대해 패키지 메타데이터 데이터베이스(PMDB)가 동기화되어 있어야 합니다. GitLab.com에서는 인스턴스가 지원되는 모든 패키지 유형에 대한 데이터를 이미 동기화합니다. GitLab Self-Managed 및 GitLab Dedicated에서는 관리자가 동기화를 구성합니다.

마이그레이션 전에 관리자는 다음을 수행해야 합니다.

프로젝트에서 사용하는 패키지 유형에 대해 PMDB 동기화가 완료되지 않으면 새로운 분석기가 해당 구성요소의 권고(advisory)를 확인할 수 없으며, 마이그레이션 후 보안 결과가 누락될 수 있습니다.

영향을 받는 프로젝트 확인#

레거시 의존성 스캔 기능을 사용하는 프로젝트를 확인합니다. 보안 인벤토리는 그룹과 프로젝트 전체의 스캐너 커버리지를 파악할 수 있게 해줍니다. 이 단계를 시작점으로 사용하는 것을 권장합니다.

CI/CD 구성에서도 레거시 사용 여부를 확인할 수 있습니다.

  • .gitlab-ci.yml 파일에서 레거시 템플릿인 Jobs/Dependency-Scanning.gitlab-ci.yml 또는 Jobs/Dependency-Scanning.latest.gitlab-ci.yml을 include하는 경우.
  • 스캔 실행 정책과 파이프라인 실행 정책에서 동일한 템플릿을 참조하는 경우.
  • 레거시 분석기의 job 이름(gemnasium-dependency_scanning, gemnasium-maven-dependency_scanning, gemnasium-python-dependency_scanning)이 .gitlab-ci.yml 파일, 정책 YAML, 또는 needs:나 dependencies:에서 이를 사용하는 다운스트림 job에 있는 경우.

스캔 볼륨 계획#

처리량이 많은 프로젝트를 마이그레이션하기 전에, 프로젝트의 모든 파이프라인에서 시간당 SBOM 스캔 수를 추정합니다. 프로젝트당 시간당 50건을 초과하는 스캔은 더 낮은 우선순위로 실행되며 완료되는 데 더 오래 걸릴 수 있습니다.

스캔 볼륨을 줄이려면 중복 파이프라인을 피합니다. 각 스캔의 작업량을 줄이려면 스캔 범위 옵션을 사용합니다.

변경 사항 이해#

Gemnasium 분석기에서 새로운 의존성 스캔 분석기로의 전환은 중요한 기술적 발전입니다. 대부분의 프로젝트는 SBOM을 사용하는 의존성 스캔으로 마이그레이션에서 설명한 CI/CD 구성 전환 외에는 아무것도 변경할 필요가 없습니다. 이 절에서 설명하는 변경 사항은 일부 프로젝트(특히 락파일이 없는 Gradle, Maven, Python)에 추가 단계가 필요한 이유를 이해하는 데 도움이 됩니다.

주요 변경 사항:

  • 언어 지원 및 파일 커버리지 확대: 새로운 분석기는 Gemnasium 분석기가 지원하는 Python 및 Java 버전에 제한되지 않으며, 확대된 파일 커버리지의 혜택을 받습니다.
  • 성능 향상: 새로운 분석기는 기존 락파일 또는 의존성 그래프 내보내기를 우선하며, 생태계별 해석 job은 이러한 파일이 없는 프로젝트에 대해서만 실행됩니다.
  • 더 작은 공격 표면과 더 유연한 구성: 분석기 이미지는 락파일과 그래프 내보내기만 파싱합니다. 생태계별 설정 (프라이빗 레지스트리, 사용자 정의 CA 번들, JVM 옵션)은 해당 의존성 해석 job에만 적용됩니다. 빌드 환경에 맞게 해석 이미지를 재정의할 수 있습니다.

보안 스캔에 대한 새로운 접근법#

레거시 의존성 스캔 기능을 사용할 때는 모든 스캔 작업이 CI/CD 파이프라인에서 수행됩니다. 스캔을 실행하면 Gemnasium 분석기가 두 가지 중요한 작업을 동시에 처리합니다. 프로젝트의 의존성을 식별하고, GitLab 권고 데이터베이스의 로컬 복사본과 자체 보안 스캔 엔진을 사용하여 해당 의존성에 대한 보안 분석을 즉시 수행합니다. 그런 다음 결과를 다양한 보고서(CycloneDX SBOM 및 의존성 스캔 보안 보고서)로 출력합니다.

반면 SBOM을 사용하는 의존성 스캔 기능은 의존성 탐지를 정적 도달 가능성 분석이나 취약점 스캔 같은 다른 분석과 분리하는 분해된 의존성 분석 접근법에 의존합니다. 이러한 작업은 여전히 동일한 CI/CD job에서 실행되지만 분리된 재사용 가능한 구성요소로 동작합니다. 예를 들어 취약점 스캔 분석은 GitLab의 지속적 취약점 스캔 기능도 지원하는 통합 엔진인 GitLab SBOM 취약점 스캐너를 재사용합니다. 이는 향후 통합 지점의 기회도 열어주며 더 유연한 취약점 스캔 워크플로를 가능하게 합니다.

SBOM을 사용하는 의존성 스캔이 애플리케이션을 스캔하는 방법에 대해 자세히 알아봅니다.

Gradle, Maven, Python의 의존성 탐지#

새로운 분석기는 Gradle, Maven, Python 프로젝트에서 의존성을 발견하는 방식을 변경합니다. 의존성을 확인하기 위해 애플리케이션을 빌드하는 대신, 분석기는 "정확도는 다이얼처럼 조절 가능하다"는 원칙을 따르는 다단계 탐지 모델을 사용합니다.

  1. 락파일 또는 의존성 그래프 내보내기: 지원되는 파일이 저장소에 커밋되거나 job 아티팩트로 전달된 경우(예: maven.graph.json, dependencies.lock, requirements.txt, Pipfile.lock), 분석기가 이를 직접 사용합니다. 이것이 가장 정확한 옵션입니다.
  2. 의존성 해석: Maven, Gradle, Python 프로젝트에 지원되는 파일이 없으면 분석기가 자동으로 파일을 생성하려고 시도합니다. 해석 job은 .pre stage에서 최소한의 생태계 이미지와 네이티브 명령(예: mvn dependency:tree, pip-compile, gradle dependencies)으로 실행됩니다. dependency-scanning job은 생성된 아티팩트를 사용합니다.
  3. 매니페스트 폴백: 락파일 또는 의존성 그래프 파일이 없으면 분석기가 지원되는 매니페스트 파일(예: pom.xml, requirements.txt, build.gradle, build.gradle.kts)을 파싱하여 직접 의존성만 추출합니다. 전이 의존성은 탐지되지 않으며 정확히 확인된 버전은 결정할 수 없습니다.

GitLab 19.0부터는 의존성 해석과 매니페스트 폴백이 기본적으로 활성화되어 있습니다.

가장 정확한 결과를 얻으려면 락파일 또는 의존성 그래프 내보내기를 저장소에 커밋하거나, 프로젝트의 실제 빌드 환경을 사용하는 선행 CI/CD job에서 생성합니다. 다음 절에서는 각 언어와 패키지 관리자에서 사용할 수 있는 옵션을 설명합니다.

스캔 결과 액세스#

v2 템플릿은 레거시 템플릿과 동일한 gl-dependency-scanning-report.json job 아티팩트를 생성합니다. 이 아티팩트를 사용하는 (needs: 또는 dependencies:) 다운스트림 job은 마이그레이션 후에도 계속 동작하지만, 이를 생성하는 job 이름은 gemnasium-dependency_scanning(및 그 Maven·Python 변형)에서 dependency-scanning으로 변경됩니다.

SBOM을 사용하는 의존성 스캔으로 마이그레이션#

마이그레이션 방법은 프로젝트에서 의존성 스캔이 활성화된 방식에 따라 다릅니다. 각 하위 절에서는 제거할 커스터마이징, 업데이트할 참조, 최소한의 전/후 예시를 설명합니다.

자신에게 해당하는 하위 절을 찾으려면 마이그레이션 경로 파악을 참조합니다. 다국어 프로젝트의 경우 언어별 지침에서 각 언어에 대한 단계를 완료합니다.

안정 CI/CD 템플릿을 사용하여 마이그레이션#

기존 파이프라인의 중단을 방지하기 위해 안정 템플릿(Jobs/Dependency-Scanning.gitlab-ci.yml)은 레거시 Gemnasium 분석기를 실행하며 새로운 분석기를 사용하도록 업데이트되지 않습니다. 새로운 분석기를 사용하려면 include를 v2 템플릿 (Jobs/Dependency-Scanning.v2.gitlab-ci.yml)으로 전환합니다.

안정 템플릿과 비교했을 때 v2 템플릿은 다음과 같습니다.

  • 레거시 gemnasium-dependency_scanning, gemnasium-maven-dependency_scanning, gemnasium-python-dependency_scanning job 대신 새로운 dependency-scanning job을 실행합니다.
  • 레거시 job 이름을 미리 정의하지 않습니다. gemnasium-* job을 재정의하는 커스터마이징(예: .gitlab-ci.yml에서 확장하는 방식)은 더 이상 적용되지 않으며 제거하거나 다시 작성해야 합니다.
  • gl-dependency-scanning-report.json job 아티팩트를 계속 생성합니다. needs: 또는 dependencies:를 통해 이 아티팩트를 사용하는 다운스트림 job은 마이그레이션 후에도 계속 동작하지만, 레거시 gemnasium-* job 이름 대신 새로운 dependency-scanning job 이름을 참조해야 합니다.
  • 동일한 CI/CD 변수를 허용하며, 일부 변경 사항은 CI/CD 변수 변경 사항에 문서화되어 있습니다.

사전 요구 사항:

  • 프로젝트에 대한 Developer, Maintainer, Owner 권한.

안정 CI/CD 템플릿을 사용하여 마이그레이션하려면 다음과 같이 합니다.

  1. .gitlab-ci.yml 또는 include된 파일에서 레거시 gemnasium-* job을 재정의하는 커스터마이징을 제거합니다. v2 템플릿은 이 job 이름들을 정의하지 않으므로, 재정의가 남아 있으면 잘못된 CI/CD 구성으로 인해 파이프라인이 실패할 수 있습니다.
  2. include 문이 v2 템플릿을 참조하도록 업데이트합니다.
  3. needs: 또는 dependencies:에서 레거시 job 이름을 참조하는 다운스트림 job이 대신 dependency-scanning을 사용하도록 업데이트합니다.
  4. 프로젝트의 생태계에 대한 언어별 지침을 적용합니다.

이전:

include:
  - template: Jobs/Dependency-Scanning.gitlab-ci.yml

# Customization that targets the legacy job name.
gemnasium-dependency_scanning:
  variables:
    SECURE_LOG_LEVEL: debug

# Downstream job that consumes the legacy report.
export-security-report:
  stage: deploy
  needs:
    - job: gemnasium-dependency_scanning
      artifacts: true
  script:
    - ./publish.sh gl-dependency-scanning-report.json

이후:

include:
  - template: Jobs/Dependency-Scanning.v2.gitlab-ci.yml
    inputs:
      analyzer_log_level: debug

export-security-report:
  stage: deploy
  needs:
    - job: dependency-scanning
      artifacts: true
  script:
    - ./publish.sh gl-dependency-scanning-report.json

파이프라인에서 의존성 해석 전에 커스텀 job을 실행해야 하는 경우 (예: 프라이빗 레지스트리에 인증하거나 빌드 캐시를 준비하는 경우), 해석 job 순서 조정을 참조합니다.

최신 CI/CD 템플릿을 사용하여 마이그레이션#

최신 템플릿(Jobs/Dependency-Scanning.latest.gitlab-ci.yml)은 기본적으로 레거시 Gemnasium 분석기를 실행합니다. 과도기적 단계로, DS_ENFORCE_NEW_ANALYZER CI/CD 변수를 통해 새로운 분석기로의 opt-in을 지원하지만, 새로운 분석기의 v1 버전에서만 가능하며 의존성 해석 job 없이 동작합니다.

사전 요구 사항:

  • 프로젝트에 대한 Developer, Maintainer, Owner 권한.

Maven, Gradle, Python 프로젝트의 경우 다음 중 하나를 수행해야 합니다.

v2 템플릿과 완전히 동일한 수준(v2 분석기, 의존성 해석, 매니페스트 폴백)을 원한다면 안정 템플릿 단계에 따라 v2 템플릿으로 전환합니다. 마이그레이션 작업은 동일합니다. 레거시 gemnasium-* job을 대상으로 하는 커스터마이징을 제거하고, include 문을 업데이트하고, 다운스트림 job을 업데이트합니다.

이미 DS_ENFORCE_NEW_ANALYZER를 통해 새로운 DS 분석기 사용에 opt-in한 경우 전환이 더 간단합니다. 마이그레이션을 완료하기 전에 새로운 템플릿이 도입하는 변경 사항을 검토합니다.

파이프라인에서 의존성 해석 전에 커스텀 job을 실행해야 하는 경우 (예: 프라이빗 레지스트리에 인증하거나 빌드 캐시를 준비하는 경우), 해석 job 순서 조정을 참조합니다.

CI/CD 구성요소를 사용하여 마이그레이션#

Note

GitLab Self-Managed에서는 GitLab.com CI/CD 구성요소를 사용하기 위한 현재 제한 사항을 검토합니다.

메인 의존성 스캔 CI/CD 구성요소의 v2 릴리스는 v2 템플릿과 동등합니다. 새로운 분석기를 v2 버전으로 실행하며 동일한 입력값을 지원합니다. 이전 릴리스(v0, v1)는 분석기 버전과 지원되는 기능에서 뒤처져 있으므로, v0 또는 v1을 include하는 프로젝트는 include를 v2로 올려야 합니다.

사전 요구 사항:

  • 프로젝트에 대한 Developer, Maintainer, Owner 권한.

CI/CD 구성요소를 사용하여 마이그레이션하려면 다음과 같이 합니다.

  1. 메인 구성요소의 버전 2를 참조하도록 구성요소 include 문을 업데이트합니다.
  2. v2에서 이름이 변경되거나 제거된 입력값을 교체합니다. 메인 구성요소의 v2 릴리스는 v2 CI/CD 템플릿과 동일한 입력값 집합을 제공합니다. 전체 목록은 사용 가능한 spec 입력값 참조 문서를 확인합니다.
  3. 프로젝트의 생태계에 대한 언어별 지침을 적용합니다.

Android, Rust, Swift, CocoaPods용 전용 구성요소를 사용하는 경우 메인 구성요소로 마이그레이션합니다. 메인 구성요소는 이제 지원되는 모든 언어와 패키지 관리자를 다룹니다. 전용 구성요소는 더 이상 필요하지 않습니다.

이전:

include:
  - component: $CI_SERVER_FQDN/components/dependency-scanning/main@1

이후:

include:
  - component: $CI_SERVER_FQDN/components/dependency-scanning/main@2

파이프라인에서 의존성 해석 전에 커스텀 job을 실행해야 하는 경우 (예: 프라이빗 레지스트리에 인증하거나 빌드 캐시를 준비하는 경우), 해석 job 순서 조정을 참조합니다.

스캔 실행 정책을 사용하여 마이그레이션#

스캔 실행 정책은 정책이 대상으로 하는 프로젝트 전체에 CI/CD 템플릿을 강제합니다. 의존성 스캔의 경우 정책의 template 필드가 실행할 템플릿을 선택합니다. 새로운 분석기는 v2 템플릿 버전을 통해 사용할 수 있습니다.

각 대상 프로젝트에서 정책의 동작은 해당 CI/CD 템플릿을 직접 include하는 프로젝트의 동작과 동일합니다. 정책이 v2를 참조하도록 업데이트되면 안정 CI/CD 템플릿의 단계가 대상 범위의 각 프로젝트에 적용됩니다. 즉 레거시 gemnasium-* job을 대상으로 하는 커스터마이징을 제거하고 이를 사용하는 다운스트림 job을 업데이트합니다.

사전 요구 사항:

  • 그룹에 대한 Owner 권한 또는 manage_security_policy_link 권한이 있는 사용자 지정 역할.

스캔 실행 정책을 사용하여 마이그레이션하려면 다음과 같이 합니다.

  1. 스캔 실행 정책을 수정하여 dependency_scanning 액션에 template: v2를 설정합니다.
  2. 정책이 적용되는 각 프로젝트에서 레거시 gemnasium-* job을 재정의하는 커스터마이징을 제거하고, 이를 참조하는 다운스트림 job을 업데이트합니다.
  3. 정책이 적용되는 프로젝트의 생태계에 대한 언어별 지침을 적용합니다.

이전:

scan_execution_policy:
  - name: Enforce dependency scanning
    enabled: true
    rules:
      - type: pipeline
        branch_type: all
    actions:
      - scan: dependency_scanning

이후:

scan_execution_policy:
  - name: Enforce dependency scanning
    enabled: true
    rules:
      - type: pipeline
        branch_type: all
    actions:
      - scan: dependency_scanning
        template: v2

의존성 해석 또는 매니페스트 폴백이 다루지 않는 프로젝트#

스캔 실행 정책은 레거시 Gemnasium 분석기의 build support 기능을 사용하여 기본 빌드 환경을 제공합니다. 새로운 분석기는 커밋된 락파일 또는 의존성 그래프 내보내기가 없는 프로젝트의 의존성을 탐지하기 위해 의존성 해석 또는 매니페스트 폴백에 의존합니다.

이러한 메커니즘은 이전에 build support에 의존했던 대부분의 프로젝트를 다룹니다. 일부 상황에서는 여전히 파이프라인 실행 정책의 추가적인 유연성이 유용합니다.

  • 프로젝트의 생태계가 현재 의존성 해석 및 매니페스트 폴백의 범위 밖에 있는 경우(예: Scala/sbt).
  • 의존성 해석에 사용 가능한 CI/CD 변수 범위를 넘어서는 설정 단계가 필요한 경우(예: 비표준 자격 증명으로 프라이빗 레지스트리에 인증하는 경우).

이러한 프로젝트에는 파이프라인 실행 정책을 사용합니다. 이를 통해 CI/CD job을 더 자유롭게 커스터마이징하고 락파일 또는 의존성 그래프 내보내기를 수동으로 생성할 수 있습니다.

파이프라인 실행 정책을 사용하여 마이그레이션#

파이프라인 실행 정책은 일반적으로 의존성 스캔 템플릿이나 CI/CD 구성요소와 프로젝트별 커스터마이징을 포함하는 완전한 CI/CD 구성을 강제합니다. 적용되는 마이그레이션 단계는 정책의 CI/CD 구성이 무엇을 포함하는지에 따라 다릅니다.

사전 요구 사항:

  • 그룹에 대한 Owner 권한 또는 manage_security_policy_link 권한이 있는 사용자 지정 역할.

파이프라인 실행 정책을 사용하여 마이그레이션하려면 다음과 같이 합니다.

  1. 정책이 어떤 템플릿 또는 구성요소를 사용하는지 확인합니다.

  2. 정책의 CI/CD 구성에 해당 단계를 적용합니다.

  3. 정책이 적용되는 프로젝트의 생태계에 대한 언어별 지침을 적용합니다.

프로젝트, 그룹, 인스턴스에 설정된 CI/CD 변수(그리고 정책 자체의 variables: 블록에 정의된 변수)는 새로운 dependency-scanning job과 그 앞에서 실행되는 해석 job에 계속 적용됩니다. v2에서 상태가 변경된 변수는 CI/CD 변수 변경 사항을 참조합니다.

파이프라인에서 의존성 해석 전에 커스텀 job을 실행해야 하는 경우 (예: 프라이빗 레지스트리에 인증하거나 빌드 캐시를 준비하는 경우), 해석 job 순서 조정을 참조합니다.

기타 고려 사항#

다음 커스터마이징은 프로젝트에서 의존성 스캔이 어떤 방식으로 활성화되어 있는지와 관계없이 적용됩니다.

해석 job 순서 조정#

기본적으로 해석 job은 .pre stage에서 실행됩니다. 파이프라인에 의존성 스캔 실행 전에 완료되어야 하는 커스텀 job이 있는 경우 (예: 프라이빗 레지스트리에 인증하거나 빌드 캐시를 준비하는 .pre job), 해석 job은 이러한 커스텀 job 이후가 아니라 병렬로 실행됩니다. 해석 job은 커스텀 job이 생성하는 아티팩트를 볼 수 없습니다.

의도한 순서를 유지하려면 v2 템플릿 또는 구성요소의 resolution_jobs_stage 입력값을 사용하여 해석 job을 이후 stage로 이동시킵니다.

stages:
  - .pre
  - prepare
  - test

include:
  - template: Jobs/Dependency-Scanning.v2.gitlab-ci.yml
    inputs:
      resolution_jobs_stage: prepare

private-registry-cache-build:
  stage: .pre
  script:
    - ./scripts/login-private-registry.sh
    - ./scripts/build-dependency-cache.sh

그러면 해석 job은 커스텀 .pre job이 완료된 후 prepare stage에서 실행됩니다. 해석 job 동작을 제어하는 입력값의 전체 목록은 사용 가능한 CI/CD 입력값을 참조합니다.

언어별 지침#

새로운 의존성 스캔 분석기로 마이그레이션할 때는 프로젝트의 프로그래밍 언어와 패키지 관리자에 따라 특정 조정이 필요합니다. 이 지침은 CI/CD 템플릿, 스캔 실행 정책, 의존성 스캔 CI/CD 구성요소 중 어떤 방식으로 구성했는지와 관계없이 새로운 의존성 스캔 분석기를 사용할 때마다 적용됩니다. 다음 절에서는 지원되는 각 언어와 패키지 관리자에 대한 자세한 지침을 확인할 수 있습니다. 각 지침에서는 다음을 설명합니다.

  • 의존성 탐지 방식이 어떻게 변경되는지
  • 어떤 파일을 구체적으로 제공해야 하는지
  • 워크플로에 아직 포함되어 있지 않다면 이러한 파일을 생성하는 방법

새로운 의존성 스캔 분석기에 대한 의견은 이 피드백 이슈에 공유합니다.

Bundler#

이전 동작: Gemnasium 분석기 기반 의존성 스캔은 gemnasium-dependency_scanning CI/CD job과 Gemfile.lock 파일(대체 파일명 gems.locked도 지원)을 파싱하여 프로젝트 의존성을 추출하는 기능을 사용하여 Bundler 프로젝트를 지원합니다. 지원되는 Bundler 버전과 Gemfile.lock 파일의 조합은 의존성 스캔(Gemnasium 기반) 문서에 자세히 설명되어 있습니다.

새로운 동작: 새로운 의존성 스캔 분석기도 Gemfile.lock 파일(대체 파일명 gems.locked도 지원)을 파싱하여 프로젝트 의존성을 추출하고, dependency-scanning CI/CD job으로 CycloneDX SBOM 보고서 아티팩트를 생성합니다.

Bundler 프로젝트 마이그레이션#

새로운 의존성 스캔 분석기를 사용하도록 Bundler 프로젝트를 마이그레이션합니다.

사전 요구 사항:

의존성 스캔 분석기를 사용하도록 Bundler 프로젝트를 마이그레이션하는 데 추가 단계가 필요하지 않습니다.

CocoaPods#

이전 동작: Gemnasium 분석기 기반 의존성 스캔은 CI/CD 템플릿이나 스캔 실행 정책을 사용할 때 CocoaPods 프로젝트를 지원하지 않습니다. CocoaPods 지원은 실험적인 CocoaPods CI/CD 구성요소에서만 사용할 수 있습니다.

새로운 동작: 새로운 의존성 스캔 분석기는 Podfile.lock 파일을 파싱하여 프로젝트 의존성을 추출하고, dependency-scanning CI/CD job으로 CycloneDX SBOM 보고서 아티팩트를 생성합니다.

CocoaPods 프로젝트 마이그레이션#

새로운 의존성 스캔 분석기를 사용하도록 CocoaPods 프로젝트를 마이그레이션합니다.

사전 요구 사항:

의존성 스캔 분석기를 사용하도록 CocoaPods 프로젝트를 마이그레이션하는 데 추가 단계가 필요하지 않습니다.

Composer#

이전 동작: Gemnasium 분석기 기반 의존성 스캔은 gemnasium-dependency_scanning CI/CD job과 composer.lock 파일을 파싱하여 프로젝트 의존성을 추출하는 기능을 사용하여 Composer 프로젝트를 지원합니다. 지원되는 Composer 버전과 composer.lock 파일의 조합은 의존성 스캔(Gemnasium 기반) 문서에 자세히 설명되어 있습니다.

새로운 동작: 새로운 의존성 스캔 분석기도 composer.lock 파일을 파싱하여 프로젝트 의존성을 추출하고, dependency-scanning CI/CD job으로 CycloneDX SBOM 보고서 아티팩트를 생성합니다.

Composer 프로젝트 마이그레이션#

새로운 의존성 스캔 분석기를 사용하도록 Composer 프로젝트를 마이그레이션합니다.

사전 요구 사항:

의존성 스캔 분석기를 사용하도록 Composer 프로젝트를 마이그레이션하는 데 추가 단계가 필요하지 않습니다.

Conan#

이전 동작: Gemnasium 분석기 기반 의존성 스캔은 gemnasium-dependency_scanning CI/CD job과 conan.lock 파일을 파싱하여 프로젝트 의존성을 추출하는 기능을 사용하여 Conan 프로젝트를 지원합니다. 지원되는 Conan 버전과 conan.lock 파일의 조합은 의존성 스캔(Gemnasium 기반) 문서에 자세히 설명되어 있습니다.

새로운 동작: 새로운 의존성 스캔 분석기도 conan.lock 파일을 파싱하여 프로젝트 의존성을 추출하고, dependency-scanning CI/CD job으로 CycloneDX SBOM 보고서 아티팩트를 생성합니다.

Conan 프로젝트 마이그레이션#

새로운 의존성 스캔 분석기를 사용하도록 Conan 프로젝트를 마이그레이션합니다.

사전 요구 사항:

의존성 스캔 분석기를 사용하도록 Conan 프로젝트를 마이그레이션하는 데 추가 단계가 필요하지 않습니다.

Go#

이전 동작: Gemnasium 분석기 기반 의존성 스캔은 gemnasium-dependency_scanning CI/CD job과 go.mod, go.sum 파일을 사용하여 프로젝트 의존성을 추출하는 기능을 사용하여 Go 프로젝트를 지원합니다. 이 분석기는 탐지된 의존성의 정확도를 높이기 위해 go list 명령을 실행하려 시도하며, 이를 위해서는 정상적으로 동작하는 Go 환경이 필요합니다. 실패하면 go.sum 파일 파싱으로 폴백합니다. 지원되는 Go 버전과 go.mod, go.sum 파일의 조합은 의존성 스캔(Gemnasium 기반) 문서에 자세히 설명되어 있습니다.

새로운 동작: 새로운 의존성 스캔 분석기는 의존성을 추출하기 위해 프로젝트에서 go list 명령을 실행하려 시도하지 않으며, 더 이상 go.sum 파일 파싱으로 폴백하지 않습니다. 대신 프로젝트는 최소한 go.mod 파일과, 가급적 Go 툴체인의 go mod graph 명령으로 생성한 go.graph 파일을 제공해야 합니다. go.graph 파일은 탐지된 구성요소의 정확도를 높이고 의존성 경로와 같은 기능을 활성화하는 의존성 그래프를 생성하는 데 필요합니다. 이러한 파일은 dependency-scanning CI/CD job에 의해 처리되어 CycloneDX SBOM 보고서 아티팩트를 생성합니다. 이 접근법에서는 GitLab이 특정 버전의 Go를 지원할 필요가 없습니다. Go 프로젝트에는 의존성 해석이 지원되지 않습니다.

Go 프로젝트 마이그레이션#

새로운 의존성 스캔 분석기를 사용하도록 Go 프로젝트를 마이그레이션합니다.

사전 요구 사항:

Go 프로젝트를 마이그레이션하려면 다음과 같이 합니다.

  • 프로젝트가 go.mod 및 go.graph 파일을 제공하는지 확인합니다. 선행 CI/CD job(예: build)에서 Go 툴체인의 go mod graph 명령을 구성하여 go.graph 파일을 동적으로 생성하고, 의존성 스캔 job을 실행하기 전에 아티팩트로 내보냅니다.

자세한 내용과 예시는 Go 활성화 지침을 참조합니다.

Gradle#

이전 동작: Gemnasium 분석기 기반 의존성 스캔은 gemnasium-maven-dependency_scanning CI/CD job을 사용하여 build.gradle, build.gradle.kts 파일에서 애플리케이션을 빌드함으로써 프로젝트 의존성을 추출하는 방식으로 Gradle 프로젝트를 지원합니다. 지원되는 Java, Kotlin, Gradle 버전의 조합은 복잡하며, 의존성 스캔(Gemnasium 기반) 문서에 자세히 설명되어 있습니다.

새로운 동작: 새로운 의존성 스캔 분석기는 의존성을 추출하기 위해 프로젝트를 빌드하지 않습니다. 대신 다단계 탐지 모델을 사용합니다.

  • 지원되는 락파일 또는 그래프 내보내기가 저장소나 job 아티팩트에 있으면(예: gradle.lockfile) 분석기가 이를 직접 사용합니다.
  • 지원되는 락파일 또는 그래프 내보내기가 탐지되지 않지만 지원되는 빌드 파일이 있으면 (예: build.gradle) .pre stage에서 의존성 해석 job이 실행됩니다. gradle dependencies를 자동으로 실행하여 dependency-scanning job을 위한 의존성 그래프 내보내기를 생성합니다.
  • 의존성 해석을 사용할 수 없거나 실패하면 매니페스트 폴백이 build.gradle과 build.gradle.kts를 직접 파싱하여 직접 의존성만 추출합니다. gradle.properties 또는 gradle/libs.versions.toml을 통해 의존성을 선언하는 프로젝트는 버전 변수가 항상 확인되지 않으므로 매니페스트 폴백의 정확도가 낮아집니다.

Gradle 프로젝트 마이그레이션#

새로운 의존성 스캔 분석기를 사용하도록 Gradle 프로젝트를 마이그레이션합니다.

사전 요구 사항:

Gradle 프로젝트를 마이그레이션하려면 다음 옵션 중 하나를 선택합니다.

  • 가장 정확한 결과를 위해 프로젝트가 의존성 그래프 내보내기 파일을 제공하는지 확인합니다. 선행 CI/CD job(예: build)에서 Gradle dependencies 작업을 구성하여 gradle.graph.txt 파일을 동적으로 생성하고, 의존성 스캔 job을 실행하기 전에 아티팩트로 내보냅니다. 또는 다른 지원되는 락파일 또는 그래프 내보내기를 선택할 수 있습니다. 락파일 또는 그래프 내보내기를 동적으로 생성하는 경우 DS_DISABLED_RESOLUTION_JOBS CI/CD 변수 값에 gradle을 추가하여 자동 의존성 해석을 비활성화합니다.
  • 의존성 해석에 의존하여 gradle.graph.txt 파일을 자동으로 생성할 수 있습니다. 해석 이미지가 그래프 내보내기를 성공적으로 생성할 수 있는지 확인합니다.
  • build.gradle 또는 build.gradle.kts에 선언된 직접 의존성의 기본 커버리지를 위해 매니페스트 폴백을 사용합니다.

자세한 내용과 예시는 Gradle 활성화 지침을 참조합니다.

Maven#

이전 동작: Gemnasium 분석기 기반 의존성 스캔은 gemnasium-maven-dependency_scanning CI/CD job을 사용하여 pom.xml 파일에서 애플리케이션을 빌드함으로써 프로젝트 의존성을 추출하는 방식으로 Maven 프로젝트를 지원합니다. 지원되는 Java, Kotlin, Maven 버전의 조합은 복잡하며, 의존성 스캔(Gemnasium 기반) 문서에 자세히 설명되어 있습니다.

새로운 동작: 새로운 의존성 스캔 분석기는 의존성을 추출하기 위해 프로젝트를 빌드하지 않습니다. 대신 다단계 탐지 모델을 사용합니다.

  • Maven dependency plugin으로 생성한 maven.graph.json 그래프 내보내기 파일이 저장소나 job 아티팩트에 있으면 분석기가 이를 직접 사용합니다.
  • 그래프 내보내기가 탐지되지 않지만 지원되는 pom.xml 파일이 있으면 .pre stage에서 의존성 해석 job이 실행됩니다. mvn dependency:tree를 자동으로 실행하여 dependency-scanning job을 위한 의존성 그래프 내보내기를 생성합니다.
  • 의존성 해석을 사용할 수 없거나 실패하면 매니페스트 폴백이 pom.xml을 직접 파싱하여 직접 의존성만 추출합니다.

Maven 프로젝트 마이그레이션#

새로운 의존성 스캔 분석기를 사용하도록 Maven 프로젝트를 마이그레이션합니다.

사전 요구 사항:

Maven 프로젝트를 마이그레이션하려면 다음 옵션 중 하나를 선택합니다.

  • 가장 정확한 결과를 위해 프로젝트가 maven.graph.json 파일을 제공하는지 확인합니다. 선행 CI/CD job(예: build)에서 Maven dependency plugin을 구성하여 maven.graph.json 파일을 동적으로 생성하고, 의존성 스캔 job을 실행하기 전에 아티팩트로 내보냅니다. 그래프 내보내기를 동적으로 생성하는 경우 DS_DISABLED_RESOLUTION_JOBS CI/CD 변수 값에 maven을 추가하여 자동 의존성 해석을 비활성화합니다.
  • 의존성 해석에 의존하여 maven.graph.json 파일을 자동으로 생성할 수 있습니다. 해석 이미지가 그래프 내보내기를 성공적으로 생성할 수 있는지 확인합니다.
  • pom.xml에 선언된 직접 의존성의 기본 커버리지를 위해 매니페스트 폴백을 사용합니다.

자세한 내용과 예시는 Maven 활성화 지침을 참조합니다.

npm#

이전 동작: Gemnasium 분석기 기반 의존성 스캔은 gemnasium-dependency_scanning CI/CD job과 package-lock.json 또는 npm-shrinkwrap.json.lock 파일을 파싱하여 프로젝트 의존성을 추출하는 기능을 사용하여 npm 프로젝트를 지원합니다. 지원되는 npm 버전과 package-lock.json 또는 npm-shrinkwrap.json.lock 파일의 조합은 의존성 스캔(Gemnasium 기반) 문서에 자세히 설명되어 있습니다. 이 분석기는 Retire.JS 스캐너를 사용하여 npm 프로젝트에 벤더링된 JavaScript 파일을 스캔할 수 있습니다.

새로운 동작: 새로운 의존성 스캔 분석기도 package-lock.json 또는 npm-shrinkwrap.json.lock 파일을 파싱하여 프로젝트 의존성을 추출하고, dependency-scanning CI/CD job으로 CycloneDX SBOM 보고서 아티팩트를 생성합니다. 이 분석기는 벤더링된 JavaScript 파일을 스캔하지 않습니다. 자세한 내용과 이용 가능한 조치는 JavaScript 벤더링 라이브러리에 대한 의존성 스캔 지원 종료 공지를 참조합니다. 대체 기능에 대한 지원은 에픽 7186에서 제안되었습니다.

npm 프로젝트 마이그레이션#

새로운 의존성 스캔 분석기를 사용하도록 npm 프로젝트를 마이그레이션합니다.

사전 요구 사항:

의존성 스캔 분석기를 사용하도록 npm 프로젝트를 마이그레이션하는 데 추가 단계가 필요하지 않습니다.

NuGet#

이전 동작: Gemnasium 분석기 기반 의존성 스캔은 gemnasium-dependency_scanning CI/CD job과 packages.lock.json 파일을 파싱하여 프로젝트 의존성을 추출하는 기능을 사용하여 NuGet 프로젝트를 지원합니다. 지원되는 NuGet 버전과 packages.lock.json 파일의 조합은 의존성 스캔(Gemnasium 기반) 문서에 자세히 설명되어 있습니다.

새로운 동작: 새로운 의존성 스캔 분석기도 packages.lock.json 파일을 파싱하여 프로젝트 의존성을 추출하고, dependency-scanning CI/CD job으로 CycloneDX SBOM 보고서 아티팩트를 생성합니다.

NuGet 프로젝트 마이그레이션#

새로운 의존성 스캔 분석기를 사용하도록 NuGet 프로젝트를 마이그레이션합니다.

사전 요구 사항:

의존성 스캔 분석기를 사용하도록 NuGet 프로젝트를 마이그레이션하는 데 추가 단계가 필요하지 않습니다.

pip#

이전 동작: Gemnasium 분석기 기반 의존성 스캔은 gemnasium-python-dependency_scanning CI/CD job을 사용하여 requirements.txt 파일(대체 파일명 requirements.pip, requires.txt도 지원)에서 애플리케이션을 빌드함으로써 프로젝트 의존성을 추출하는 방식으로 pip 프로젝트를 지원합니다. PIP_REQUIREMENTS_FILE 환경 변수를 사용하여 사용자 지정 파일명을 지정할 수도 있습니다. 지원되는 Python, pip 버전의 조합은 의존성 스캔(Gemnasium 기반) 문서에 자세히 설명되어 있습니다.

새로운 동작: 새로운 의존성 스캔 분석기는 의존성을 추출하기 위해 프로젝트를 빌드하지 않습니다. 대신 다단계 탐지 모델을 사용합니다.

  • 지원되는 락파일 또는 그래프 내보내기가 저장소나 job 아티팩트에 있으면(예: pip-compile로 생성한 requirements.txt) 분석기가 이를 직접 사용합니다.
  • 지원되는 락파일 또는 그래프 내보내기가 탐지되지 않지만 지원되는 빌드 파일이 있으면 (예: requirements.in) .pre stage에서 의존성 해석 job이 실행됩니다. pip-compile을 자동으로 실행하여 dependency-scanning job을 위한 락파일을 생성합니다.
  • 의존성 해석을 사용할 수 없거나 실패하면 매니페스트 폴백이 requirements.txt 파일을 직접 파싱하여 직접 의존성만 추출합니다.

pip 프로젝트 마이그레이션#

새로운 의존성 스캔 분석기를 사용하도록 pip 프로젝트를 마이그레이션합니다.

사전 요구 사항:

pip 프로젝트를 마이그레이션하려면 다음 옵션 중 하나를 선택합니다.

  • 가장 정확한 결과를 위해 프로젝트가 락파일을 제공하는지 확인합니다. 프로젝트에 pip-compile 명령줄 도구를 구성하고, requirements.txt 락파일을 저장소에 커밋하거나 선행 CI/CD job(예: build)에서 이를 사용하여 동적으로 requirements.txt 파일을 생성하고 의존성 스캔 job을 실행하기 전에 아티팩트로 내보냅니다. 또는 다른 지원되는 락파일 또는 그래프 내보내기를 선택할 수 있습니다. 락파일 또는 그래프 내보내기를 동적으로 생성하는 경우 DS_DISABLED_RESOLUTION_JOBS CI/CD 변수 값에 python을 추가하여 자동 의존성 해석을 비활성화합니다.
  • 의존성 해석에 의존하여 pipcompile.lock.txt 파일을 자동으로 생성할 수 있습니다. 해석 이미지가 락파일을 성공적으로 생성할 수 있는지 확인합니다.
  • requirements.txt에 선언된 직접 의존성의 기본 커버리지를 위해 매니페스트 폴백을 사용합니다.

자세한 내용과 예시는 pip 활성화 지침을 참조합니다.

Pipenv#

이전 동작: Gemnasium 분석기 기반 의존성 스캔은 gemnasium-python-dependency_scanning CI/CD job을 사용하여 Pipfile 파일 또는 존재하는 경우 Pipfile.lock 파일에서 애플리케이션을 빌드함으로써 프로젝트 의존성을 추출하는 방식으로 Pipenv 프로젝트를 지원합니다. 지원되는 Python, Pipenv 버전의 조합은 의존성 스캔(Gemnasium 기반) 문서에 자세히 설명되어 있습니다.

새로운 동작: 새로운 의존성 스캔 분석기는 의존성을 추출하기 위해 Pipenv 프로젝트를 빌드하지 않습니다. 대신 프로젝트는 최소한 Pipfile.lock 파일과, 가급적 pipenv graph 명령으로 생성한 pipenv.graph.json 파일을 제공해야 합니다. pipenv.graph.json 파일은 의존성 그래프를 생성하고 의존성 경로와 같은 기능을 활성화하는 데 필요합니다. 이러한 파일은 dependency-scanning CI/CD job에 의해 처리되어 CycloneDX SBOM 보고서 아티팩트를 생성합니다. 이 접근법에서는 GitLab이 특정 버전의 Python과 Pipenv를 지원할 필요가 없습니다. Pipfile.lock 파일이 없는 Pipfile을 사용하는 프로젝트에는 의존성 해석이 지원되지 않습니다.

Pipenv 프로젝트 마이그레이션#

새로운 의존성 스캔 분석기를 사용하도록 Pipenv 프로젝트를 마이그레이션합니다.

사전 요구 사항:

Pipenv 프로젝트를 마이그레이션하려면 다음과 같이 합니다.

  • 프로젝트가 Pipfile.lock 파일을 제공하는지 확인합니다. 프로젝트에 pipenv lock 명령을 구성하고, Pipfile.lock 파일을 저장소에 커밋하거나 선행 CI/CD job(예: build)에서 이를 사용하여 동적으로 Pipfile.lock 파일을 생성하고 의존성 스캔 job을 실행하기 전에 아티팩트로 내보냅니다. 또는 다른 지원되는 락파일 또는 그래프 내보내기를 선택할 수 있습니다.

Poetry#

이전 동작: Gemnasium 분석기 기반 의존성 스캔은 gemnasium-python-dependency_scanning CI/CD job과 poetry.lock 파일을 파싱하여 프로젝트 의존성을 추출하는 기능을 사용하여 Poetry 프로젝트를 지원합니다. 지원되는 Poetry 버전과 poetry.lock 파일의 조합은 의존성 스캔(Gemnasium 기반) 문서에 자세히 설명되어 있습니다.

새로운 동작: 새로운 의존성 스캔 분석기도 poetry.lock 파일을 파싱하여 프로젝트 의존성을 추출하고, dependency-scanning CI/CD job으로 CycloneDX SBOM 보고서 아티팩트를 생성합니다.

Poetry 프로젝트 마이그레이션#

새로운 의존성 스캔 분석기를 사용하도록 Poetry 프로젝트를 마이그레이션합니다.

사전 요구 사항:

의존성 스캔 분석기를 사용하도록 Poetry 프로젝트를 마이그레이션하는 데 추가 단계가 필요하지 않습니다.

pnpm#

이전 동작: Gemnasium 분석기 기반 의존성 스캔은 gemnasium-dependency_scanning CI/CD job과 pnpm-lock.yaml 파일을 파싱하여 프로젝트 의존성을 추출하는 기능을 사용하여 pnpm 프로젝트를 지원합니다. 지원되는 pnpm 버전과 pnpm-lock.yaml 파일의 조합은 의존성 스캔(Gemnasium 기반) 문서에 자세히 설명되어 있습니다. 이 분석기는 Retire.JS 스캐너를 사용하여 npm 프로젝트에 벤더링된 JavaScript 파일을 스캔할 수 있습니다.

새로운 동작: 새로운 의존성 스캔 분석기도 pnpm-lock.yaml 파일을 파싱하여 프로젝트 의존성을 추출하고, dependency-scanning CI/CD job으로 CycloneDX SBOM 보고서 아티팩트를 생성합니다. 이 분석기는 벤더링된 JavaScript 파일을 스캔하지 않습니다. 자세한 내용과 이용 가능한 조치는 JavaScript 벤더링 라이브러리에 대한 의존성 스캔 지원 종료 공지를 참조합니다. 대체 기능에 대한 지원은 에픽 7186에서 제안되었습니다.

pnpm 프로젝트 마이그레이션#

새로운 의존성 스캔 분석기를 사용하도록 pnpm 프로젝트를 마이그레이션합니다.

사전 요구 사항:

의존성 스캔 분석기를 사용하도록 pnpm 프로젝트를 마이그레이션하는 데 추가 단계가 필요하지 않습니다.

sbt#

이전 동작: Gemnasium 분석기 기반 의존성 스캔은 gemnasium-maven-dependency_scanning CI/CD job을 사용하여 build.sbt 파일에서 애플리케이션을 빌드함으로써 프로젝트 의존성을 추출하는 방식으로 sbt 프로젝트를 지원합니다. 지원되는 Java, Scala, sbt 버전의 조합은 복잡하며, 의존성 스캔(Gemnasium 기반) 문서에 자세히 설명되어 있습니다.

새로운 동작: 새로운 의존성 스캔 분석기는 의존성을 추출하기 위해 프로젝트를 빌드하지 않습니다. 대신 프로젝트는 sbt-dependency-graph 플러그인(sbt 1.4.0 이상에 포함)으로 생성한 dependencies-compile.dot 파일을 제공해야 합니다. 이 파일은 dependency-scanning CI/CD job에 의해 처리되어 CycloneDX SBOM 보고서 아티팩트를 생성합니다. 이 접근법에서는 GitLab이 특정 버전의 Java, Scala, sbt를 지원할 필요가 없습니다. sbt 프로젝트에는 의존성 해석이 지원되지 않습니다.

sbt 프로젝트 마이그레이션#

새로운 의존성 스캔 분석기를 사용하도록 sbt 프로젝트를 마이그레이션합니다.

사전 요구 사항:

sbt 프로젝트를 마이그레이션하려면 다음과 같이 합니다.

  • 프로젝트가 dependencies-compile.dot 파일을 제공하는지 확인합니다. 선행 CI/CD job(예: build)에서 sbt-dependency-graph 플러그인을 구성하여 dependencies-compile.dot 파일을 동적으로 생성하고, 의존성 스캔 job을 실행하기 전에 아티팩트로 내보냅니다.

자세한 내용과 예시는 sbt 활성화 지침을 참조합니다.

setuptools#

이전 동작: Gemnasium 분석기 기반 의존성 스캔은 gemnasium-python-dependency_scanning CI/CD job을 사용하여 setup.py 파일에서 애플리케이션을 빌드함으로써 프로젝트 의존성을 추출하는 방식으로 setuptools 프로젝트를 지원합니다. 지원되는 Python, setuptools 버전의 조합은 의존성 스캔(Gemnasium 기반) 문서에 자세히 설명되어 있습니다.

새로운 동작: 새로운 의존성 스캔 분석기는 의존성을 추출하기 위해 setuptools 프로젝트를 빌드하지 않습니다. 대신 다단계 탐지 모델을 사용합니다.

  • 지원되는 락파일 또는 그래프 내보내기가 저장소나 job 아티팩트에 있으면(예: pip-compile로 생성한 requirements.txt) 분석기가 이를 직접 사용합니다.
  • 지원되는 락파일 또는 그래프 내보내기가 탐지되지 않지만 지원되는 빌드 파일이 있으면 (예: setup.py) .pre stage에서 의존성 해석 job이 실행됩니다. pip-compile을 자동으로 실행하여 dependency-scanning job을 위한 락파일을 생성합니다.

setuptools 프로젝트 마이그레이션#

새로운 의존성 스캔 분석기를 사용하도록 setuptools 프로젝트를 마이그레이션합니다.

사전 요구 사항:

setuptools 프로젝트를 마이그레이션하려면 다음 옵션 중 하나를 선택합니다.

  • 가장 정확한 결과를 위해 프로젝트가 requirements.txt 락파일을 제공하는지 확인합니다. 프로젝트에 pip-compile 명령줄 도구를 구성하고 다음 중 하나를 수행합니다.
    • 명령줄 도구를 개발 워크플로에 영구적으로 통합합니다. 이는 requirements.txt 파일을 저장소에 커밋하고 프로젝트 의존성을 변경할 때마다 업데이트한다는 의미입니다.
    • build CI/CD job에서 명령줄 도구를 사용하여 requirements.txt 파일을 동적으로 생성하고, 의존성 스캔 job을 실행하기 전에 아티팩트로 내보냅니다.
  • 매니페스트 파일로부터 requirements.txt 락파일을 자동으로 생성하려면 의존성 해석을 활성화합니다.

자세한 내용과 예시는 pip 활성화 지침을 참조합니다.

Swift#

이전 동작: Gemnasium 분석기 기반 의존성 스캔은 CI/CD 템플릿이나 스캔 실행 정책을 사용할 때 Swift 프로젝트를 지원하지 않습니다. Swift 지원은 실험적인 Swift CI/CD 구성요소에서만 사용할 수 있습니다.

새로운 동작: 새로운 의존성 스캔 분석기도 Package.resolved 파일을 파싱하여 프로젝트 의존성을 추출하고, dependency-scanning CI/CD job으로 CycloneDX SBOM 보고서 아티팩트를 생성합니다.

Swift 프로젝트 마이그레이션#

새로운 의존성 스캔 분석기를 사용하도록 Swift 프로젝트를 마이그레이션합니다.

사전 요구 사항:

의존성 스캔 분석기를 사용하도록 Swift 프로젝트를 마이그레이션하는 데 추가 단계가 필요하지 않습니다.

uv#

이전 동작: Gemnasium 분석기 기반 의존성 스캔은 gemnasium-dependency_scanning CI/CD job과 uv.lock 파일을 파싱하여 프로젝트 의존성을 추출하는 기능을 사용하여 uv 프로젝트를 지원합니다. 지원되는 uv 버전과 uv.lock 파일의 조합은 의존성 스캔(Gemnasium 기반) 문서에 자세히 설명되어 있습니다.

새로운 동작: 새로운 의존성 스캔 분석기도 uv.lock 파일을 파싱하여 프로젝트 의존성을 추출하고, dependency-scanning CI/CD job으로 CycloneDX SBOM 보고서 아티팩트를 생성합니다.

uv 프로젝트 마이그레이션#

새로운 의존성 스캔 분석기를 사용하도록 uv 프로젝트를 마이그레이션합니다.

사전 요구 사항:

의존성 스캔 분석기를 사용하도록 uv 프로젝트를 마이그레이션하는 데 추가 단계가 필요하지 않습니다.

Yarn#

이전 동작: Gemnasium 분석기 기반 의존성 스캔은 gemnasium-dependency_scanning CI/CD job과 yarn.lock 파일을 파싱하여 프로젝트 의존성을 추출하는 기능을 사용하여 Yarn 프로젝트를 지원합니다. 지원되는 Yarn 버전과 yarn.lock 파일의 조합은 의존성 스캔(Gemnasium 기반) 문서에 자세히 설명되어 있습니다. 이 분석기는 Yarn 의존성에 대해 머지 리퀘스트를 통한 취약점 해결에 사용할 수 있는 조치 데이터를 제공할 수 있습니다. 이 분석기는 Retire.JS 스캐너를 사용하여 Yarn 프로젝트에 벤더링된 JavaScript 파일을 스캔할 수 있습니다.

새로운 동작: 새로운 의존성 스캔 분석기도 yarn.lock 파일을 파싱하여 프로젝트 의존성을 추출하고, dependency-scanning CI/CD job으로 CycloneDX SBOM 보고서 아티팩트를 생성합니다. 이 분석기는 Yarn 의존성에 대한 조치 데이터를 제공하지 않습니다. 자세한 내용은 Yarn 프로젝트 의존성 스캔의 취약점 해결 지원 종료 공지를 참조합니다. 대체 기능에 대한 지원은 에픽 759에서 제안되었습니다. 이 분석기는 벤더링된 JavaScript 파일을 스캔하지 않습니다. 자세한 내용과 이용 가능한 조치는 JavaScript 벤더링 라이브러리에 대한 의존성 스캔 지원 종료 공지를 참조합니다. 대체 기능에 대한 지원은 에픽 7186에서 제안되었습니다.

Yarn 프로젝트 마이그레이션#

새로운 의존성 스캔 분석기를 사용하도록 Yarn 프로젝트를 마이그레이션합니다.

사전 요구 사항:

의존성 스캔 분석기를 사용하도록 Yarn 프로젝트를 마이그레이션하는 데 추가 단계가 필요하지 않습니다. 이전에 머지 리퀘스트를 통한 취약점 해결 기능이나 벤더링된 JavaScript 스캔에 의존했다면, 자세한 내용과 이용 가능한 조치는 위 새로운 동작에 링크된 지원 종료 공지를 참조합니다.

CI/CD 변수 변경 사항#

다음 표는 Gemnasium 분석기 기반의 레거시 의존성 스캔 기능에서 이전에 사용된 CI/CD 변수와 새로운 의존성 스캔 분석기에서의 상태를 나열합니다.

레거시 변수 새로운 분석기에서의 상태
ADDITIONAL_CA_CERT_BUNDLE 유지됨. additional_ca_cert_bundle spec input을 사용하는 것을 권장합니다.
AST_ENABLE_MR_PIPELINES 유지됨.
DEPENDENCY_SCANNING_DISABLED 유지됨.
DS_ANALYZER_IMAGE 유지됨.
DS_EXCLUDED_ANALYZERS 제거됨.
DS_EXCLUDED_PATHS 유지됨. excluded_paths spec input을 사용하는 것을 권장합니다.
DS_GRADLE_RESOLUTION_POLICY 제거됨.
DS_IMAGE_SUFFIX 제거됨.
DS_INCLUDE_DEV_DEPENDENCIES 유지됨. include_dev_dependencies spec input을 사용하는 것을 권장합니다.
DS_JAVA_VERSION 제거됨.
DS_MAX_DEPTH 유지됨. max_scan_depth spec input을 사용하는 것을 권장합니다.
DS_PIP_DEPENDENCY_PATH 유지됨. Python 의존성 해석에만 적용됩니다.
DS_PIP_VERSION 제거됨.
DS_REMEDIATE 제거됨.
DS_REMEDIATE_TIMEOUT 제거됨.
GEMNASIUM_DB_LOCAL_PATH 제거됨.
GEMNASIUM_DB_REF_NAME 제거됨.
GEMNASIUM_DB_REMOTE_URL 제거됨.
GEMNASIUM_DB_UPDATE_DISABLED 제거됨.
GEMNASIUM_IGNORED_SCOPES 제거됨.
GEMNASIUM_LIBRARY_SCAN_ENABLED 제거됨.
GOARCH 제거됨.
GOFLAGS 제거됨.
GOOS 제거됨.
GOPRIVATE 제거됨.
GRADLE_CLI_OPTS 유지됨. Gradle 의존성 해석에만 적용됩니다.
GRADLE_PLUGIN_INIT_PATH 제거됨.
MAVEN_CLI_OPTS MAVEN_ARGS로 대체됨.
PIP_EXTRA_INDEX_URL 유지됨. Python 의존성 해석에만 적용됩니다.
PIP_INDEX_URL 유지됨. Python 의존성 해석에만 적용됩니다.
PIP_REQUIREMENTS_FILE DS_PIP_MANIFEST_FILE_NAME_PATTERN으로 대체됨.
PIPENV_PYPI_MIRROR 제거됨.
SBT_CLI_OPTS 제거됨.
SEARCH_IGNORE_HIDDEN_DIRS 유지됨.
SECURE_ANALYZERS_PREFIX 유지됨. analyzer_image_prefix spec input을 사용하는 것을 권장합니다.
SECURE_LOG_LEVEL 유지됨. analyzer_log_level spec input을 사용하는 것을 권장합니다.

Removed로 표시된 변수는 새로운 분석기에서 무시됩니다. 다른 job에서도 사용하지 않는다면 CI/CD 구성에서 제거합니다.

**Replaced by <new-name>**로 표시된 변수는 계속 동작하지만 지원이 종료되었습니다. 다음 GitLab 메이저 버전에서 제거될 예정입니다. CI/CD 구성을 새로운 변수 이름으로 업데이트합니다.

Kept로 표시된 변수는 새로운 분석기에서도 허용되며 사용 가능한 CI/CD 변수 참조에 문서화된 대로 동작합니다. 유지된 변수 중 일부는 이제 의존성 해석 job에만 적용되며, 표에 그렇게 표시되어 있습니다.

기존 사용자 구성(예: 스캔 실행 정책)의 전환을 원활하게 하기 위해 v2 템플릿은 이러한 CI/CD 변수와 하위 호환됩니다. 설정된 경우, 이 새로운 템플릿에 도입된 해당 spec:inputs보다 우선합니다.

.gitlab-ci.yml에서 v2 CI/CD 템플릿을 직접 사용하는 경우, 분석기를 구성할 때 CI/CD 변수보다 spec input을 사용하는 것을 권장합니다. spec input은 파이프라인 생성 시점에 검증되고, 더 명확한 오류 메시지를 제공하며, 템플릿 include 범위로 제한됩니다. spec input을 아직 사용할 수 없는 스캔 실행 정책이나 보안 구성 프로필을 통해 의존성 스캔을 구성하는 경우에는 CI/CD 변수를 사용합니다.

v2 템플릿에 새로 도입된 CI/CD 변수#

v2 템플릿은 다음 변수를 추가합니다. 자세한 내용은 사용 가능한 spec input 및 사용 가능한 CI/CD 변수 참조 문서를 확인합니다.

변수 Spec input 대응값 용도
ANALYZER_ARTIFACT_DIR (없음) CycloneDX SBOM 보고서가 저장되는 디렉터리입니다.
DS_API_SCAN_DOWNLOAD_DELAY api_scan_download_delay 취약점 스캔 결과를 다운로드하기 전의 초기 지연 시간입니다.
DS_API_TIMEOUT api_timeout 의존성 스캔 SBOM 스캔 API의 타임아웃입니다.
DS_DISABLED_RESOLUTION_JOBS disabled_resolution_jobs 비활성화할 의존성 해석 job을 쉼표로 구분한 목록입니다(maven, gradle, python).
DS_ENABLE_MANIFEST_FALLBACK enable_manifest_fallback 락파일이나 의존성 그래프 내보내기를 사용할 수 없을 때 매니페스트 폴백을 활성화합니다.
DS_ENABLE_VULNERABILITY_SCAN enable_vulnerability_scan 생성된 SBOM의 취약점 스캔 여부를 전환합니다.
DS_FF_LINK_COMPONENTS_TO_GIT_FILES (없음) (베타) 의존성 목록의 구성요소를 동적으로 생성된 파일이 아니라 저장소에 커밋된 파일로 연결합니다.
DS_GRADLE_RESOLUTION_IMAGE gradle_resolution_image Gradle 의존성 해석 job에서 사용하는 이미지입니다.
DS_MAVEN_RESOLUTION_IMAGE maven_resolution_image Maven 의존성 해석 job에서 사용하는 이미지입니다.
DS_MAVEN_DEPENDENCY_PLUGIN_VERSION maven_dependency_plugin_version Maven 의존성 해석 중에 사용되는 maven-dependency-plugin의 버전입니다.
DS_PIP_MANIFEST_FILE_NAME_PATTERN pip_manifest_file_name_pattern pip 매니페스트 파일의 glob 패턴입니다.
DS_PIPCOMPILE_LOCKFILE_FILE_NAME_PATTERN pipcompile_lockfile_file_name_pattern pip-compile 락파일의 glob 패턴입니다.
DS_PYTHON_RESOLUTION_IMAGE python_resolution_image Python 의존성 해석 job에서 사용하는 이미지입니다.
DS_STATIC_REACHABILITY_ENABLED enable_static_reachability 정적 도달 가능성을 활성화합니다.

SBOM을 사용한 의존성 스캔으로 마이그레이션

GitLab v19.5
Tier: Ultimate
Offering: GitLab.com, GitLab Self-Managed, GitLab Dedicated
원문 보기

요약

의존성 스캔 기능이 GitLab SBOM 취약점 스캐너로 업그레이드됩니다. GitLab 의존성 스캔을 사용하고 있고 다음 조건 중 하나에 해당하면 이 마이그레이션 가이드를 따릅니다. 의존성 스캔 CI/CD job이 의존성 스캔 CI/CD 템플릿 중 하나를 포함하여 구성되어 있습니다.

히스토리
  • Gemnasium 분석기 기반의 의존성 스캔 기능은 GitLab 17.9에서 지원이 종료되었으며, GitLab 20.0에서 제거가 제안되었습니다. 다만 제거 일정은 확정되지 않았으므로 필요에 따라 Gemnasium을 계속 사용할 수 있습니다.

의존성 스캔 기능이 GitLab SBOM 취약점 스캐너로 업그레이드됩니다. 이 변경에 따라 SBOM을 사용하는 의존성 스캔 기능과 새로운 의존성 스캔 분석기가 Gemnasium 분석기 기반의 레거시 의존성 스캔 기능을 대체합니다. 다만 이 전환에 따른 중요한 변경 사항으로 인해 기존 프로젝트는 자동으로 마이그레이션되지 않습니다.

GitLab 의존성 스캔을 사용하고 있고 다음 조건 중 하나에 해당하면 이 마이그레이션 가이드를 따릅니다.

  • 의존성 스캔 CI/CD job이 의존성 스캔 CI/CD 템플릿 중 하나를 포함하여 구성되어 있습니다.

      include:
        - template: Jobs/Dependency-Scanning.gitlab-ci.yml
        - template: Jobs/Dependency-Scanning.latest.gitlab-ci.yml
    
  • 의존성 스캔 CI/CD job이 스캔 실행 정책을 사용하여 구성되어 있습니다.

  • 의존성 스캔 CI/CD job이 파이프라인 실행 정책을 사용하여 구성되어 있습니다.

마이그레이션 준비#

마이그레이션 작업량을 평가하고 경로를 파악하며 사전 요구 사항을 확인하고 영향을 받는 프로젝트를 확인합니다.

마이그레이션 작업량 추정#

의존성 스캔 마이그레이션 평가 도구는 프로젝트에서 의존성 스캔이 구성된 방식을 기반으로 맞춤 마이그레이션 체크리스트를 생성합니다. 이 도구는 활성화 경로, 언어 생태계, CI/CD 커스터마이징, (GitLab Self-Managed 인스턴스의 경우) 패키지 메타데이터 데이터베이스 동기화 상태를 확인합니다. 이 평가 도구는 다음을 생성합니다.

  • 작업량 추정치(minimal, moderate, significant, complex 중 하나).
  • 설정에 적용되는 마이그레이션 단계 체크리스트(이 가이드의 관련 절로 연결되는 직접 링크 포함).
  • 추가 주의가 필요한 상황에 대한 플래그(스캔 실행 정책에서 파이프라인 실행 정책으로 전환해야 하는 프로젝트 등).

이 평가 도구는 브라우저에서만 실행되며 데이터를 어디로도 전송하지 않습니다.

마이그레이션 경로 파악#

기존 구성은 자동으로 마이그레이션되지 않습니다. 새 기능을 사용하려면 구성을 업데이트해야 합니다.

다음 목록에서 자신에게 해당하는 마이그레이션 경로를 확인합니다.

  • 안정 템플릿(Jobs/Dependency-Scanning.gitlab-ci.yml): 일반 마이그레이션 단계에 따라 v2 템플릿으로 전환한 다음, 프로젝트에서 사용하는 생태계에 대한 언어별 지침을 적용합니다.
  • 최신 템플릿(Jobs/Dependency-Scanning.latest.gitlab-ci.yml): 안정 템플릿과 동일합니다. 일반 마이그레이션 단계에 따라 v2 템플릿으로 전환한 다음 언어별 지침을 적용합니다.
  • CI/CD 구성요소: 메인 구성요소는 이미 새로운 분석기를 사용하지만, 이전 버전(v0, v1)은 분석기 버전과 지원되는 입력값이 뒤처져 있습니다. include를 v2 버전으로 올리고 언어별 지침을 적용합니다. Android, Rust, Swift, CocoaPods용 전용 구성요소를 사용하는 경우 메인 구성요소로 마이그레이션합니다.
  • 스캔 실행 정책(SEP) 또는 파이프라인 실행 정책(PEP): 정책이 v2 템플릿을 참조하도록 수정한 다음, 대상 프로젝트에 대해 일반 마이그레이션 단계와 언어별 지침을 따릅니다. SEP와 PEP는 CI/CD 템플릿을 기반으로 만들어지므로, SEP가 업데이트되면 템플릿 변경 사항이 대상 범위의 모든 프로젝트에 자동으로 전파됩니다. PEP의 경우에는 정책의 CI/CD 구성을 직접 수정하여 v2 템플릿을 참조하도록 합니다.

사전 요구 사항 확인: 패키지 메타데이터 데이터베이스 동기화#

새로운 의존성 스캔 분석기는 프로젝트에서 사용하는 패키지 유형에 대해 패키지 메타데이터 데이터베이스(PMDB)가 동기화되어 있어야 합니다. GitLab.com에서는 인스턴스가 지원되는 모든 패키지 유형에 대한 데이터를 이미 동기화합니다. GitLab Self-Managed 및 GitLab Dedicated에서는 관리자가 동기화를 구성합니다.

마이그레이션 전에 관리자는 다음을 수행해야 합니다.

프로젝트에서 사용하는 패키지 유형에 대해 PMDB 동기화가 완료되지 않으면 새로운 분석기가 해당 구성요소의 권고(advisory)를 확인할 수 없으며, 마이그레이션 후 보안 결과가 누락될 수 있습니다.

영향을 받는 프로젝트 확인#

레거시 의존성 스캔 기능을 사용하는 프로젝트를 확인합니다. 보안 인벤토리는 그룹과 프로젝트 전체의 스캐너 커버리지를 파악할 수 있게 해줍니다. 이 단계를 시작점으로 사용하는 것을 권장합니다.

CI/CD 구성에서도 레거시 사용 여부를 확인할 수 있습니다.

  • .gitlab-ci.yml 파일에서 레거시 템플릿인 Jobs/Dependency-Scanning.gitlab-ci.yml 또는 Jobs/Dependency-Scanning.latest.gitlab-ci.yml을 include하는 경우.
  • 스캔 실행 정책과 파이프라인 실행 정책에서 동일한 템플릿을 참조하는 경우.
  • 레거시 분석기의 job 이름(gemnasium-dependency_scanning, gemnasium-maven-dependency_scanning, gemnasium-python-dependency_scanning)이 .gitlab-ci.yml 파일, 정책 YAML, 또는 needs:나 dependencies:에서 이를 사용하는 다운스트림 job에 있는 경우.

스캔 볼륨 계획#

처리량이 많은 프로젝트를 마이그레이션하기 전에, 프로젝트의 모든 파이프라인에서 시간당 SBOM 스캔 수를 추정합니다. 프로젝트당 시간당 50건을 초과하는 스캔은 더 낮은 우선순위로 실행되며 완료되는 데 더 오래 걸릴 수 있습니다.

스캔 볼륨을 줄이려면 중복 파이프라인을 피합니다. 각 스캔의 작업량을 줄이려면 스캔 범위 옵션을 사용합니다.

변경 사항 이해#

Gemnasium 분석기에서 새로운 의존성 스캔 분석기로의 전환은 중요한 기술적 발전입니다. 대부분의 프로젝트는 SBOM을 사용하는 의존성 스캔으로 마이그레이션에서 설명한 CI/CD 구성 전환 외에는 아무것도 변경할 필요가 없습니다. 이 절에서 설명하는 변경 사항은 일부 프로젝트(특히 락파일이 없는 Gradle, Maven, Python)에 추가 단계가 필요한 이유를 이해하는 데 도움이 됩니다.

주요 변경 사항:

  • 언어 지원 및 파일 커버리지 확대: 새로운 분석기는 Gemnasium 분석기가 지원하는 Python 및 Java 버전에 제한되지 않으며, 확대된 파일 커버리지의 혜택을 받습니다.
  • 성능 향상: 새로운 분석기는 기존 락파일 또는 의존성 그래프 내보내기를 우선하며, 생태계별 해석 job은 이러한 파일이 없는 프로젝트에 대해서만 실행됩니다.
  • 더 작은 공격 표면과 더 유연한 구성: 분석기 이미지는 락파일과 그래프 내보내기만 파싱합니다. 생태계별 설정 (프라이빗 레지스트리, 사용자 정의 CA 번들, JVM 옵션)은 해당 의존성 해석 job에만 적용됩니다. 빌드 환경에 맞게 해석 이미지를 재정의할 수 있습니다.

보안 스캔에 대한 새로운 접근법#

레거시 의존성 스캔 기능을 사용할 때는 모든 스캔 작업이 CI/CD 파이프라인에서 수행됩니다. 스캔을 실행하면 Gemnasium 분석기가 두 가지 중요한 작업을 동시에 처리합니다. 프로젝트의 의존성을 식별하고, GitLab 권고 데이터베이스의 로컬 복사본과 자체 보안 스캔 엔진을 사용하여 해당 의존성에 대한 보안 분석을 즉시 수행합니다. 그런 다음 결과를 다양한 보고서(CycloneDX SBOM 및 의존성 스캔 보안 보고서)로 출력합니다.

반면 SBOM을 사용하는 의존성 스캔 기능은 의존성 탐지를 정적 도달 가능성 분석이나 취약점 스캔 같은 다른 분석과 분리하는 분해된 의존성 분석 접근법에 의존합니다. 이러한 작업은 여전히 동일한 CI/CD job에서 실행되지만 분리된 재사용 가능한 구성요소로 동작합니다. 예를 들어 취약점 스캔 분석은 GitLab의 지속적 취약점 스캔 기능도 지원하는 통합 엔진인 GitLab SBOM 취약점 스캐너를 재사용합니다. 이는 향후 통합 지점의 기회도 열어주며 더 유연한 취약점 스캔 워크플로를 가능하게 합니다.

SBOM을 사용하는 의존성 스캔이 애플리케이션을 스캔하는 방법에 대해 자세히 알아봅니다.

Gradle, Maven, Python의 의존성 탐지#

새로운 분석기는 Gradle, Maven, Python 프로젝트에서 의존성을 발견하는 방식을 변경합니다. 의존성을 확인하기 위해 애플리케이션을 빌드하는 대신, 분석기는 "정확도는 다이얼처럼 조절 가능하다"는 원칙을 따르는 다단계 탐지 모델을 사용합니다.

  1. 락파일 또는 의존성 그래프 내보내기: 지원되는 파일이 저장소에 커밋되거나 job 아티팩트로 전달된 경우(예: maven.graph.json, dependencies.lock, requirements.txt, Pipfile.lock), 분석기가 이를 직접 사용합니다. 이것이 가장 정확한 옵션입니다.
  2. 의존성 해석: Maven, Gradle, Python 프로젝트에 지원되는 파일이 없으면 분석기가 자동으로 파일을 생성하려고 시도합니다. 해석 job은 .pre stage에서 최소한의 생태계 이미지와 네이티브 명령(예: mvn dependency:tree, pip-compile, gradle dependencies)으로 실행됩니다. dependency-scanning job은 생성된 아티팩트를 사용합니다.
  3. 매니페스트 폴백: 락파일 또는 의존성 그래프 파일이 없으면 분석기가 지원되는 매니페스트 파일(예: pom.xml, requirements.txt, build.gradle, build.gradle.kts)을 파싱하여 직접 의존성만 추출합니다. 전이 의존성은 탐지되지 않으며 정확히 확인된 버전은 결정할 수 없습니다.

GitLab 19.0부터는 의존성 해석과 매니페스트 폴백이 기본적으로 활성화되어 있습니다.

가장 정확한 결과를 얻으려면 락파일 또는 의존성 그래프 내보내기를 저장소에 커밋하거나, 프로젝트의 실제 빌드 환경을 사용하는 선행 CI/CD job에서 생성합니다. 다음 절에서는 각 언어와 패키지 관리자에서 사용할 수 있는 옵션을 설명합니다.

스캔 결과 액세스#

v2 템플릿은 레거시 템플릿과 동일한 gl-dependency-scanning-report.json job 아티팩트를 생성합니다. 이 아티팩트를 사용하는 (needs: 또는 dependencies:) 다운스트림 job은 마이그레이션 후에도 계속 동작하지만, 이를 생성하는 job 이름은 gemnasium-dependency_scanning(및 그 Maven·Python 변형)에서 dependency-scanning으로 변경됩니다.

SBOM을 사용하는 의존성 스캔으로 마이그레이션#

마이그레이션 방법은 프로젝트에서 의존성 스캔이 활성화된 방식에 따라 다릅니다. 각 하위 절에서는 제거할 커스터마이징, 업데이트할 참조, 최소한의 전/후 예시를 설명합니다.

자신에게 해당하는 하위 절을 찾으려면 마이그레이션 경로 파악을 참조합니다. 다국어 프로젝트의 경우 언어별 지침에서 각 언어에 대한 단계를 완료합니다.

안정 CI/CD 템플릿을 사용하여 마이그레이션#

기존 파이프라인의 중단을 방지하기 위해 안정 템플릿(Jobs/Dependency-Scanning.gitlab-ci.yml)은 레거시 Gemnasium 분석기를 실행하며 새로운 분석기를 사용하도록 업데이트되지 않습니다. 새로운 분석기를 사용하려면 include를 v2 템플릿 (Jobs/Dependency-Scanning.v2.gitlab-ci.yml)으로 전환합니다.

안정 템플릿과 비교했을 때 v2 템플릿은 다음과 같습니다.

  • 레거시 gemnasium-dependency_scanning, gemnasium-maven-dependency_scanning, gemnasium-python-dependency_scanning job 대신 새로운 dependency-scanning job을 실행합니다.
  • 레거시 job 이름을 미리 정의하지 않습니다. gemnasium-* job을 재정의하는 커스터마이징(예: .gitlab-ci.yml에서 확장하는 방식)은 더 이상 적용되지 않으며 제거하거나 다시 작성해야 합니다.
  • gl-dependency-scanning-report.json job 아티팩트를 계속 생성합니다. needs: 또는 dependencies:를 통해 이 아티팩트를 사용하는 다운스트림 job은 마이그레이션 후에도 계속 동작하지만, 레거시 gemnasium-* job 이름 대신 새로운 dependency-scanning job 이름을 참조해야 합니다.
  • 동일한 CI/CD 변수를 허용하며, 일부 변경 사항은 CI/CD 변수 변경 사항에 문서화되어 있습니다.

사전 요구 사항:

  • 프로젝트에 대한 Developer, Maintainer, Owner 권한.

안정 CI/CD 템플릿을 사용하여 마이그레이션하려면 다음과 같이 합니다.

  1. .gitlab-ci.yml 또는 include된 파일에서 레거시 gemnasium-* job을 재정의하는 커스터마이징을 제거합니다. v2 템플릿은 이 job 이름들을 정의하지 않으므로, 재정의가 남아 있으면 잘못된 CI/CD 구성으로 인해 파이프라인이 실패할 수 있습니다.
  2. include 문이 v2 템플릿을 참조하도록 업데이트합니다.
  3. needs: 또는 dependencies:에서 레거시 job 이름을 참조하는 다운스트림 job이 대신 dependency-scanning을 사용하도록 업데이트합니다.
  4. 프로젝트의 생태계에 대한 언어별 지침을 적용합니다.

이전:

include:
  - template: Jobs/Dependency-Scanning.gitlab-ci.yml

# Customization that targets the legacy job name.
gemnasium-dependency_scanning:
  variables:
    SECURE_LOG_LEVEL: debug

# Downstream job that consumes the legacy report.
export-security-report:
  stage: deploy
  needs:
    - job: gemnasium-dependency_scanning
      artifacts: true
  script:
    - ./publish.sh gl-dependency-scanning-report.json

이후:

include:
  - template: Jobs/Dependency-Scanning.v2.gitlab-ci.yml
    inputs:
      analyzer_log_level: debug

export-security-report:
  stage: deploy
  needs:
    - job: dependency-scanning
      artifacts: true
  script:
    - ./publish.sh gl-dependency-scanning-report.json

파이프라인에서 의존성 해석 전에 커스텀 job을 실행해야 하는 경우 (예: 프라이빗 레지스트리에 인증하거나 빌드 캐시를 준비하는 경우), 해석 job 순서 조정을 참조합니다.

최신 CI/CD 템플릿을 사용하여 마이그레이션#

최신 템플릿(Jobs/Dependency-Scanning.latest.gitlab-ci.yml)은 기본적으로 레거시 Gemnasium 분석기를 실행합니다. 과도기적 단계로, DS_ENFORCE_NEW_ANALYZER CI/CD 변수를 통해 새로운 분석기로의 opt-in을 지원하지만, 새로운 분석기의 v1 버전에서만 가능하며 의존성 해석 job 없이 동작합니다.

사전 요구 사항:

  • 프로젝트에 대한 Developer, Maintainer, Owner 권한.

Maven, Gradle, Python 프로젝트의 경우 다음 중 하나를 수행해야 합니다.

v2 템플릿과 완전히 동일한 수준(v2 분석기, 의존성 해석, 매니페스트 폴백)을 원한다면 안정 템플릿 단계에 따라 v2 템플릿으로 전환합니다. 마이그레이션 작업은 동일합니다. 레거시 gemnasium-* job을 대상으로 하는 커스터마이징을 제거하고, include 문을 업데이트하고, 다운스트림 job을 업데이트합니다.

이미 DS_ENFORCE_NEW_ANALYZER를 통해 새로운 DS 분석기 사용에 opt-in한 경우 전환이 더 간단합니다. 마이그레이션을 완료하기 전에 새로운 템플릿이 도입하는 변경 사항을 검토합니다.

파이프라인에서 의존성 해석 전에 커스텀 job을 실행해야 하는 경우 (예: 프라이빗 레지스트리에 인증하거나 빌드 캐시를 준비하는 경우), 해석 job 순서 조정을 참조합니다.

CI/CD 구성요소를 사용하여 마이그레이션#

Note

GitLab Self-Managed에서는 GitLab.com CI/CD 구성요소를 사용하기 위한 현재 제한 사항을 검토합니다.

메인 의존성 스캔 CI/CD 구성요소의 v2 릴리스는 v2 템플릿과 동등합니다. 새로운 분석기를 v2 버전으로 실행하며 동일한 입력값을 지원합니다. 이전 릴리스(v0, v1)는 분석기 버전과 지원되는 기능에서 뒤처져 있으므로, v0 또는 v1을 include하는 프로젝트는 include를 v2로 올려야 합니다.

사전 요구 사항:

  • 프로젝트에 대한 Developer, Maintainer, Owner 권한.

CI/CD 구성요소를 사용하여 마이그레이션하려면 다음과 같이 합니다.

  1. 메인 구성요소의 버전 2를 참조하도록 구성요소 include 문을 업데이트합니다.
  2. v2에서 이름이 변경되거나 제거된 입력값을 교체합니다. 메인 구성요소의 v2 릴리스는 v2 CI/CD 템플릿과 동일한 입력값 집합을 제공합니다. 전체 목록은 사용 가능한 spec 입력값 참조 문서를 확인합니다.
  3. 프로젝트의 생태계에 대한 언어별 지침을 적용합니다.

Android, Rust, Swift, CocoaPods용 전용 구성요소를 사용하는 경우 메인 구성요소로 마이그레이션합니다. 메인 구성요소는 이제 지원되는 모든 언어와 패키지 관리자를 다룹니다. 전용 구성요소는 더 이상 필요하지 않습니다.

이전:

include:
  - component: $CI_SERVER_FQDN/components/dependency-scanning/main@1

이후:

include:
  - component: $CI_SERVER_FQDN/components/dependency-scanning/main@2

파이프라인에서 의존성 해석 전에 커스텀 job을 실행해야 하는 경우 (예: 프라이빗 레지스트리에 인증하거나 빌드 캐시를 준비하는 경우), 해석 job 순서 조정을 참조합니다.

스캔 실행 정책을 사용하여 마이그레이션#

스캔 실행 정책은 정책이 대상으로 하는 프로젝트 전체에 CI/CD 템플릿을 강제합니다. 의존성 스캔의 경우 정책의 template 필드가 실행할 템플릿을 선택합니다. 새로운 분석기는 v2 템플릿 버전을 통해 사용할 수 있습니다.

각 대상 프로젝트에서 정책의 동작은 해당 CI/CD 템플릿을 직접 include하는 프로젝트의 동작과 동일합니다. 정책이 v2를 참조하도록 업데이트되면 안정 CI/CD 템플릿의 단계가 대상 범위의 각 프로젝트에 적용됩니다. 즉 레거시 gemnasium-* job을 대상으로 하는 커스터마이징을 제거하고 이를 사용하는 다운스트림 job을 업데이트합니다.

사전 요구 사항:

  • 그룹에 대한 Owner 권한 또는 manage_security_policy_link 권한이 있는 사용자 지정 역할.

스캔 실행 정책을 사용하여 마이그레이션하려면 다음과 같이 합니다.

  1. 스캔 실행 정책을 수정하여 dependency_scanning 액션에 template: v2를 설정합니다.
  2. 정책이 적용되는 각 프로젝트에서 레거시 gemnasium-* job을 재정의하는 커스터마이징을 제거하고, 이를 참조하는 다운스트림 job을 업데이트합니다.
  3. 정책이 적용되는 프로젝트의 생태계에 대한 언어별 지침을 적용합니다.

이전:

scan_execution_policy:
  - name: Enforce dependency scanning
    enabled: true
    rules:
      - type: pipeline
        branch_type: all
    actions:
      - scan: dependency_scanning

이후:

scan_execution_policy:
  - name: Enforce dependency scanning
    enabled: true
    rules:
      - type: pipeline
        branch_type: all
    actions:
      - scan: dependency_scanning
        template: v2

의존성 해석 또는 매니페스트 폴백이 다루지 않는 프로젝트#

스캔 실행 정책은 레거시 Gemnasium 분석기의 build support 기능을 사용하여 기본 빌드 환경을 제공합니다. 새로운 분석기는 커밋된 락파일 또는 의존성 그래프 내보내기가 없는 프로젝트의 의존성을 탐지하기 위해 의존성 해석 또는 매니페스트 폴백에 의존합니다.

이러한 메커니즘은 이전에 build support에 의존했던 대부분의 프로젝트를 다룹니다. 일부 상황에서는 여전히 파이프라인 실행 정책의 추가적인 유연성이 유용합니다.

  • 프로젝트의 생태계가 현재 의존성 해석 및 매니페스트 폴백의 범위 밖에 있는 경우(예: Scala/sbt).
  • 의존성 해석에 사용 가능한 CI/CD 변수 범위를 넘어서는 설정 단계가 필요한 경우(예: 비표준 자격 증명으로 프라이빗 레지스트리에 인증하는 경우).

이러한 프로젝트에는 파이프라인 실행 정책을 사용합니다. 이를 통해 CI/CD job을 더 자유롭게 커스터마이징하고 락파일 또는 의존성 그래프 내보내기를 수동으로 생성할 수 있습니다.

파이프라인 실행 정책을 사용하여 마이그레이션#

파이프라인 실행 정책은 일반적으로 의존성 스캔 템플릿이나 CI/CD 구성요소와 프로젝트별 커스터마이징을 포함하는 완전한 CI/CD 구성을 강제합니다. 적용되는 마이그레이션 단계는 정책의 CI/CD 구성이 무엇을 포함하는지에 따라 다릅니다.

사전 요구 사항:

  • 그룹에 대한 Owner 권한 또는 manage_security_policy_link 권한이 있는 사용자 지정 역할.

파이프라인 실행 정책을 사용하여 마이그레이션하려면 다음과 같이 합니다.

  1. 정책이 어떤 템플릿 또는 구성요소를 사용하는지 확인합니다.

  2. 정책의 CI/CD 구성에 해당 단계를 적용합니다.

  3. 정책이 적용되는 프로젝트의 생태계에 대한 언어별 지침을 적용합니다.

프로젝트, 그룹, 인스턴스에 설정된 CI/CD 변수(그리고 정책 자체의 variables: 블록에 정의된 변수)는 새로운 dependency-scanning job과 그 앞에서 실행되는 해석 job에 계속 적용됩니다. v2에서 상태가 변경된 변수는 CI/CD 변수 변경 사항을 참조합니다.

파이프라인에서 의존성 해석 전에 커스텀 job을 실행해야 하는 경우 (예: 프라이빗 레지스트리에 인증하거나 빌드 캐시를 준비하는 경우), 해석 job 순서 조정을 참조합니다.

기타 고려 사항#

다음 커스터마이징은 프로젝트에서 의존성 스캔이 어떤 방식으로 활성화되어 있는지와 관계없이 적용됩니다.

해석 job 순서 조정#

기본적으로 해석 job은 .pre stage에서 실행됩니다. 파이프라인에 의존성 스캔 실행 전에 완료되어야 하는 커스텀 job이 있는 경우 (예: 프라이빗 레지스트리에 인증하거나 빌드 캐시를 준비하는 .pre job), 해석 job은 이러한 커스텀 job 이후가 아니라 병렬로 실행됩니다. 해석 job은 커스텀 job이 생성하는 아티팩트를 볼 수 없습니다.

의도한 순서를 유지하려면 v2 템플릿 또는 구성요소의 resolution_jobs_stage 입력값을 사용하여 해석 job을 이후 stage로 이동시킵니다.

stages:
  - .pre
  - prepare
  - test

include:
  - template: Jobs/Dependency-Scanning.v2.gitlab-ci.yml
    inputs:
      resolution_jobs_stage: prepare

private-registry-cache-build:
  stage: .pre
  script:
    - ./scripts/login-private-registry.sh
    - ./scripts/build-dependency-cache.sh

그러면 해석 job은 커스텀 .pre job이 완료된 후 prepare stage에서 실행됩니다. 해석 job 동작을 제어하는 입력값의 전체 목록은 사용 가능한 CI/CD 입력값을 참조합니다.

언어별 지침#

새로운 의존성 스캔 분석기로 마이그레이션할 때는 프로젝트의 프로그래밍 언어와 패키지 관리자에 따라 특정 조정이 필요합니다. 이 지침은 CI/CD 템플릿, 스캔 실행 정책, 의존성 스캔 CI/CD 구성요소 중 어떤 방식으로 구성했는지와 관계없이 새로운 의존성 스캔 분석기를 사용할 때마다 적용됩니다. 다음 절에서는 지원되는 각 언어와 패키지 관리자에 대한 자세한 지침을 확인할 수 있습니다. 각 지침에서는 다음을 설명합니다.

  • 의존성 탐지 방식이 어떻게 변경되는지
  • 어떤 파일을 구체적으로 제공해야 하는지
  • 워크플로에 아직 포함되어 있지 않다면 이러한 파일을 생성하는 방법

새로운 의존성 스캔 분석기에 대한 의견은 이 피드백 이슈에 공유합니다.

Bundler#

이전 동작: Gemnasium 분석기 기반 의존성 스캔은 gemnasium-dependency_scanning CI/CD job과 Gemfile.lock 파일(대체 파일명 gems.locked도 지원)을 파싱하여 프로젝트 의존성을 추출하는 기능을 사용하여 Bundler 프로젝트를 지원합니다. 지원되는 Bundler 버전과 Gemfile.lock 파일의 조합은 의존성 스캔(Gemnasium 기반) 문서에 자세히 설명되어 있습니다.

새로운 동작: 새로운 의존성 스캔 분석기도 Gemfile.lock 파일(대체 파일명 gems.locked도 지원)을 파싱하여 프로젝트 의존성을 추출하고, dependency-scanning CI/CD job으로 CycloneDX SBOM 보고서 아티팩트를 생성합니다.

Bundler 프로젝트 마이그레이션#

새로운 의존성 스캔 분석기를 사용하도록 Bundler 프로젝트를 마이그레이션합니다.

사전 요구 사항:

의존성 스캔 분석기를 사용하도록 Bundler 프로젝트를 마이그레이션하는 데 추가 단계가 필요하지 않습니다.

CocoaPods#

이전 동작: Gemnasium 분석기 기반 의존성 스캔은 CI/CD 템플릿이나 스캔 실행 정책을 사용할 때 CocoaPods 프로젝트를 지원하지 않습니다. CocoaPods 지원은 실험적인 CocoaPods CI/CD 구성요소에서만 사용할 수 있습니다.

새로운 동작: 새로운 의존성 스캔 분석기는 Podfile.lock 파일을 파싱하여 프로젝트 의존성을 추출하고, dependency-scanning CI/CD job으로 CycloneDX SBOM 보고서 아티팩트를 생성합니다.

CocoaPods 프로젝트 마이그레이션#

새로운 의존성 스캔 분석기를 사용하도록 CocoaPods 프로젝트를 마이그레이션합니다.

사전 요구 사항:

의존성 스캔 분석기를 사용하도록 CocoaPods 프로젝트를 마이그레이션하는 데 추가 단계가 필요하지 않습니다.

Composer#

이전 동작: Gemnasium 분석기 기반 의존성 스캔은 gemnasium-dependency_scanning CI/CD job과 composer.lock 파일을 파싱하여 프로젝트 의존성을 추출하는 기능을 사용하여 Composer 프로젝트를 지원합니다. 지원되는 Composer 버전과 composer.lock 파일의 조합은 의존성 스캔(Gemnasium 기반) 문서에 자세히 설명되어 있습니다.

새로운 동작: 새로운 의존성 스캔 분석기도 composer.lock 파일을 파싱하여 프로젝트 의존성을 추출하고, dependency-scanning CI/CD job으로 CycloneDX SBOM 보고서 아티팩트를 생성합니다.

Composer 프로젝트 마이그레이션#

새로운 의존성 스캔 분석기를 사용하도록 Composer 프로젝트를 마이그레이션합니다.

사전 요구 사항:

의존성 스캔 분석기를 사용하도록 Composer 프로젝트를 마이그레이션하는 데 추가 단계가 필요하지 않습니다.

Conan#

이전 동작: Gemnasium 분석기 기반 의존성 스캔은 gemnasium-dependency_scanning CI/CD job과 conan.lock 파일을 파싱하여 프로젝트 의존성을 추출하는 기능을 사용하여 Conan 프로젝트를 지원합니다. 지원되는 Conan 버전과 conan.lock 파일의 조합은 의존성 스캔(Gemnasium 기반) 문서에 자세히 설명되어 있습니다.

새로운 동작: 새로운 의존성 스캔 분석기도 conan.lock 파일을 파싱하여 프로젝트 의존성을 추출하고, dependency-scanning CI/CD job으로 CycloneDX SBOM 보고서 아티팩트를 생성합니다.

Conan 프로젝트 마이그레이션#

새로운 의존성 스캔 분석기를 사용하도록 Conan 프로젝트를 마이그레이션합니다.

사전 요구 사항:

의존성 스캔 분석기를 사용하도록 Conan 프로젝트를 마이그레이션하는 데 추가 단계가 필요하지 않습니다.

Go#

이전 동작: Gemnasium 분석기 기반 의존성 스캔은 gemnasium-dependency_scanning CI/CD job과 go.mod, go.sum 파일을 사용하여 프로젝트 의존성을 추출하는 기능을 사용하여 Go 프로젝트를 지원합니다. 이 분석기는 탐지된 의존성의 정확도를 높이기 위해 go list 명령을 실행하려 시도하며, 이를 위해서는 정상적으로 동작하는 Go 환경이 필요합니다. 실패하면 go.sum 파일 파싱으로 폴백합니다. 지원되는 Go 버전과 go.mod, go.sum 파일의 조합은 의존성 스캔(Gemnasium 기반) 문서에 자세히 설명되어 있습니다.

새로운 동작: 새로운 의존성 스캔 분석기는 의존성을 추출하기 위해 프로젝트에서 go list 명령을 실행하려 시도하지 않으며, 더 이상 go.sum 파일 파싱으로 폴백하지 않습니다. 대신 프로젝트는 최소한 go.mod 파일과, 가급적 Go 툴체인의 go mod graph 명령으로 생성한 go.graph 파일을 제공해야 합니다. go.graph 파일은 탐지된 구성요소의 정확도를 높이고 의존성 경로와 같은 기능을 활성화하는 의존성 그래프를 생성하는 데 필요합니다. 이러한 파일은 dependency-scanning CI/CD job에 의해 처리되어 CycloneDX SBOM 보고서 아티팩트를 생성합니다. 이 접근법에서는 GitLab이 특정 버전의 Go를 지원할 필요가 없습니다. Go 프로젝트에는 의존성 해석이 지원되지 않습니다.

Go 프로젝트 마이그레이션#

새로운 의존성 스캔 분석기를 사용하도록 Go 프로젝트를 마이그레이션합니다.

사전 요구 사항:

Go 프로젝트를 마이그레이션하려면 다음과 같이 합니다.

  • 프로젝트가 go.mod 및 go.graph 파일을 제공하는지 확인합니다. 선행 CI/CD job(예: build)에서 Go 툴체인의 go mod graph 명령을 구성하여 go.graph 파일을 동적으로 생성하고, 의존성 스캔 job을 실행하기 전에 아티팩트로 내보냅니다.

자세한 내용과 예시는 Go 활성화 지침을 참조합니다.

Gradle#

이전 동작: Gemnasium 분석기 기반 의존성 스캔은 gemnasium-maven-dependency_scanning CI/CD job을 사용하여 build.gradle, build.gradle.kts 파일에서 애플리케이션을 빌드함으로써 프로젝트 의존성을 추출하는 방식으로 Gradle 프로젝트를 지원합니다. 지원되는 Java, Kotlin, Gradle 버전의 조합은 복잡하며, 의존성 스캔(Gemnasium 기반) 문서에 자세히 설명되어 있습니다.

새로운 동작: 새로운 의존성 스캔 분석기는 의존성을 추출하기 위해 프로젝트를 빌드하지 않습니다. 대신 다단계 탐지 모델을 사용합니다.

  • 지원되는 락파일 또는 그래프 내보내기가 저장소나 job 아티팩트에 있으면(예: gradle.lockfile) 분석기가 이를 직접 사용합니다.
  • 지원되는 락파일 또는 그래프 내보내기가 탐지되지 않지만 지원되는 빌드 파일이 있으면 (예: build.gradle) .pre stage에서 의존성 해석 job이 실행됩니다. gradle dependencies를 자동으로 실행하여 dependency-scanning job을 위한 의존성 그래프 내보내기를 생성합니다.
  • 의존성 해석을 사용할 수 없거나 실패하면 매니페스트 폴백이 build.gradle과 build.gradle.kts를 직접 파싱하여 직접 의존성만 추출합니다. gradle.properties 또는 gradle/libs.versions.toml을 통해 의존성을 선언하는 프로젝트는 버전 변수가 항상 확인되지 않으므로 매니페스트 폴백의 정확도가 낮아집니다.

Gradle 프로젝트 마이그레이션#

새로운 의존성 스캔 분석기를 사용하도록 Gradle 프로젝트를 마이그레이션합니다.

사전 요구 사항:

Gradle 프로젝트를 마이그레이션하려면 다음 옵션 중 하나를 선택합니다.

  • 가장 정확한 결과를 위해 프로젝트가 의존성 그래프 내보내기 파일을 제공하는지 확인합니다. 선행 CI/CD job(예: build)에서 Gradle dependencies 작업을 구성하여 gradle.graph.txt 파일을 동적으로 생성하고, 의존성 스캔 job을 실행하기 전에 아티팩트로 내보냅니다. 또는 다른 지원되는 락파일 또는 그래프 내보내기를 선택할 수 있습니다. 락파일 또는 그래프 내보내기를 동적으로 생성하는 경우 DS_DISABLED_RESOLUTION_JOBS CI/CD 변수 값에 gradle을 추가하여 자동 의존성 해석을 비활성화합니다.
  • 의존성 해석에 의존하여 gradle.graph.txt 파일을 자동으로 생성할 수 있습니다. 해석 이미지가 그래프 내보내기를 성공적으로 생성할 수 있는지 확인합니다.
  • build.gradle 또는 build.gradle.kts에 선언된 직접 의존성의 기본 커버리지를 위해 매니페스트 폴백을 사용합니다.

자세한 내용과 예시는 Gradle 활성화 지침을 참조합니다.

Maven#

이전 동작: Gemnasium 분석기 기반 의존성 스캔은 gemnasium-maven-dependency_scanning CI/CD job을 사용하여 pom.xml 파일에서 애플리케이션을 빌드함으로써 프로젝트 의존성을 추출하는 방식으로 Maven 프로젝트를 지원합니다. 지원되는 Java, Kotlin, Maven 버전의 조합은 복잡하며, 의존성 스캔(Gemnasium 기반) 문서에 자세히 설명되어 있습니다.

새로운 동작: 새로운 의존성 스캔 분석기는 의존성을 추출하기 위해 프로젝트를 빌드하지 않습니다. 대신 다단계 탐지 모델을 사용합니다.

  • Maven dependency plugin으로 생성한 maven.graph.json 그래프 내보내기 파일이 저장소나 job 아티팩트에 있으면 분석기가 이를 직접 사용합니다.
  • 그래프 내보내기가 탐지되지 않지만 지원되는 pom.xml 파일이 있으면 .pre stage에서 의존성 해석 job이 실행됩니다. mvn dependency:tree를 자동으로 실행하여 dependency-scanning job을 위한 의존성 그래프 내보내기를 생성합니다.
  • 의존성 해석을 사용할 수 없거나 실패하면 매니페스트 폴백이 pom.xml을 직접 파싱하여 직접 의존성만 추출합니다.

Maven 프로젝트 마이그레이션#

새로운 의존성 스캔 분석기를 사용하도록 Maven 프로젝트를 마이그레이션합니다.

사전 요구 사항:

Maven 프로젝트를 마이그레이션하려면 다음 옵션 중 하나를 선택합니다.

  • 가장 정확한 결과를 위해 프로젝트가 maven.graph.json 파일을 제공하는지 확인합니다. 선행 CI/CD job(예: build)에서 Maven dependency plugin을 구성하여 maven.graph.json 파일을 동적으로 생성하고, 의존성 스캔 job을 실행하기 전에 아티팩트로 내보냅니다. 그래프 내보내기를 동적으로 생성하는 경우 DS_DISABLED_RESOLUTION_JOBS CI/CD 변수 값에 maven을 추가하여 자동 의존성 해석을 비활성화합니다.
  • 의존성 해석에 의존하여 maven.graph.json 파일을 자동으로 생성할 수 있습니다. 해석 이미지가 그래프 내보내기를 성공적으로 생성할 수 있는지 확인합니다.
  • pom.xml에 선언된 직접 의존성의 기본 커버리지를 위해 매니페스트 폴백을 사용합니다.

자세한 내용과 예시는 Maven 활성화 지침을 참조합니다.

npm#

이전 동작: Gemnasium 분석기 기반 의존성 스캔은 gemnasium-dependency_scanning CI/CD job과 package-lock.json 또는 npm-shrinkwrap.json.lock 파일을 파싱하여 프로젝트 의존성을 추출하는 기능을 사용하여 npm 프로젝트를 지원합니다. 지원되는 npm 버전과 package-lock.json 또는 npm-shrinkwrap.json.lock 파일의 조합은 의존성 스캔(Gemnasium 기반) 문서에 자세히 설명되어 있습니다. 이 분석기는 Retire.JS 스캐너를 사용하여 npm 프로젝트에 벤더링된 JavaScript 파일을 스캔할 수 있습니다.

새로운 동작: 새로운 의존성 스캔 분석기도 package-lock.json 또는 npm-shrinkwrap.json.lock 파일을 파싱하여 프로젝트 의존성을 추출하고, dependency-scanning CI/CD job으로 CycloneDX SBOM 보고서 아티팩트를 생성합니다. 이 분석기는 벤더링된 JavaScript 파일을 스캔하지 않습니다. 자세한 내용과 이용 가능한 조치는 JavaScript 벤더링 라이브러리에 대한 의존성 스캔 지원 종료 공지를 참조합니다. 대체 기능에 대한 지원은 에픽 7186에서 제안되었습니다.

npm 프로젝트 마이그레이션#

새로운 의존성 스캔 분석기를 사용하도록 npm 프로젝트를 마이그레이션합니다.

사전 요구 사항:

의존성 스캔 분석기를 사용하도록 npm 프로젝트를 마이그레이션하는 데 추가 단계가 필요하지 않습니다.

NuGet#

이전 동작: Gemnasium 분석기 기반 의존성 스캔은 gemnasium-dependency_scanning CI/CD job과 packages.lock.json 파일을 파싱하여 프로젝트 의존성을 추출하는 기능을 사용하여 NuGet 프로젝트를 지원합니다. 지원되는 NuGet 버전과 packages.lock.json 파일의 조합은 의존성 스캔(Gemnasium 기반) 문서에 자세히 설명되어 있습니다.

새로운 동작: 새로운 의존성 스캔 분석기도 packages.lock.json 파일을 파싱하여 프로젝트 의존성을 추출하고, dependency-scanning CI/CD job으로 CycloneDX SBOM 보고서 아티팩트를 생성합니다.

NuGet 프로젝트 마이그레이션#

새로운 의존성 스캔 분석기를 사용하도록 NuGet 프로젝트를 마이그레이션합니다.

사전 요구 사항:

의존성 스캔 분석기를 사용하도록 NuGet 프로젝트를 마이그레이션하는 데 추가 단계가 필요하지 않습니다.

pip#

이전 동작: Gemnasium 분석기 기반 의존성 스캔은 gemnasium-python-dependency_scanning CI/CD job을 사용하여 requirements.txt 파일(대체 파일명 requirements.pip, requires.txt도 지원)에서 애플리케이션을 빌드함으로써 프로젝트 의존성을 추출하는 방식으로 pip 프로젝트를 지원합니다. PIP_REQUIREMENTS_FILE 환경 변수를 사용하여 사용자 지정 파일명을 지정할 수도 있습니다. 지원되는 Python, pip 버전의 조합은 의존성 스캔(Gemnasium 기반) 문서에 자세히 설명되어 있습니다.

새로운 동작: 새로운 의존성 스캔 분석기는 의존성을 추출하기 위해 프로젝트를 빌드하지 않습니다. 대신 다단계 탐지 모델을 사용합니다.

  • 지원되는 락파일 또는 그래프 내보내기가 저장소나 job 아티팩트에 있으면(예: pip-compile로 생성한 requirements.txt) 분석기가 이를 직접 사용합니다.
  • 지원되는 락파일 또는 그래프 내보내기가 탐지되지 않지만 지원되는 빌드 파일이 있으면 (예: requirements.in) .pre stage에서 의존성 해석 job이 실행됩니다. pip-compile을 자동으로 실행하여 dependency-scanning job을 위한 락파일을 생성합니다.
  • 의존성 해석을 사용할 수 없거나 실패하면 매니페스트 폴백이 requirements.txt 파일을 직접 파싱하여 직접 의존성만 추출합니다.

pip 프로젝트 마이그레이션#

새로운 의존성 스캔 분석기를 사용하도록 pip 프로젝트를 마이그레이션합니다.

사전 요구 사항:

pip 프로젝트를 마이그레이션하려면 다음 옵션 중 하나를 선택합니다.

  • 가장 정확한 결과를 위해 프로젝트가 락파일을 제공하는지 확인합니다. 프로젝트에 pip-compile 명령줄 도구를 구성하고, requirements.txt 락파일을 저장소에 커밋하거나 선행 CI/CD job(예: build)에서 이를 사용하여 동적으로 requirements.txt 파일을 생성하고 의존성 스캔 job을 실행하기 전에 아티팩트로 내보냅니다. 또는 다른 지원되는 락파일 또는 그래프 내보내기를 선택할 수 있습니다. 락파일 또는 그래프 내보내기를 동적으로 생성하는 경우 DS_DISABLED_RESOLUTION_JOBS CI/CD 변수 값에 python을 추가하여 자동 의존성 해석을 비활성화합니다.
  • 의존성 해석에 의존하여 pipcompile.lock.txt 파일을 자동으로 생성할 수 있습니다. 해석 이미지가 락파일을 성공적으로 생성할 수 있는지 확인합니다.
  • requirements.txt에 선언된 직접 의존성의 기본 커버리지를 위해 매니페스트 폴백을 사용합니다.

자세한 내용과 예시는 pip 활성화 지침을 참조합니다.

Pipenv#

이전 동작: Gemnasium 분석기 기반 의존성 스캔은 gemnasium-python-dependency_scanning CI/CD job을 사용하여 Pipfile 파일 또는 존재하는 경우 Pipfile.lock 파일에서 애플리케이션을 빌드함으로써 프로젝트 의존성을 추출하는 방식으로 Pipenv 프로젝트를 지원합니다. 지원되는 Python, Pipenv 버전의 조합은 의존성 스캔(Gemnasium 기반) 문서에 자세히 설명되어 있습니다.

새로운 동작: 새로운 의존성 스캔 분석기는 의존성을 추출하기 위해 Pipenv 프로젝트를 빌드하지 않습니다. 대신 프로젝트는 최소한 Pipfile.lock 파일과, 가급적 pipenv graph 명령으로 생성한 pipenv.graph.json 파일을 제공해야 합니다. pipenv.graph.json 파일은 의존성 그래프를 생성하고 의존성 경로와 같은 기능을 활성화하는 데 필요합니다. 이러한 파일은 dependency-scanning CI/CD job에 의해 처리되어 CycloneDX SBOM 보고서 아티팩트를 생성합니다. 이 접근법에서는 GitLab이 특정 버전의 Python과 Pipenv를 지원할 필요가 없습니다. Pipfile.lock 파일이 없는 Pipfile을 사용하는 프로젝트에는 의존성 해석이 지원되지 않습니다.

Pipenv 프로젝트 마이그레이션#

새로운 의존성 스캔 분석기를 사용하도록 Pipenv 프로젝트를 마이그레이션합니다.

사전 요구 사항:

Pipenv 프로젝트를 마이그레이션하려면 다음과 같이 합니다.

  • 프로젝트가 Pipfile.lock 파일을 제공하는지 확인합니다. 프로젝트에 pipenv lock 명령을 구성하고, Pipfile.lock 파일을 저장소에 커밋하거나 선행 CI/CD job(예: build)에서 이를 사용하여 동적으로 Pipfile.lock 파일을 생성하고 의존성 스캔 job을 실행하기 전에 아티팩트로 내보냅니다. 또는 다른 지원되는 락파일 또는 그래프 내보내기를 선택할 수 있습니다.

Poetry#

이전 동작: Gemnasium 분석기 기반 의존성 스캔은 gemnasium-python-dependency_scanning CI/CD job과 poetry.lock 파일을 파싱하여 프로젝트 의존성을 추출하는 기능을 사용하여 Poetry 프로젝트를 지원합니다. 지원되는 Poetry 버전과 poetry.lock 파일의 조합은 의존성 스캔(Gemnasium 기반) 문서에 자세히 설명되어 있습니다.

새로운 동작: 새로운 의존성 스캔 분석기도 poetry.lock 파일을 파싱하여 프로젝트 의존성을 추출하고, dependency-scanning CI/CD job으로 CycloneDX SBOM 보고서 아티팩트를 생성합니다.

Poetry 프로젝트 마이그레이션#

새로운 의존성 스캔 분석기를 사용하도록 Poetry 프로젝트를 마이그레이션합니다.

사전 요구 사항:

의존성 스캔 분석기를 사용하도록 Poetry 프로젝트를 마이그레이션하는 데 추가 단계가 필요하지 않습니다.

pnpm#

이전 동작: Gemnasium 분석기 기반 의존성 스캔은 gemnasium-dependency_scanning CI/CD job과 pnpm-lock.yaml 파일을 파싱하여 프로젝트 의존성을 추출하는 기능을 사용하여 pnpm 프로젝트를 지원합니다. 지원되는 pnpm 버전과 pnpm-lock.yaml 파일의 조합은 의존성 스캔(Gemnasium 기반) 문서에 자세히 설명되어 있습니다. 이 분석기는 Retire.JS 스캐너를 사용하여 npm 프로젝트에 벤더링된 JavaScript 파일을 스캔할 수 있습니다.

새로운 동작: 새로운 의존성 스캔 분석기도 pnpm-lock.yaml 파일을 파싱하여 프로젝트 의존성을 추출하고, dependency-scanning CI/CD job으로 CycloneDX SBOM 보고서 아티팩트를 생성합니다. 이 분석기는 벤더링된 JavaScript 파일을 스캔하지 않습니다. 자세한 내용과 이용 가능한 조치는 JavaScript 벤더링 라이브러리에 대한 의존성 스캔 지원 종료 공지를 참조합니다. 대체 기능에 대한 지원은 에픽 7186에서 제안되었습니다.

pnpm 프로젝트 마이그레이션#

새로운 의존성 스캔 분석기를 사용하도록 pnpm 프로젝트를 마이그레이션합니다.

사전 요구 사항:

의존성 스캔 분석기를 사용하도록 pnpm 프로젝트를 마이그레이션하는 데 추가 단계가 필요하지 않습니다.

sbt#

이전 동작: Gemnasium 분석기 기반 의존성 스캔은 gemnasium-maven-dependency_scanning CI/CD job을 사용하여 build.sbt 파일에서 애플리케이션을 빌드함으로써 프로젝트 의존성을 추출하는 방식으로 sbt 프로젝트를 지원합니다. 지원되는 Java, Scala, sbt 버전의 조합은 복잡하며, 의존성 스캔(Gemnasium 기반) 문서에 자세히 설명되어 있습니다.

새로운 동작: 새로운 의존성 스캔 분석기는 의존성을 추출하기 위해 프로젝트를 빌드하지 않습니다. 대신 프로젝트는 sbt-dependency-graph 플러그인(sbt 1.4.0 이상에 포함)으로 생성한 dependencies-compile.dot 파일을 제공해야 합니다. 이 파일은 dependency-scanning CI/CD job에 의해 처리되어 CycloneDX SBOM 보고서 아티팩트를 생성합니다. 이 접근법에서는 GitLab이 특정 버전의 Java, Scala, sbt를 지원할 필요가 없습니다. sbt 프로젝트에는 의존성 해석이 지원되지 않습니다.

sbt 프로젝트 마이그레이션#

새로운 의존성 스캔 분석기를 사용하도록 sbt 프로젝트를 마이그레이션합니다.

사전 요구 사항:

sbt 프로젝트를 마이그레이션하려면 다음과 같이 합니다.

  • 프로젝트가 dependencies-compile.dot 파일을 제공하는지 확인합니다. 선행 CI/CD job(예: build)에서 sbt-dependency-graph 플러그인을 구성하여 dependencies-compile.dot 파일을 동적으로 생성하고, 의존성 스캔 job을 실행하기 전에 아티팩트로 내보냅니다.

자세한 내용과 예시는 sbt 활성화 지침을 참조합니다.

setuptools#

이전 동작: Gemnasium 분석기 기반 의존성 스캔은 gemnasium-python-dependency_scanning CI/CD job을 사용하여 setup.py 파일에서 애플리케이션을 빌드함으로써 프로젝트 의존성을 추출하는 방식으로 setuptools 프로젝트를 지원합니다. 지원되는 Python, setuptools 버전의 조합은 의존성 스캔(Gemnasium 기반) 문서에 자세히 설명되어 있습니다.

새로운 동작: 새로운 의존성 스캔 분석기는 의존성을 추출하기 위해 setuptools 프로젝트를 빌드하지 않습니다. 대신 다단계 탐지 모델을 사용합니다.

  • 지원되는 락파일 또는 그래프 내보내기가 저장소나 job 아티팩트에 있으면(예: pip-compile로 생성한 requirements.txt) 분석기가 이를 직접 사용합니다.
  • 지원되는 락파일 또는 그래프 내보내기가 탐지되지 않지만 지원되는 빌드 파일이 있으면 (예: setup.py) .pre stage에서 의존성 해석 job이 실행됩니다. pip-compile을 자동으로 실행하여 dependency-scanning job을 위한 락파일을 생성합니다.

setuptools 프로젝트 마이그레이션#

새로운 의존성 스캔 분석기를 사용하도록 setuptools 프로젝트를 마이그레이션합니다.

사전 요구 사항:

setuptools 프로젝트를 마이그레이션하려면 다음 옵션 중 하나를 선택합니다.

  • 가장 정확한 결과를 위해 프로젝트가 requirements.txt 락파일을 제공하는지 확인합니다. 프로젝트에 pip-compile 명령줄 도구를 구성하고 다음 중 하나를 수행합니다.
    • 명령줄 도구를 개발 워크플로에 영구적으로 통합합니다. 이는 requirements.txt 파일을 저장소에 커밋하고 프로젝트 의존성을 변경할 때마다 업데이트한다는 의미입니다.
    • build CI/CD job에서 명령줄 도구를 사용하여 requirements.txt 파일을 동적으로 생성하고, 의존성 스캔 job을 실행하기 전에 아티팩트로 내보냅니다.
  • 매니페스트 파일로부터 requirements.txt 락파일을 자동으로 생성하려면 의존성 해석을 활성화합니다.

자세한 내용과 예시는 pip 활성화 지침을 참조합니다.

Swift#

이전 동작: Gemnasium 분석기 기반 의존성 스캔은 CI/CD 템플릿이나 스캔 실행 정책을 사용할 때 Swift 프로젝트를 지원하지 않습니다. Swift 지원은 실험적인 Swift CI/CD 구성요소에서만 사용할 수 있습니다.

새로운 동작: 새로운 의존성 스캔 분석기도 Package.resolved 파일을 파싱하여 프로젝트 의존성을 추출하고, dependency-scanning CI/CD job으로 CycloneDX SBOM 보고서 아티팩트를 생성합니다.

Swift 프로젝트 마이그레이션#

새로운 의존성 스캔 분석기를 사용하도록 Swift 프로젝트를 마이그레이션합니다.

사전 요구 사항:

의존성 스캔 분석기를 사용하도록 Swift 프로젝트를 마이그레이션하는 데 추가 단계가 필요하지 않습니다.

uv#

이전 동작: Gemnasium 분석기 기반 의존성 스캔은 gemnasium-dependency_scanning CI/CD job과 uv.lock 파일을 파싱하여 프로젝트 의존성을 추출하는 기능을 사용하여 uv 프로젝트를 지원합니다. 지원되는 uv 버전과 uv.lock 파일의 조합은 의존성 스캔(Gemnasium 기반) 문서에 자세히 설명되어 있습니다.

새로운 동작: 새로운 의존성 스캔 분석기도 uv.lock 파일을 파싱하여 프로젝트 의존성을 추출하고, dependency-scanning CI/CD job으로 CycloneDX SBOM 보고서 아티팩트를 생성합니다.

uv 프로젝트 마이그레이션#

새로운 의존성 스캔 분석기를 사용하도록 uv 프로젝트를 마이그레이션합니다.

사전 요구 사항:

의존성 스캔 분석기를 사용하도록 uv 프로젝트를 마이그레이션하는 데 추가 단계가 필요하지 않습니다.

Yarn#

이전 동작: Gemnasium 분석기 기반 의존성 스캔은 gemnasium-dependency_scanning CI/CD job과 yarn.lock 파일을 파싱하여 프로젝트 의존성을 추출하는 기능을 사용하여 Yarn 프로젝트를 지원합니다. 지원되는 Yarn 버전과 yarn.lock 파일의 조합은 의존성 스캔(Gemnasium 기반) 문서에 자세히 설명되어 있습니다. 이 분석기는 Yarn 의존성에 대해 머지 리퀘스트를 통한 취약점 해결에 사용할 수 있는 조치 데이터를 제공할 수 있습니다. 이 분석기는 Retire.JS 스캐너를 사용하여 Yarn 프로젝트에 벤더링된 JavaScript 파일을 스캔할 수 있습니다.

새로운 동작: 새로운 의존성 스캔 분석기도 yarn.lock 파일을 파싱하여 프로젝트 의존성을 추출하고, dependency-scanning CI/CD job으로 CycloneDX SBOM 보고서 아티팩트를 생성합니다. 이 분석기는 Yarn 의존성에 대한 조치 데이터를 제공하지 않습니다. 자세한 내용은 Yarn 프로젝트 의존성 스캔의 취약점 해결 지원 종료 공지를 참조합니다. 대체 기능에 대한 지원은 에픽 759에서 제안되었습니다. 이 분석기는 벤더링된 JavaScript 파일을 스캔하지 않습니다. 자세한 내용과 이용 가능한 조치는 JavaScript 벤더링 라이브러리에 대한 의존성 스캔 지원 종료 공지를 참조합니다. 대체 기능에 대한 지원은 에픽 7186에서 제안되었습니다.

Yarn 프로젝트 마이그레이션#

새로운 의존성 스캔 분석기를 사용하도록 Yarn 프로젝트를 마이그레이션합니다.

사전 요구 사항:

의존성 스캔 분석기를 사용하도록 Yarn 프로젝트를 마이그레이션하는 데 추가 단계가 필요하지 않습니다. 이전에 머지 리퀘스트를 통한 취약점 해결 기능이나 벤더링된 JavaScript 스캔에 의존했다면, 자세한 내용과 이용 가능한 조치는 위 새로운 동작에 링크된 지원 종료 공지를 참조합니다.

CI/CD 변수 변경 사항#

다음 표는 Gemnasium 분석기 기반의 레거시 의존성 스캔 기능에서 이전에 사용된 CI/CD 변수와 새로운 의존성 스캔 분석기에서의 상태를 나열합니다.

레거시 변수 새로운 분석기에서의 상태
ADDITIONAL_CA_CERT_BUNDLE 유지됨. additional_ca_cert_bundle spec input을 사용하는 것을 권장합니다.
AST_ENABLE_MR_PIPELINES 유지됨.
DEPENDENCY_SCANNING_DISABLED 유지됨.
DS_ANALYZER_IMAGE 유지됨.
DS_EXCLUDED_ANALYZERS 제거됨.
DS_EXCLUDED_PATHS 유지됨. excluded_paths spec input을 사용하는 것을 권장합니다.
DS_GRADLE_RESOLUTION_POLICY 제거됨.
DS_IMAGE_SUFFIX 제거됨.
DS_INCLUDE_DEV_DEPENDENCIES 유지됨. include_dev_dependencies spec input을 사용하는 것을 권장합니다.
DS_JAVA_VERSION 제거됨.
DS_MAX_DEPTH 유지됨. max_scan_depth spec input을 사용하는 것을 권장합니다.
DS_PIP_DEPENDENCY_PATH 유지됨. Python 의존성 해석에만 적용됩니다.
DS_PIP_VERSION 제거됨.
DS_REMEDIATE 제거됨.
DS_REMEDIATE_TIMEOUT 제거됨.
GEMNASIUM_DB_LOCAL_PATH 제거됨.
GEMNASIUM_DB_REF_NAME 제거됨.
GEMNASIUM_DB_REMOTE_URL 제거됨.
GEMNASIUM_DB_UPDATE_DISABLED 제거됨.
GEMNASIUM_IGNORED_SCOPES 제거됨.
GEMNASIUM_LIBRARY_SCAN_ENABLED 제거됨.
GOARCH 제거됨.
GOFLAGS 제거됨.
GOOS 제거됨.
GOPRIVATE 제거됨.
GRADLE_CLI_OPTS 유지됨. Gradle 의존성 해석에만 적용됩니다.
GRADLE_PLUGIN_INIT_PATH 제거됨.
MAVEN_CLI_OPTS MAVEN_ARGS로 대체됨.
PIP_EXTRA_INDEX_URL 유지됨. Python 의존성 해석에만 적용됩니다.
PIP_INDEX_URL 유지됨. Python 의존성 해석에만 적용됩니다.
PIP_REQUIREMENTS_FILE DS_PIP_MANIFEST_FILE_NAME_PATTERN으로 대체됨.
PIPENV_PYPI_MIRROR 제거됨.
SBT_CLI_OPTS 제거됨.
SEARCH_IGNORE_HIDDEN_DIRS 유지됨.
SECURE_ANALYZERS_PREFIX 유지됨. analyzer_image_prefix spec input을 사용하는 것을 권장합니다.
SECURE_LOG_LEVEL 유지됨. analyzer_log_level spec input을 사용하는 것을 권장합니다.

Removed로 표시된 변수는 새로운 분석기에서 무시됩니다. 다른 job에서도 사용하지 않는다면 CI/CD 구성에서 제거합니다.

**Replaced by <new-name>**로 표시된 변수는 계속 동작하지만 지원이 종료되었습니다. 다음 GitLab 메이저 버전에서 제거될 예정입니다. CI/CD 구성을 새로운 변수 이름으로 업데이트합니다.

Kept로 표시된 변수는 새로운 분석기에서도 허용되며 사용 가능한 CI/CD 변수 참조에 문서화된 대로 동작합니다. 유지된 변수 중 일부는 이제 의존성 해석 job에만 적용되며, 표에 그렇게 표시되어 있습니다.

기존 사용자 구성(예: 스캔 실행 정책)의 전환을 원활하게 하기 위해 v2 템플릿은 이러한 CI/CD 변수와 하위 호환됩니다. 설정된 경우, 이 새로운 템플릿에 도입된 해당 spec:inputs보다 우선합니다.

.gitlab-ci.yml에서 v2 CI/CD 템플릿을 직접 사용하는 경우, 분석기를 구성할 때 CI/CD 변수보다 spec input을 사용하는 것을 권장합니다. spec input은 파이프라인 생성 시점에 검증되고, 더 명확한 오류 메시지를 제공하며, 템플릿 include 범위로 제한됩니다. spec input을 아직 사용할 수 없는 스캔 실행 정책이나 보안 구성 프로필을 통해 의존성 스캔을 구성하는 경우에는 CI/CD 변수를 사용합니다.

v2 템플릿에 새로 도입된 CI/CD 변수#

v2 템플릿은 다음 변수를 추가합니다. 자세한 내용은 사용 가능한 spec input 및 사용 가능한 CI/CD 변수 참조 문서를 확인합니다.

변수 Spec input 대응값 용도
ANALYZER_ARTIFACT_DIR (없음) CycloneDX SBOM 보고서가 저장되는 디렉터리입니다.
DS_API_SCAN_DOWNLOAD_DELAY api_scan_download_delay 취약점 스캔 결과를 다운로드하기 전의 초기 지연 시간입니다.
DS_API_TIMEOUT api_timeout 의존성 스캔 SBOM 스캔 API의 타임아웃입니다.
DS_DISABLED_RESOLUTION_JOBS disabled_resolution_jobs 비활성화할 의존성 해석 job을 쉼표로 구분한 목록입니다(maven, gradle, python).
DS_ENABLE_MANIFEST_FALLBACK enable_manifest_fallback 락파일이나 의존성 그래프 내보내기를 사용할 수 없을 때 매니페스트 폴백을 활성화합니다.
DS_ENABLE_VULNERABILITY_SCAN enable_vulnerability_scan 생성된 SBOM의 취약점 스캔 여부를 전환합니다.
DS_FF_LINK_COMPONENTS_TO_GIT_FILES (없음) (베타) 의존성 목록의 구성요소를 동적으로 생성된 파일이 아니라 저장소에 커밋된 파일로 연결합니다.
DS_GRADLE_RESOLUTION_IMAGE gradle_resolution_image Gradle 의존성 해석 job에서 사용하는 이미지입니다.
DS_MAVEN_RESOLUTION_IMAGE maven_resolution_image Maven 의존성 해석 job에서 사용하는 이미지입니다.
DS_MAVEN_DEPENDENCY_PLUGIN_VERSION maven_dependency_plugin_version Maven 의존성 해석 중에 사용되는 maven-dependency-plugin의 버전입니다.
DS_PIP_MANIFEST_FILE_NAME_PATTERN pip_manifest_file_name_pattern pip 매니페스트 파일의 glob 패턴입니다.
DS_PIPCOMPILE_LOCKFILE_FILE_NAME_PATTERN pipcompile_lockfile_file_name_pattern pip-compile 락파일의 glob 패턴입니다.
DS_PYTHON_RESOLUTION_IMAGE python_resolution_image Python 의존성 해석 job에서 사용하는 이미지입니다.
DS_STATIC_REACHABILITY_ENABLED enable_static_reachability 정적 도달 가능성을 활성화합니다.