InfoGrab Docs

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

요약

의존성 스캔 기능이 GitLab SBOM 취약성 스캐너로 업그레이드됩니다. GitLab 의존성 스캔을 사용하고 다음 조건 중 하나에 해당하는 경우 이 마이그레이션 가이드를 따르세요: 의존성 스캔 CI/CD 작업이 의존성 스캔 CI/CD 템플릿을 포함하여 구성된 경우.

히스토리
  • Gemnasium 분석기 기반의 의존성 스캔 기능이 GitLab 17.9에서 deprecated되었으며 GitLab 20.0에서 제거될 예정입니다. 단, 제거 일정은 확정되지 않았으며 필요에 따라 Gemnasium을 계속 사용할 수 있습니다.

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

GitLab 의존성 스캔을 사용하고 다음 조건 중 하나에 해당하는 경우 이 마이그레이션 가이드를 따르세요:

  • 의존성 스캔 CI/CD 작업이 의존성 스캔 CI/CD 템플릿을 포함하여 구성된 경우.

      include:
        - template: Jobs/Dependency-Scanning.gitlab-ci.yml
        - template: Jobs/Dependency-Scanning.latest.gitlab-ci.yml
    
  • 의존성 스캔 CI/CD 작업이 스캔 실행 정책을 사용하여 구성된 경우.

  • 의존성 스캔 CI/CD 작업이 파이프라인 실행 정책을 사용하여 구성된 경우.

변경 사항 이해#

프로젝트를 SBOM을 사용한 의존성 스캔으로 마이그레이션하기 전에, 도입되는 근본적인 변경 사항을 이해해야 합니다. 이 전환은 기술적 발전, GitLab에서 의존성 스캔이 작동하는 방식에 대한 새로운 접근법, 그리고 사용자 경험에 대한 다양한 개선 사항을 나타내며, 그 중 일부는 다음을 포함하지만 이에 국한되지 않습니다:

  • 향상된 언어 지원. deprecated된 Gemnasium 분석기는 Python과 Java 버전의 소수 집합으로 제한됩니다. 새로운 분석기는 조직에 이전 프로젝트에서 구형 버전의 툴체인을 사용하는 데 필요한 유연성을 제공하며, 분석기 이미지의 주요 업데이트를 기다리지 않고 새로운 버전을 시험해 볼 수 있는 옵션을 제공합니다. 또한 새 분석기는 향상된 파일 커버리지의 혜택을 받습니다.
  • 향상된 성능. Gemnasium 분석기가 호출하는 빌드는 거의 한 시간이 걸릴 수 있으며 프로젝트의 자체 빌드 작업이 이미 수행한 작업과 중복될 수 있습니다. 새로운 분석기는 기존 락파일 또는 의존성 그래프 내보내기를 우선하며 락파일이 없는 생태계에 대해서만 실행됩니다. 이러한 작업은 최소한의 생태계 이미지를 사용하고 기본 패키지 관리자 명령을 실행하여 프로젝트의 의존성 그래프를 생성합니다. 생성된 의존성 그래프는 파일 아티팩트로 저장되어 보안 스캔 및 SBOM 생성을 위해 dependency-scanning 작업에 전달됩니다.
  • 더 작은 공격 표면. 빌드 기능을 지원하기 위해 Gemnasium 분석기는 다양한 툴체인과 의존성이 미리 로드됩니다. 새로운 분석기는 의존성 탐지를 의존성 해석에서 분리합니다. 분석기 이미지는 락파일 및 그래프 내보내기를 파싱하는 데 필요한 것만 포함합니다. 의존성 해석은 전용 최소 생태계 이미지에서 실행됩니다. 각 이미지는 해당 생태계에 필요한 빌드 도구만 포함합니다.
  • 더 유연한 구성. deprecated된 Gemnasium 분석기는 지원되는 모든 생태계를 번들링하는 단일 이미지 내에서 프록시, 인증기관(CA) 인증서 번들 및 기타 유틸리티 구성이 자주 필요합니다. 새로운 분석기는 관심사를 분리합니다. 분석기 자체는 최소한의 구성이 필요합니다. 생태계별 설정(프라이빗 레지스트리, 사용자 정의 CA 번들, JVM 옵션)은 관련 의존성 해석 작업에만 적용됩니다. 빌드 환경에 맞게 해석 이미지를 재정의할 수도 있습니다.

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

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

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

SBOM을 사용한 의존성 스캔이 애플리케이션을 스캔하는 방법에 대해 더 읽어보세요.

CI/CD 구성#

CI/CD 파이프라인의 중단을 방지하기 위해 새로운 접근법은 안정적인 의존성 스캔 CI/CD 템플릿(Dependency-Scanning.gitlab-ci.yml)에 적용되지 않으며 GitLab 18.5부터 v2 템플릿(Dependency-Scanning.v2.gitlab-ci.yml)을 사용하여 활성화해야 합니다. 기능이 성숙해짐에 따라 다른 마이그레이션 경로를 고려할 수 있습니다.

스캔 실행 정책을 사용하는 경우, 이러한 정책이 CI/CD 템플릿을 기반으로 하기 때문에 이러한 변경 사항이 동일하게 적용됩니다.

주요 의존성 스캔 CI/CD 구성요소를 사용하는 경우 이미 새 분석기를 채택하고 있으므로 변경 사항이 없습니다. 그러나 Android, Rust, Swift 또는 CocoaPods용 특수 구성요소를 사용하는 경우 이제 지원되는 모든 언어와 패키지 관리자를 다루는 주요 구성요소로 마이그레이션해야 합니다.

Gradle, Maven 및 Python에 대한 의존성 탐지#

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

  • 락파일 또는 의존성 그래프 내보내기: 지원되는 파일이 저장소에 커밋되거나 작업 아티팩트로 전달된 경우(예: maven.graph.json, dependencies.lock, requirements.txt, Pipfile.lock), 분석기가 직접 사용합니다. 이것이 가장 정확한 옵션입니다.

  • 의존성 해석: Maven, Gradle, Python 프로젝트에 지원되는 파일이 없으면 분석기가 자동으로 생성하려 시도합니다. 해석 작업은 최소 생태계 이미지와 기본 명령(예: mvn dependency:tree, pip-compile, gradle dependencies)으로 .pre 스테이지에서 실행됩니다. dependency-scanning 작업이 생성된 아티팩트를 사용합니다.

  • 매니페스트 폴백: 락파일 또는 의존성 그래프 파일이 없으면 분석기가 지원되는 매니페스트 파일(예: pom.xml, requirements.txt, build.gradle, build.gradle.kts)을 파싱하여 직접 의존성만 추출합니다. 전이 의존성은 탐지되지 않으며 정확한 확인된 버전을 결정할 수 없습니다.

의존성 해석과 매니페스트 폴백은 제한 가용성 중에 기본적으로 비활성화되어 있습니다. 활성화하려면 의존성 해석매니페스트 폴백 문서를 참조하세요.

가장 정확한 결과를 위해 저장소에 락파일 또는 의존성 그래프 내보내기를 커밋하거나 프로젝트의 실제 빌드 환경을 사용하여 선행 CI/CD 작업에서 생성하세요. 다음 섹션에서는 각 언어 및 패키지 관리자에 대해 사용 가능한 옵션을 설명합니다.

