Skip to main content

종속성 그래프에서 지원되는 패키지 에코시스템

종속성 그래프는 다양한 에코시스템을 지원합니다.

종속성 그래프 정보

종속성 그래프에 대한 소개는 종속성 그래프 정보을(를) 참조하세요.

종속성 그래프 빌드

종속성 그래프를 사용하도록 설정하면, 프로그래밍 언어 패키지 에코시스템에서 사용되는 매니페스트 파일을 리포지토리에서 검색합니다. 지원되는 매니페스트 파일 중 하나를 발견하면, 해당 파일을 구문 분석하여 각 패키지의 이름과 버전을 포함한 콘텐츠의 표현을 작성합니다. 이를 "정적 분석"이라고 합니다.

일부 파일은 모든 직접 및 모든 간접 종속성에 사용되는 버전을 명시적으로 정의합니다. 이러한 파일은 빌드에 포함된 패키지 버전을 고정하며, Dependabot이 직접 및 간접 종속성 모두에서 취약한 버전을 식별할 수 있도록 합니다. 이러한 형식을 사용하면 종속성 그래프가 더 정확해지므로 "Supported package ecosystems" 표의 "Recommended files" 열 아래에 나열됩니다. 지원되는 패키지 에코시스템을 참조하세요. 매니페스트 파일(또는 동등한 파일)에서 추론된 간접 종속성은 안전하지 않은 종속성에 대한 Dependabot 검사에서 제외됩니다.

빌드 시점에 전이적 종속성을 확인하는 에코시스템의 경우 정적 분석은 종속성 트리에 대한 포괄적인 보기를 제공하지 않습니다. 이러한 에코시스템에서 GitHub Actions를 사용하는 두 가지 방법이 있습니다. 자동 종속성 제출과 수동 종속성 제출입니다. 두 방식 모두 외부 작업을 통해 전체 종속성 트리를 생성하고 종속성 제출 API에 업로드합니다. 리포지토리의 설정 페이지에서 지원되는 에코시스템에 대한 자동 제출을 활성화할 수 있습니다. 자세한 내용은 리포지토리에 대한 자동 종속성 제출 구성을(를) 참조하세요.

종속성 제출 작업을 통해 지원되는 패키지 에코시스템

종속성 그래프의 정적 분석 및 자동 제출 외에도 종속성 제출 API를 사용하여 빌드 시간 종속성을 종속성 그래프에 추가하거나 "Supported package ecosystems" 표에 없는 에코시스템이더라도 원하는 패키지 관리자 및 에코시스템의 종속성을 종속성 그래프에 추가할 수 있습니다. 이러한 제출된 종속성의 종속성 정보는 Dependabot updates 및 Dependabot alerts으로 차례로 전달됩니다.

종속성 제출 API을 사용하여 프로젝트에 제출된 종속성은 제출에 사용된 탐지기와 제출된 시점을 표시합니다. 종속성 제출 API에 대한 자세한 내용은 종속성 제출 API 사용을(를) 참조하세요.

지원되는 패키지 에코시스템

패키지 관리자언어정적 전이적 종속성자동 종속성 제출권장 파일추가 파일
CargoRustCargo.lockCargo.toml
작성기PHPcomposer.lockcomposer.json
NuGet.NET 언어(C#, F#, VB), C++.csproj, .vbproj, .nuspec, .vcxproj, .fsprojpackages.config
GitHub Actions 워크플로YAML.yml, .yaml
Go 모듈Gogo.mod
GradleJava
MavenJava, Scalapom.xml
npmJavaScriptpackage-lock.jsonpackage.json
pipPythonrequirements.txt, pipfile.lockpipfile, setup.py
pnpmJavaScriptpnpm-lock.yamlpackage.json
pubDartpubspec.lockpubspec.yaml
PoetryPythonpoetry.lockpyproject.toml
RubyGemsRubyGemfile.lockGemfile, *.gemspec
Swift 패키지 관리자SwiftPackage.resolved
YarnJavaScriptyarn.lockpackage.json

참고 항목

  • Static transitive dependencies 열은 정적 분석이 해당 에코시스템의 종속 패키지에 directtransitive 레이블을 추가할지 여부를 나타냅니다. 종속성 제출 작업(자동 또는 수동 구성)을 통해 정적 분석으로는 불가능한 에코시스템에 전이적 정보를 추가할 수 있습니다.
  • setup.py 파일 내에 Python 종속성을 나열하는 경우 프로젝트의 모든 종속성을 구문 분석하고 나열하지 못할 수 있습니다.
  • GitHub Actions 워크플로는 매니페스트로 인식되려면 리포지토리의 .github/workflows/ 디렉터리에 있어야 합니다. 구문 jobs[*].steps[*].uses 또는 jobs.<job_id>.uses를 사용하여 참조되는 모든 작업 또는 워크플로는 종속성으로 구문 분석됩니다. 자세한 내용은 GitHub Actions에 대한 워크플로 구문을(를) 참조하세요.
  • Dependabot은(는) 의미 체계 버전 관리를 사용하는 취약한 GitHub Actions에 대한 Dependabot alerts만 만듭니다. SHA 버전 관리를 사용하는 취약한 작업에 대한 경고는 수신되지 않습니다. SHA 버전 관리와 함께 GitHub Actions을(를) 사용하는 경우, 리포지토리 또는 조직에 Dependabot version updates을(를) 사용 설정하여 사용하는 작업을 계속해서 최신 버전으로 업데이트하는 것이 좋습니다. 자세한 내용은 Dependabot 경고 정보Dependabot 버전 업데이트 정보 항목을 참조하세요.

매니페스트 중복 제거

종속성 그래프는 정적 분석, 자동 제출, 수동 제출이라는 세 가지 방법으로 종속성에 대해 알아볼 수 있습니다. 하나의 리포지토리에 여러 스캔 방식이 구성되어 있을 수 있으며, 이로 인해 동일한 패키지 매니페스트가 여러 번 스캔될 수 있으며, 각 스캔마다 서로 다른 결과가 나올 수 있습니다. 종속성 그래프는 중복 제거 논리를 사용하여 출력을 구문 분석하여 각 매니페스트 파일에 대해 가장 정확한 정보의 우선 순위를 지정합니다.

종속성 그래프는 다음 우선 순위 규칙을 사용하여 각 매니페스트 파일의 인스턴스를 하나만 표시합니다.

  1. 사용자 제출은 일반적으로 아티팩트 빌드 중에 생성되며, 가장 완전한 정보를 포함하고 있기 때문에 가장 높은 우선 순위를 갖습니다.
    • 서로 다른 감지기의 수동 스냅샷이 여러 개 있는 경우, 관련자 및 사용된 첫 번째 스냅샷을 기준으로 사전순으로 정렬됩니다.
    • 동일한 감지기를 사용하는 두 개의 관련자가 있는 경우, 해결된 종속성이 병합됩니다. 관련자 및 감지기에 대한 자세한 내용은 종속성 제출에 대한 REST API 엔드포인트을(를) 참조하세요.
  2. 자동 제출은 아티팩트 빌드 중에 생성되지만 사용자가 제출하지는 않기 때문에 두 번째로 높은 우선 순위를 갖습니다.
  3. 정적 분석 결과는 다른 데이터를 사용할 수 없는 경우에 사용됩니다.