스캔 결과 액세스#

사용자는 Dependency-Scanning.v2.gitlab-ci.yml을 사용할 때 작업 아티팩트(gl-dependency-scanning-report.json)로 의존성 스캔 결과를 볼 수 있습니다.

베타 동작#

의존성 스캔 보고서 아티팩트는 일반 가용성(GA) 릴리스에 포함됩니다. 베타 동작은 역사적 참고용으로 문서화되어 있지만 더 이상 공식적으로 지원되지 않으며 제품에서 제거될 수 있습니다.

취약성 스캔 결과에 액세스하는 방법의 변경 사항에 대한 세부 정보를 보려면 이 섹션을 확장하세요.

SBOM을 사용한 의존성 스캔으로 마이그레이션하면 보안 스캔 결과가 처리되는 방식에 근본적인 변화를 알게 됩니다. 새로운 접근법은 보안 분석을 CI/CD 파이프라인에서 GitLab 플랫폼으로 이동시키며, 이는 결과에 액세스하고 작업하는 방법을 변경합니다. 레거시 의존성 스캔 기능을 사용하면 Gemnasium 분석기를 사용하는 CI/CD 작업이 스캔 결과를 포함하는 의존성 스캔 보고서 아티팩트를 생성하고 플랫폼에 업로드합니다. 작업 아티팩트에 제공되는 모든 가능한 방법으로 이러한 결과에 액세스할 수 있습니다. 이는 결과가 GitLab 플랫폼에 도달하기 전에 CI/CD 파이프라인 내에서 처리하거나 수정할 수 있음을 의미합니다. SBOM을 사용한 의존성 스캔 접근법은 다르게 작동합니다. 이제 보안 분석이 내장된 GitLab SBOM 취약성 스캐너를 사용하여 GitLab 플랫폼 내에서 수행되므로 작업 아티팩트에서 스캔 결과를 더 이상 찾을 수 없습니다. 대신 GitLab은 CI/CD 파이프라인이 생성하는 CycloneDX SBOM 보고서 아티팩트를 분석하여 GitLab 플랫폼에 직접 보안 결과를 생성합니다. 원활한 전환을 돕기 위해 GitLab은 일부 하위 호환성을 유지합니다. Gemnasium 분석기를 사용하는 동안에는 스캔 결과를 포함하는 표준 아티팩트(artifacts:paths 사용)를 여전히 얻을 수 있습니다. 이는 이러한 결과가 필요한 후속 CI/CD 작업이 있는 경우 여전히 액세스할 수 있음을 의미합니다. 그러나 GitLab SBOM 취약성 스캐너가 발전하고 개선됨에 따라 이러한 아티팩트 기반 결과는 최신 개선 사항을 반영하지 않을 것임을 명심하세요. 새로운 의존성 스캔 분석기로 완전히 마이그레이션할 준비가 되면 프로그래밍 방식으로 스캔 결과에 액세스하는 방법을 조정해야 합니다. 작업 아티팩트를 읽는 대신 GitLab GraphQL API, 특히 (Pipeline.securityReportFindings 리소스)를 사용합니다.

컴플라이언스 프레임워크 고려사항#

SBOM 기반 의존성 스캔으로 마이그레이션할 때 컴플라이언스 프레임워크에 미치는 잠재적 영향에 주의하세요:

  • SBOM 기반 스캔을 사용할 때 GitLab Self-Managed 인스턴스(18.4부터)에서 "의존성 스캔 실행 중" 컴플라이언스 제어가 실패할 수 있습니다. 이는 전통적인 gl-dependency-scanning-report.json 아티팩트를 예상하기 때문입니다.
  • 이 문제는 GitLab.com 인스턴스에 영향을 미치지 않습니다.
  • 조직이 의존성 스캔 제어가 포함된 컴플라이언스 프레임워크를 사용하는 경우 프로덕션이 아닌 환경에서 마이그레이션을 먼저 테스트하세요.

자세한 내용은 컴플라이언스 프레임워크 호환성을 참조하세요.

영향을 받는 프로젝트 식별#

마이그레이션에 주의가 필요한 프로젝트를 식별하면 마이그레이션 계획에 도움이 됩니다. Gradle, Maven 및 Python 프로젝트가 새 분석기에서 의존성 탐지가 다르게 작동하기 때문에 가장 큰 영향을 받습니다. 의존성 해석매니페스트 폴백을 활성화하면 이러한 프로젝트의 많은 부분이 기본 정확도로 즉시 스캔할 수 있습니다. 가장 높은 정확도가 필요한 프로젝트는 여전히 커밋된 락파일 또는 의존성 그래프 내보내기의 혜택을 받습니다. 이 도구는 GitLab 그룹 또는 GitLab Self-Managed 인스턴스를 검사하고 현재 gemnasium-maven-dependency_scanning 또는 gemnasium-python-dependency_scanning CI/CD 작업을 사용하는 프로젝트를 식별합니다. 이 도구의 보고서는 조직 전체에서 마이그레이션을 계획할 때 프로젝트 우선순위를 결정하는 데 도움이 됩니다.

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

사전 요구사항:

  • .gitlab-ci.yml 파일을 편집하거나 CI/CD 구성요소를 사용하려면: 프로젝트에 대한 Developer, Maintainer 또는 Owner 역할.
  • 스캔 실행 또는 파이프라인 실행 정책을 편집하려면: 그룹에 대한 Owner 역할 또는 manage_security_policy_link 권한이 있는 사용자 정의 역할.

SBOM을 사용한 의존성 스캔 방법으로 마이그레이션하려면 각 프로젝트에 대해 다음 단계를 수행하세요:

  1. Gemnasium 분석기 기반 의존성 스캔에 대한 기존 사용자 정의를 제거합니다.
    • 프로젝트의 .gitlab-ci.yml 또는 파이프라인 실행 정책의 CI/CD 구성에서 gemnasium-dependency_scanning, gemnasium-maven-dependency_scanning 또는 gemnasium-python-dependency_scanning CI/CD 작업을 수동으로 재정의하여 사용자 정의한 경우 제거합니다.
    • 영향을 받는 CI/CD 변수를 구성한 경우 그에 따라 구성을 조정합니다.
  2. 다음 옵션 중 하나를 사용하여 SBOM을 사용한 의존성 스캔 기능을 활성화합니다:
    • 권장: 새로운 의존성 스캔 분석기를 실행하기 위해 v2 의존성 스캔 CI/CD 템플릿 Dependency-Scanning.v2.gitlab-ci.yml을 사용합니다:
      1. .gitlab-ci.yml CI/CD 구성이 v2 의존성 스캔 CI/CD 템플릿을 포함하는지 확인합니다.
      2. 필요한 경우 아래의 언어별 지침에 따라 프로젝트와 CI/CD 구성을 조정합니다.
    • 새로운 의존성 스캔 분석기를 실행하기 위해 스캔 실행 정책을 사용합니다:
      1. 의존성 스캔을 위해 구성된 스캔 실행 정책을 편집하고 v2 템플릿을 사용하는지 확인합니다.
      2. 필요한 경우 아래의 언어별 지침에 따라 프로젝트와 CI/CD 구성을 조정합니다.
    • 새로운 의존성 스캔 분석기를 실행하기 위해 파이프라인 실행 정책을 사용합니다:
      1. 구성된 파이프라인 실행 정책을 편집하고 v2 템플릿을 사용하는지 확인합니다.
      2. 필요한 경우 아래의 언어별 지침에 따라 프로젝트와 CI/CD 구성을 조정합니다.
    • 새로운 의존성 스캔 분석기를 실행하기 위해 의존성 스캔 CI/CD 구성요소를 사용합니다:
      1. .gitlab-ci.yml CI/CD 구성에서 의존성 스캔 CI/CD 템플릿의 include 문을 의존성 스캔 CI/CD 구성요소로 교체합니다.
      2. 필요한 경우 아래의 언어별 지침에 따라 프로젝트와 CI/CD 구성을 조정합니다.

다국어 프로젝트의 경우 해당하는 모든 언어별 마이그레이션 단계를 완료하세요.

Note

CI/CD 템플릿에서 CI/CD 구성요소로 마이그레이션하기로 결정한 경우 GitLab Self-Managed에 대한 현재 제한 사항을 검토하세요.

언어별 지침#

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

  • 의존성 탐지 방법이 어떻게 변경되는지
  • 어떤 특정 파일을 제공해야 하는지
  • 이러한 파일이 이미 워크플로우에 포함되지 않은 경우 생성하는 방법

피드백 이슈에서 새로운 의존성 스캔 분석기에 대한 의견을 공유하세요.

Bundler#

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

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

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

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

사전 요구사항:

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

CocoaPods#

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

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

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

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

사전 요구사항:

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

Composer#

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

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

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

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

사전 요구사항:

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

Conan#

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

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

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

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

사전 요구사항:

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

Go#

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

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

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

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

사전 요구사항:

Go 프로젝트를 마이그레이션하려면:

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

자세한 내용과 예시는 Go 활성화 지침을 참조하세요.

Gradle#

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

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

  • 저장소 또는 작업 아티팩트에 지원되는 락파일 또는 그래프 내보내기가 있으면(예: gradle.lockfile) 분석기가 직접 사용합니다.

  • 지원되는 락파일 또는 그래프 내보내기가 탐지되지 않지만 지원되는 빌드 파일이 있으면(예: build.gradle) .pre 스테이지에서 의존성 해석 작업이 실행됩니다. 자동으로 gradle dependencies를 실행하여 dependency-scanning 작업을 위한 의존성 그래프 내보내기를 생성합니다.

  • 의존성 해석을 사용할 수 없거나 실패하면 매니페스트 폴백build.gradlebuild.gradle.kts를 직접 파싱하여 직접 의존성만 추출합니다. gradle.properties 또는 gradle/libs.versions.toml을 통해 의존성을 선언하는 프로젝트의 경우 버전 변수가 항상 확인되지 않으므로 매니페스트 폴백 정확도가 낮아집니다.

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

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

사전 요구사항:

Gradle 프로젝트를 마이그레이션하려면 다음 옵션 중 하나를 선택하세요:

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

  • 의존성 해석에 의존하여 gradle.graph.txt 파일을 자동으로 생성합니다. 해석 이미지가 그래프 내보내기를 성공적으로 생성할 수 있는지 확인합니다.

  • build.gradle 또는 build.gradle.kts에 선언된 직접 의존성의 기본 커버리지를 위해 매니페스트 폴백을 사용합니다.

자세한 내용과 예시는 Gradle 활성화 지침을 참조하세요.

Maven#

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

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

  • maven dependency plugin으로 생성된 maven.graph.json 그래프 내보내기 파일이 저장소 또는 작업 아티팩트에 있으면 분석기가 직접 사용합니다.

  • 그래프 내보내기가 탐지되지 않지만 지원되는 pom.xml 파일이 있으면 .pre 스테이지에서 의존성 해석 작업이 실행됩니다. 자동으로 mvn dependency:tree를 실행하여 dependency-scanning 작업을 위한 의존성 그래프 내보내기를 생성합니다.

  • 의존성 해석을 사용할 수 없거나 실패하면 매니페스트 폴백pom.xml을 직접 파싱하여 직접 의존성만 추출합니다.

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

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

사전 요구사항:

Maven 프로젝트를 마이그레이션하려면 다음 옵션 중 하나를 선택하세요:

  • 가장 정확한 결과를 위해 프로젝트가 maven.graph.json 파일을 제공하는지 확인합니다. 선행 CI/CD 작업(예: build)에서 maven dependency plugin을 구성하여 maven.graph.json 파일을 동적으로 생성하고 의존성 스캔 작업을 실행하기 전에 아티팩트로 내보냅니다. 그래프 내보내기를 동적으로 생성할 때 DS_DISABLED_RESOLUTION_JOBS CI/CD 변수 값에 maven을 추가하여 자동 의존성 해석을 비활성화합니다.

  • 의존성 해석에 의존하여 maven.graph.json 파일을 자동으로 생성합니다. 해석 이미지가 그래프 내보내기를 성공적으로 생성할 수 있는지 확인합니다.

  • pom.xml에 선언된 직접 의존성의 기본 커버리지를 위해 매니페스트 폴백을 사용합니다.

자세한 내용과 예시는 Maven 활성화 지침을 참조하세요.

npm#

이전 동작: Gemnasium 분석기 기반 의존성 스캔은 gemnasium-dependency_scanning CI/CD 작업과 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 작업으로 CycloneDX SBOM 보고서 아티팩트를 생성합니다. 이 분석기는 벤더링된 JavaScript 파일을 스캔하지 않습니다. 대체 기능에 대한 지원은 에픽 7186에서 제안되었습니다.

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

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

사전 요구사항:

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

NuGet#

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

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

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

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

사전 요구사항:

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

pip#

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

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

  • 저장소 또는 작업 아티팩트에 지원되는 락파일 또는 그래프 내보내기가 있으면(예: pip-compile로 생성된 requirements.txt) 분석기가 직접 사용합니다.

  • 지원되는 락파일 또는 그래프 내보내기가 탐지되지 않지만 지원되는 빌드 파일이 있으면(예: requirements.in) .pre 스테이지에서 의존성 해석 작업이 실행됩니다. 자동으로 pip-compile을 실행하여 dependency-scanning 작업을 위한 락파일을 생성합니다.

  • 의존성 해석을 사용할 수 없거나 실패하면 매니페스트 폴백requirements.txt 파일을 직접 파싱하여 직접 의존성만 추출합니다.

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

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

사전 요구사항:

pip 프로젝트를 마이그레이션하려면 다음 옵션 중 하나를 선택하세요:

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

  • 의존성 해석에 의존하여 pipcompile.lock.txt 파일을 자동으로 생성합니다. 해석 이미지가 락파일을 성공적으로 생성할 수 있는지 확인합니다.

  • requirements.txt에 선언된 직접 의존성의 기본 커버리지를 위해 매니페스트 폴백을 사용합니다.

자세한 내용과 예시는 pip 활성화 지침을 참조하세요.

Pipenv#

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

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

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

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

사전 요구사항:

Pipenv 프로젝트를 마이그레이션하려면:

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

Poetry#

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

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

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

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

사전 요구사항:

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

pnpm#

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

새로운 동작: 새로운 의존성 스캔 분析기도 pnpm-lock.yaml 파일을 파싱하여 프로젝트 의존성을 추출하고 dependency-scanning CI/CD 작업으로 CycloneDX SBOM 보고서 아티팩트를 생성합니다. 이 분析기는 벤더링된 JavaScript 파일을 스캔하지 않습니다. 대체 기능에 대한 지원은 에픽 7186에서 제안되었습니다.

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

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

사전 요구사항:

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

sbt#

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

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

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

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

사전 요구사항:

sbt 프로젝트를 마이그레이션하려면:

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

자세한 내용과 예시는 sbt 활성화 지침을 참조하세요.

setuptools#

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

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

  • 저장소 또는 작업 아티팩트에 지원되는 락파일 또는 그래프 내보내기가 있으면(예: pip-compile로 생성된 requirements.txt) 分析기가 직접 사용합니다.

  • 지원되는 락파일 또는 그래프 내보내기가 탐지되지 않지만 지원되는 빌드 파일이 있으면(예: setup.py) .pre 스테이지에서 의존성 해석 작업이 실행됩니다. 자동으로 pip-compile을 실행하여 dependency-scanning 작업을 위한 락파일을 생성합니다.

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

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

사전 요구사항:

setuptools 프로젝트를 마이그레이션하려면 다음 옵션 중 하나를 선택하세요:

  • 가장 정확한 결과를 위해 프로젝트가 requirements.txt 락파일을 제공하는지 확인합니다. 프로젝트에 pip-compile 명령줄 도구를 구성하고 다음 중 하나를 선택합니다:

    • 개발 워크플로우에 명령줄 도구를 영구적으로 통합합니다. 이는 requirements.txt 파일을 저장소에 커밋하고 프로젝트 의존성을 변경할 때 업데이트하는 것을 의미합니다.
    • build CI/CD 작업에서 명령줄 도구를 사용하여 requirements.txt 파일을 동적으로 생성하고 의존성 스캔 작업을 실행하기 전에 아티팩트로 내보냅니다.
  • 의존성 해석을 활성화하여 매니페스트 파일에서 requirements.txt 락파일을 자동으로 생성합니다.

자세한 내용과 예시는 pip 활성화 지침을 참조하세요.

Swift#

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

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

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

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

사전 요구사항:

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

uv#

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

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

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

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

사전 요구사항:

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

Yarn#

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

새로운 동작: 새로운 의존성 스캔 分析기도 yarn.lock 파일을 파싱하여 프로젝트 의존성을 추출하고 dependency-scanning CI/CD 작업으로 CycloneDX SBOM 보고서 아티팩트를 생성합니다. 이 分析기는 Yarn 의존성에 대한 수정 데이터를 제공하지 않습니다. 대체 기능에 대한 지원은 에픽 759에서 제안되었습니다. 이 分析기는 벤더링된 JavaScript 파일을 스캔하지 않습니다. 대체 기능에 대한 지원은 에픽 7186에서 제안되었습니다.

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

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

사전 요구사항:

의존성 스캔 分析기를 사용하도록 Yarn 프로젝트를 마이그레이션하는 데 추가 단계가 필요하지 않습니다. 머지 리퀘스트를 통한 취약성 해결 기능을 사용하는 경우 사용 가능한 작업에 대한 사용 중단 공지를 확인하세요. JavaScript 벤더링 파일 스캔 기능을 사용하는 경우 사용 중단 공지를 확인하세요.

CI/CD 변수 변경 사항#

다음 표에는 Gemnasium 分析기 기반의 레거시 의존성 스캔 기능에서 이전에 사용된 CI/CD 변수와 새로운 의존성 스캔 분析기에서의 상태가 나열되어 있습니다:

레거시 변수 새 分析기에서의 상태
ADDITIONAL_CA_CERT_BUNDLE 유지. additional_ca_cert_bundle spec 입력을 선호합니다.
AST_ENABLE_MR_PIPELINES 유지.
DS_ANALYZER_IMAGE 유지.
DS_EXCLUDED_ANALYZERS 제거됨.
DS_EXCLUDED_PATHS 유지. excluded_paths spec 입력을 선호합니다.
DS_GRADLE_RESOLUTION_POLICY 제거됨.
DS_IMAGE_SUFFIX 제거됨.
DS_INCLUDE_DEV_DEPENDENCIES 유지. include_dev_dependencies spec 입력을 선호합니다.
DS_JAVA_VERSION 제거됨.
DS_MAX_DEPTH 유지. max_scan_depth spec 입력을 선호합니다.
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 입력을 선호합니다.
SECURE_LOG_LEVEL 유지. analyzer_log_level spec 입력을 선호합니다.

제거됨으로 표시된 변수는 새 分析기에서 무시됩니다. 다른 작업에서도 사용되지 않는 경우 CI/CD 구성에서 제거하세요.

<새-이름>으로 교체됨으로 표시된 변수는 여전히 작동하지만 deprecated되었습니다. GitLab 다음 주요 버전에서 제거될 예정입니다. 새 변수 이름을 사용하도록 CI/CD 구성을 업데이트하세요.

유지로 표시된 변수는 새 分析기에서 허용되며 사용 가능한 CI/CD 변수 참조에 문서화된 대로 동작합니다. 일부 유지된 변수는 이제 의존성 해석 작업에만 적용되며 표에 표시되어 있습니다.

기존 사용자 구성(특히 스캔 실행 정책)의 원활한 전환을 위해 v2 템플릿은 이러한 CI/CD 변수와 하위 호환됩니다. 설정되면 해당 spec:inputs보다 우선합니다.

.gitlab-ci.yml에서 v2 CI/CD 템플릿을 직접 사용할 때는 分析기를 구성하기 위해 CI/CD 변수보다 spec 입력을 선호합니다. Spec 입력은 파이프라인 생성 시 유효성이 검사되고 더 명확한 오류 메시지를 제공하며 템플릿 포함으로 범위가 지정됩니다. 스캔 실행 정책이나 보안 구성 프로파일을 통해 의존성 스캔을 구성할 때는 spec 입력을 아직 사용할 수 없으므로 CI/CD 변수를 사용하세요.

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

v2 템플릿은 다음 변수를 추가합니다. 자세한 내용은 사용 가능한 spec 입력사용 가능한 CI/CD 변수 참조를 참조하세요.

변수 Spec 입력 동등값 목적
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 비활성화할 의존성 해석 작업의 쉼표로 구분된 목록(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 의존성 해석 작업에서 사용하는 이미지.
DS_MAVEN_RESOLUTION_IMAGE maven_resolution_image Maven 의존성 해석 작업에서 사용하는 이미지.
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 매니페스트 파일의 글로브 패턴.
DS_PIPCOMPILE_LOCKFILE_FILE_NAME_PATTERN pipcompile_lockfile_file_name_pattern pip-compile 락파일의 글로브 패턴.

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

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

의존성 스캔 기능이 GitLab SBOM 취약성 스캐너로 업그레이드됩니다. GitLab 의존성 스캔을 사용하고 다음 조건 중 하나에 해당하는 경우 이 마이그레이션 가이드를 따르세요: 의존성 스캔 CI/CD 작업이 의존성 스캔 CI/CD 템플릿을 포함하여 구성된 경우.

히스토리
  • Gemnasium 분석기 기반의 의존성 스캔 기능이 GitLab 17.9에서 deprecated되었으며 GitLab 20.0에서 제거될 예정입니다. 단, 제거 일정은 확정되지 않았으며 필요에 따라 Gemnasium을 계속 사용할 수 있습니다.

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

GitLab 의존성 스캔을 사용하고 다음 조건 중 하나에 해당하는 경우 이 마이그레이션 가이드를 따르세요:

  • 의존성 스캔 CI/CD 작업이 의존성 스캔 CI/CD 템플릿을 포함하여 구성된 경우.

      include:
        - template: Jobs/Dependency-Scanning.gitlab-ci.yml
        - template: Jobs/Dependency-Scanning.latest.gitlab-ci.yml
    
  • 의존성 스캔 CI/CD 작업이 스캔 실행 정책을 사용하여 구성된 경우.

  • 의존성 스캔 CI/CD 작업이 파이프라인 실행 정책을 사용하여 구성된 경우.

변경 사항 이해#

프로젝트를 SBOM을 사용한 의존성 스캔으로 마이그레이션하기 전에, 도입되는 근본적인 변경 사항을 이해해야 합니다. 이 전환은 기술적 발전, GitLab에서 의존성 스캔이 작동하는 방식에 대한 새로운 접근법, 그리고 사용자 경험에 대한 다양한 개선 사항을 나타내며, 그 중 일부는 다음을 포함하지만 이에 국한되지 않습니다:

  • 향상된 언어 지원. deprecated된 Gemnasium 분석기는 Python과 Java 버전의 소수 집합으로 제한됩니다. 새로운 분석기는 조직에 이전 프로젝트에서 구형 버전의 툴체인을 사용하는 데 필요한 유연성을 제공하며, 분석기 이미지의 주요 업데이트를 기다리지 않고 새로운 버전을 시험해 볼 수 있는 옵션을 제공합니다. 또한 새 분석기는 향상된 파일 커버리지의 혜택을 받습니다.
  • 향상된 성능. Gemnasium 분석기가 호출하는 빌드는 거의 한 시간이 걸릴 수 있으며 프로젝트의 자체 빌드 작업이 이미 수행한 작업과 중복될 수 있습니다. 새로운 분석기는 기존 락파일 또는 의존성 그래프 내보내기를 우선하며 락파일이 없는 생태계에 대해서만 실행됩니다. 이러한 작업은 최소한의 생태계 이미지를 사용하고 기본 패키지 관리자 명령을 실행하여 프로젝트의 의존성 그래프를 생성합니다. 생성된 의존성 그래프는 파일 아티팩트로 저장되어 보안 스캔 및 SBOM 생성을 위해 dependency-scanning 작업에 전달됩니다.
  • 더 작은 공격 표면. 빌드 기능을 지원하기 위해 Gemnasium 분석기는 다양한 툴체인과 의존성이 미리 로드됩니다. 새로운 분석기는 의존성 탐지를 의존성 해석에서 분리합니다. 분석기 이미지는 락파일 및 그래프 내보내기를 파싱하는 데 필요한 것만 포함합니다. 의존성 해석은 전용 최소 생태계 이미지에서 실행됩니다. 각 이미지는 해당 생태계에 필요한 빌드 도구만 포함합니다.
  • 더 유연한 구성. deprecated된 Gemnasium 분석기는 지원되는 모든 생태계를 번들링하는 단일 이미지 내에서 프록시, 인증기관(CA) 인증서 번들 및 기타 유틸리티 구성이 자주 필요합니다. 새로운 분석기는 관심사를 분리합니다. 분석기 자체는 최소한의 구성이 필요합니다. 생태계별 설정(프라이빗 레지스트리, 사용자 정의 CA 번들, JVM 옵션)은 관련 의존성 해석 작업에만 적용됩니다. 빌드 환경에 맞게 해석 이미지를 재정의할 수도 있습니다.

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

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

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

SBOM을 사용한 의존성 스캔이 애플리케이션을 스캔하는 방법에 대해 더 읽어보세요.

CI/CD 구성#

CI/CD 파이프라인의 중단을 방지하기 위해 새로운 접근법은 안정적인 의존성 스캔 CI/CD 템플릿(Dependency-Scanning.gitlab-ci.yml)에 적용되지 않으며 GitLab 18.5부터 v2 템플릿(Dependency-Scanning.v2.gitlab-ci.yml)을 사용하여 활성화해야 합니다. 기능이 성숙해짐에 따라 다른 마이그레이션 경로를 고려할 수 있습니다.

스캔 실행 정책을 사용하는 경우, 이러한 정책이 CI/CD 템플릿을 기반으로 하기 때문에 이러한 변경 사항이 동일하게 적용됩니다.

주요 의존성 스캔 CI/CD 구성요소를 사용하는 경우 이미 새 분석기를 채택하고 있으므로 변경 사항이 없습니다. 그러나 Android, Rust, Swift 또는 CocoaPods용 특수 구성요소를 사용하는 경우 이제 지원되는 모든 언어와 패키지 관리자를 다루는 주요 구성요소로 마이그레이션해야 합니다.

Gradle, Maven 및 Python에 대한 의존성 탐지#

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

  • 락파일 또는 의존성 그래프 내보내기: 지원되는 파일이 저장소에 커밋되거나 작업 아티팩트로 전달된 경우(예: maven.graph.json, dependencies.lock, requirements.txt, Pipfile.lock), 분석기가 직접 사용합니다. 이것이 가장 정확한 옵션입니다.

  • 의존성 해석: Maven, Gradle, Python 프로젝트에 지원되는 파일이 없으면 분석기가 자동으로 생성하려 시도합니다. 해석 작업은 최소 생태계 이미지와 기본 명령(예: mvn dependency:tree, pip-compile, gradle dependencies)으로 .pre 스테이지에서 실행됩니다. dependency-scanning 작업이 생성된 아티팩트를 사용합니다.

  • 매니페스트 폴백: 락파일 또는 의존성 그래프 파일이 없으면 분석기가 지원되는 매니페스트 파일(예: pom.xml, requirements.txt, build.gradle, build.gradle.kts)을 파싱하여 직접 의존성만 추출합니다. 전이 의존성은 탐지되지 않으며 정확한 확인된 버전을 결정할 수 없습니다.

의존성 해석과 매니페스트 폴백은 제한 가용성 중에 기본적으로 비활성화되어 있습니다. 활성화하려면 의존성 해석매니페스트 폴백 문서를 참조하세요.

가장 정확한 결과를 위해 저장소에 락파일 또는 의존성 그래프 내보내기를 커밋하거나 프로젝트의 실제 빌드 환경을 사용하여 선행 CI/CD 작업에서 생성하세요. 다음 섹션에서는 각 언어 및 패키지 관리자에 대해 사용 가능한 옵션을 설명합니다.

스캔 결과 액세스#

사용자는 Dependency-Scanning.v2.gitlab-ci.yml을 사용할 때 작업 아티팩트(gl-dependency-scanning-report.json)로 의존성 스캔 결과를 볼 수 있습니다.

베타 동작#

의존성 스캔 보고서 아티팩트는 일반 가용성(GA) 릴리스에 포함됩니다. 베타 동작은 역사적 참고용으로 문서화되어 있지만 더 이상 공식적으로 지원되지 않으며 제품에서 제거될 수 있습니다.

취약성 스캔 결과에 액세스하는 방법의 변경 사항에 대한 세부 정보를 보려면 이 섹션을 확장하세요.

SBOM을 사용한 의존성 스캔으로 마이그레이션하면 보안 스캔 결과가 처리되는 방식에 근본적인 변화를 알게 됩니다. 새로운 접근법은 보안 분석을 CI/CD 파이프라인에서 GitLab 플랫폼으로 이동시키며, 이는 결과에 액세스하고 작업하는 방법을 변경합니다. 레거시 의존성 스캔 기능을 사용하면 Gemnasium 분석기를 사용하는 CI/CD 작업이 스캔 결과를 포함하는 의존성 스캔 보고서 아티팩트를 생성하고 플랫폼에 업로드합니다. 작업 아티팩트에 제공되는 모든 가능한 방법으로 이러한 결과에 액세스할 수 있습니다. 이는 결과가 GitLab 플랫폼에 도달하기 전에 CI/CD 파이프라인 내에서 처리하거나 수정할 수 있음을 의미합니다. SBOM을 사용한 의존성 스캔 접근법은 다르게 작동합니다. 이제 보안 분석이 내장된 GitLab SBOM 취약성 스캐너를 사용하여 GitLab 플랫폼 내에서 수행되므로 작업 아티팩트에서 스캔 결과를 더 이상 찾을 수 없습니다. 대신 GitLab은 CI/CD 파이프라인이 생성하는 CycloneDX SBOM 보고서 아티팩트를 분석하여 GitLab 플랫폼에 직접 보안 결과를 생성합니다. 원활한 전환을 돕기 위해 GitLab은 일부 하위 호환성을 유지합니다. Gemnasium 분석기를 사용하는 동안에는 스캔 결과를 포함하는 표준 아티팩트(artifacts:paths 사용)를 여전히 얻을 수 있습니다. 이는 이러한 결과가 필요한 후속 CI/CD 작업이 있는 경우 여전히 액세스할 수 있음을 의미합니다. 그러나 GitLab SBOM 취약성 스캐너가 발전하고 개선됨에 따라 이러한 아티팩트 기반 결과는 최신 개선 사항을 반영하지 않을 것임을 명심하세요. 새로운 의존성 스캔 분석기로 완전히 마이그레이션할 준비가 되면 프로그래밍 방식으로 스캔 결과에 액세스하는 방법을 조정해야 합니다. 작업 아티팩트를 읽는 대신 GitLab GraphQL API, 특히 (Pipeline.securityReportFindings 리소스)를 사용합니다.

컴플라이언스 프레임워크 고려사항#

SBOM 기반 의존성 스캔으로 마이그레이션할 때 컴플라이언스 프레임워크에 미치는 잠재적 영향에 주의하세요:

  • SBOM 기반 스캔을 사용할 때 GitLab Self-Managed 인스턴스(18.4부터)에서 "의존성 스캔 실행 중" 컴플라이언스 제어가 실패할 수 있습니다. 이는 전통적인 gl-dependency-scanning-report.json 아티팩트를 예상하기 때문입니다.
  • 이 문제는 GitLab.com 인스턴스에 영향을 미치지 않습니다.
  • 조직이 의존성 스캔 제어가 포함된 컴플라이언스 프레임워크를 사용하는 경우 프로덕션이 아닌 환경에서 마이그레이션을 먼저 테스트하세요.

자세한 내용은 컴플라이언스 프레임워크 호환성을 참조하세요.

영향을 받는 프로젝트 식별#

마이그레이션에 주의가 필요한 프로젝트를 식별하면 마이그레이션 계획에 도움이 됩니다. Gradle, Maven 및 Python 프로젝트가 새 분석기에서 의존성 탐지가 다르게 작동하기 때문에 가장 큰 영향을 받습니다. 의존성 해석매니페스트 폴백을 활성화하면 이러한 프로젝트의 많은 부분이 기본 정확도로 즉시 스캔할 수 있습니다. 가장 높은 정확도가 필요한 프로젝트는 여전히 커밋된 락파일 또는 의존성 그래프 내보내기의 혜택을 받습니다. 이 도구는 GitLab 그룹 또는 GitLab Self-Managed 인스턴스를 검사하고 현재 gemnasium-maven-dependency_scanning 또는 gemnasium-python-dependency_scanning CI/CD 작업을 사용하는 프로젝트를 식별합니다. 이 도구의 보고서는 조직 전체에서 마이그레이션을 계획할 때 프로젝트 우선순위를 결정하는 데 도움이 됩니다.

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

사전 요구사항:

  • .gitlab-ci.yml 파일을 편집하거나 CI/CD 구성요소를 사용하려면: 프로젝트에 대한 Developer, Maintainer 또는 Owner 역할.
  • 스캔 실행 또는 파이프라인 실행 정책을 편집하려면: 그룹에 대한 Owner 역할 또는 manage_security_policy_link 권한이 있는 사용자 정의 역할.

SBOM을 사용한 의존성 스캔 방법으로 마이그레이션하려면 각 프로젝트에 대해 다음 단계를 수행하세요:

  1. Gemnasium 분석기 기반 의존성 스캔에 대한 기존 사용자 정의를 제거합니다.
    • 프로젝트의 .gitlab-ci.yml 또는 파이프라인 실행 정책의 CI/CD 구성에서 gemnasium-dependency_scanning, gemnasium-maven-dependency_scanning 또는 gemnasium-python-dependency_scanning CI/CD 작업을 수동으로 재정의하여 사용자 정의한 경우 제거합니다.
    • 영향을 받는 CI/CD 변수를 구성한 경우 그에 따라 구성을 조정합니다.
  2. 다음 옵션 중 하나를 사용하여 SBOM을 사용한 의존성 스캔 기능을 활성화합니다:
    • 권장: 새로운 의존성 스캔 분석기를 실행하기 위해 v2 의존성 스캔 CI/CD 템플릿 Dependency-Scanning.v2.gitlab-ci.yml을 사용합니다:
      1. .gitlab-ci.yml CI/CD 구성이 v2 의존성 스캔 CI/CD 템플릿을 포함하는지 확인합니다.
      2. 필요한 경우 아래의 언어별 지침에 따라 프로젝트와 CI/CD 구성을 조정합니다.
    • 새로운 의존성 스캔 분석기를 실행하기 위해 스캔 실행 정책을 사용합니다:
      1. 의존성 스캔을 위해 구성된 스캔 실행 정책을 편집하고 v2 템플릿을 사용하는지 확인합니다.
      2. 필요한 경우 아래의 언어별 지침에 따라 프로젝트와 CI/CD 구성을 조정합니다.
    • 새로운 의존성 스캔 분석기를 실행하기 위해 파이프라인 실행 정책을 사용합니다:
      1. 구성된 파이프라인 실행 정책을 편집하고 v2 템플릿을 사용하는지 확인합니다.
      2. 필요한 경우 아래의 언어별 지침에 따라 프로젝트와 CI/CD 구성을 조정합니다.
    • 새로운 의존성 스캔 분석기를 실행하기 위해 의존성 스캔 CI/CD 구성요소를 사용합니다:
      1. .gitlab-ci.yml CI/CD 구성에서 의존성 스캔 CI/CD 템플릿의 include 문을 의존성 스캔 CI/CD 구성요소로 교체합니다.
      2. 필요한 경우 아래의 언어별 지침에 따라 프로젝트와 CI/CD 구성을 조정합니다.

다국어 프로젝트의 경우 해당하는 모든 언어별 마이그레이션 단계를 완료하세요.

Note

CI/CD 템플릿에서 CI/CD 구성요소로 마이그레이션하기로 결정한 경우 GitLab Self-Managed에 대한 현재 제한 사항을 검토하세요.

언어별 지침#

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

  • 의존성 탐지 방법이 어떻게 변경되는지
  • 어떤 특정 파일을 제공해야 하는지
  • 이러한 파일이 이미 워크플로우에 포함되지 않은 경우 생성하는 방법

피드백 이슈에서 새로운 의존성 스캔 분석기에 대한 의견을 공유하세요.

Bundler#

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

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

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

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

사전 요구사항:

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

CocoaPods#

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

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

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

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

사전 요구사항:

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

Composer#

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

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

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

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

사전 요구사항:

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

Conan#

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

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

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

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

사전 요구사항:

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

Go#

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

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

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

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

사전 요구사항:

Go 프로젝트를 마이그레이션하려면:

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

자세한 내용과 예시는 Go 활성화 지침을 참조하세요.

Gradle#

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

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

  • 저장소 또는 작업 아티팩트에 지원되는 락파일 또는 그래프 내보내기가 있으면(예: gradle.lockfile) 분석기가 직접 사용합니다.

  • 지원되는 락파일 또는 그래프 내보내기가 탐지되지 않지만 지원되는 빌드 파일이 있으면(예: build.gradle) .pre 스테이지에서 의존성 해석 작업이 실행됩니다. 자동으로 gradle dependencies를 실행하여 dependency-scanning 작업을 위한 의존성 그래프 내보내기를 생성합니다.

  • 의존성 해석을 사용할 수 없거나 실패하면 매니페스트 폴백build.gradlebuild.gradle.kts를 직접 파싱하여 직접 의존성만 추출합니다. gradle.properties 또는 gradle/libs.versions.toml을 통해 의존성을 선언하는 프로젝트의 경우 버전 변수가 항상 확인되지 않으므로 매니페스트 폴백 정확도가 낮아집니다.

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

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

사전 요구사항:

Gradle 프로젝트를 마이그레이션하려면 다음 옵션 중 하나를 선택하세요:

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

  • 의존성 해석에 의존하여 gradle.graph.txt 파일을 자동으로 생성합니다. 해석 이미지가 그래프 내보내기를 성공적으로 생성할 수 있는지 확인합니다.

  • build.gradle 또는 build.gradle.kts에 선언된 직접 의존성의 기본 커버리지를 위해 매니페스트 폴백을 사용합니다.

자세한 내용과 예시는 Gradle 활성화 지침을 참조하세요.

Maven#

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

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

  • maven dependency plugin으로 생성된 maven.graph.json 그래프 내보내기 파일이 저장소 또는 작업 아티팩트에 있으면 분석기가 직접 사용합니다.

  • 그래프 내보내기가 탐지되지 않지만 지원되는 pom.xml 파일이 있으면 .pre 스테이지에서 의존성 해석 작업이 실행됩니다. 자동으로 mvn dependency:tree를 실행하여 dependency-scanning 작업을 위한 의존성 그래프 내보내기를 생성합니다.

  • 의존성 해석을 사용할 수 없거나 실패하면 매니페스트 폴백pom.xml을 직접 파싱하여 직접 의존성만 추출합니다.

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

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

사전 요구사항:

Maven 프로젝트를 마이그레이션하려면 다음 옵션 중 하나를 선택하세요:

  • 가장 정확한 결과를 위해 프로젝트가 maven.graph.json 파일을 제공하는지 확인합니다. 선행 CI/CD 작업(예: build)에서 maven dependency plugin을 구성하여 maven.graph.json 파일을 동적으로 생성하고 의존성 스캔 작업을 실행하기 전에 아티팩트로 내보냅니다. 그래프 내보내기를 동적으로 생성할 때 DS_DISABLED_RESOLUTION_JOBS CI/CD 변수 값에 maven을 추가하여 자동 의존성 해석을 비활성화합니다.

  • 의존성 해석에 의존하여 maven.graph.json 파일을 자동으로 생성합니다. 해석 이미지가 그래프 내보내기를 성공적으로 생성할 수 있는지 확인합니다.

  • pom.xml에 선언된 직접 의존성의 기본 커버리지를 위해 매니페스트 폴백을 사용합니다.

자세한 내용과 예시는 Maven 활성화 지침을 참조하세요.

npm#

이전 동작: Gemnasium 분석기 기반 의존성 스캔은 gemnasium-dependency_scanning CI/CD 작업과 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 작업으로 CycloneDX SBOM 보고서 아티팩트를 생성합니다. 이 분석기는 벤더링된 JavaScript 파일을 스캔하지 않습니다. 대체 기능에 대한 지원은 에픽 7186에서 제안되었습니다.

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

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

사전 요구사항:

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

NuGet#

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

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

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

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

사전 요구사항:

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

pip#

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

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

  • 저장소 또는 작업 아티팩트에 지원되는 락파일 또는 그래프 내보내기가 있으면(예: pip-compile로 생성된 requirements.txt) 분석기가 직접 사용합니다.

  • 지원되는 락파일 또는 그래프 내보내기가 탐지되지 않지만 지원되는 빌드 파일이 있으면(예: requirements.in) .pre 스테이지에서 의존성 해석 작업이 실행됩니다. 자동으로 pip-compile을 실행하여 dependency-scanning 작업을 위한 락파일을 생성합니다.

  • 의존성 해석을 사용할 수 없거나 실패하면 매니페스트 폴백requirements.txt 파일을 직접 파싱하여 직접 의존성만 추출합니다.

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

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

사전 요구사항:

pip 프로젝트를 마이그레이션하려면 다음 옵션 중 하나를 선택하세요:

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

  • 의존성 해석에 의존하여 pipcompile.lock.txt 파일을 자동으로 생성합니다. 해석 이미지가 락파일을 성공적으로 생성할 수 있는지 확인합니다.

  • requirements.txt에 선언된 직접 의존성의 기본 커버리지를 위해 매니페스트 폴백을 사용합니다.

자세한 내용과 예시는 pip 활성화 지침을 참조하세요.

Pipenv#

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

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

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

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

사전 요구사항:

Pipenv 프로젝트를 마이그레이션하려면:

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

Poetry#

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

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

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

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

사전 요구사항:

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

pnpm#

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

새로운 동작: 새로운 의존성 스캔 분析기도 pnpm-lock.yaml 파일을 파싱하여 프로젝트 의존성을 추출하고 dependency-scanning CI/CD 작업으로 CycloneDX SBOM 보고서 아티팩트를 생성합니다. 이 분析기는 벤더링된 JavaScript 파일을 스캔하지 않습니다. 대체 기능에 대한 지원은 에픽 7186에서 제안되었습니다.

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

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

사전 요구사항:

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

sbt#

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

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

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

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

사전 요구사항:

sbt 프로젝트를 마이그레이션하려면:

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

자세한 내용과 예시는 sbt 활성화 지침을 참조하세요.

setuptools#

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

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

  • 저장소 또는 작업 아티팩트에 지원되는 락파일 또는 그래프 내보내기가 있으면(예: pip-compile로 생성된 requirements.txt) 分析기가 직접 사용합니다.

  • 지원되는 락파일 또는 그래프 내보내기가 탐지되지 않지만 지원되는 빌드 파일이 있으면(예: setup.py) .pre 스테이지에서 의존성 해석 작업이 실행됩니다. 자동으로 pip-compile을 실행하여 dependency-scanning 작업을 위한 락파일을 생성합니다.

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

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

사전 요구사항:

setuptools 프로젝트를 마이그레이션하려면 다음 옵션 중 하나를 선택하세요:

  • 가장 정확한 결과를 위해 프로젝트가 requirements.txt 락파일을 제공하는지 확인합니다. 프로젝트에 pip-compile 명령줄 도구를 구성하고 다음 중 하나를 선택합니다:

    • 개발 워크플로우에 명령줄 도구를 영구적으로 통합합니다. 이는 requirements.txt 파일을 저장소에 커밋하고 프로젝트 의존성을 변경할 때 업데이트하는 것을 의미합니다.
    • build CI/CD 작업에서 명령줄 도구를 사용하여 requirements.txt 파일을 동적으로 생성하고 의존성 스캔 작업을 실행하기 전에 아티팩트로 내보냅니다.
  • 의존성 해석을 활성화하여 매니페스트 파일에서 requirements.txt 락파일을 자동으로 생성합니다.

자세한 내용과 예시는 pip 활성화 지침을 참조하세요.

Swift#

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

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

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

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

사전 요구사항:

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

uv#

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

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

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

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

사전 요구사항:

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

Yarn#

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

새로운 동작: 새로운 의존성 스캔 分析기도 yarn.lock 파일을 파싱하여 프로젝트 의존성을 추출하고 dependency-scanning CI/CD 작업으로 CycloneDX SBOM 보고서 아티팩트를 생성합니다. 이 分析기는 Yarn 의존성에 대한 수정 데이터를 제공하지 않습니다. 대체 기능에 대한 지원은 에픽 759에서 제안되었습니다. 이 分析기는 벤더링된 JavaScript 파일을 스캔하지 않습니다. 대체 기능에 대한 지원은 에픽 7186에서 제안되었습니다.

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

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

사전 요구사항:

의존성 스캔 分析기를 사용하도록 Yarn 프로젝트를 마이그레이션하는 데 추가 단계가 필요하지 않습니다. 머지 리퀘스트를 통한 취약성 해결 기능을 사용하는 경우 사용 가능한 작업에 대한 사용 중단 공지를 확인하세요. JavaScript 벤더링 파일 스캔 기능을 사용하는 경우 사용 중단 공지를 확인하세요.

CI/CD 변수 변경 사항#

다음 표에는 Gemnasium 分析기 기반의 레거시 의존성 스캔 기능에서 이전에 사용된 CI/CD 변수와 새로운 의존성 스캔 분析기에서의 상태가 나열되어 있습니다:

레거시 변수 새 分析기에서의 상태
ADDITIONAL_CA_CERT_BUNDLE 유지. additional_ca_cert_bundle spec 입력을 선호합니다.
AST_ENABLE_MR_PIPELINES 유지.
DS_ANALYZER_IMAGE 유지.
DS_EXCLUDED_ANALYZERS 제거됨.
DS_EXCLUDED_PATHS 유지. excluded_paths spec 입력을 선호합니다.
DS_GRADLE_RESOLUTION_POLICY 제거됨.
DS_IMAGE_SUFFIX 제거됨.
DS_INCLUDE_DEV_DEPENDENCIES 유지. include_dev_dependencies spec 입력을 선호합니다.
DS_JAVA_VERSION 제거됨.
DS_MAX_DEPTH 유지. max_scan_depth spec 입력을 선호합니다.
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 입력을 선호합니다.
SECURE_LOG_LEVEL 유지. analyzer_log_level spec 입력을 선호합니다.

제거됨으로 표시된 변수는 새 分析기에서 무시됩니다. 다른 작업에서도 사용되지 않는 경우 CI/CD 구성에서 제거하세요.

<새-이름>으로 교체됨으로 표시된 변수는 여전히 작동하지만 deprecated되었습니다. GitLab 다음 주요 버전에서 제거될 예정입니다. 새 변수 이름을 사용하도록 CI/CD 구성을 업데이트하세요.

유지로 표시된 변수는 새 分析기에서 허용되며 사용 가능한 CI/CD 변수 참조에 문서화된 대로 동작합니다. 일부 유지된 변수는 이제 의존성 해석 작업에만 적용되며 표에 표시되어 있습니다.

기존 사용자 구성(특히 스캔 실행 정책)의 원활한 전환을 위해 v2 템플릿은 이러한 CI/CD 변수와 하위 호환됩니다. 설정되면 해당 spec:inputs보다 우선합니다.

.gitlab-ci.yml에서 v2 CI/CD 템플릿을 직접 사용할 때는 分析기를 구성하기 위해 CI/CD 변수보다 spec 입력을 선호합니다. Spec 입력은 파이프라인 생성 시 유효성이 검사되고 더 명확한 오류 메시지를 제공하며 템플릿 포함으로 범위가 지정됩니다. 스캔 실행 정책이나 보안 구성 프로파일을 통해 의존성 스캔을 구성할 때는 spec 입력을 아직 사용할 수 없으므로 CI/CD 변수를 사용하세요.

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

v2 템플릿은 다음 변수를 추가합니다. 자세한 내용은 사용 가능한 spec 입력사용 가능한 CI/CD 변수 참조를 참조하세요.

변수 Spec 입력 동등값 목적
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 비활성화할 의존성 해석 작업의 쉼표로 구분된 목록(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 의존성 해석 작업에서 사용하는 이미지.
DS_MAVEN_RESOLUTION_IMAGE maven_resolution_image Maven 의존성 해석 작업에서 사용하는 이미지.
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 매니페스트 파일의 글로브 패턴.
DS_PIPCOMPILE_LOCKFILE_FILE_NAME_PATTERN pipcompile_lockfile_file_name_pattern pip-compile 락파일의 글로브 패턴.