종속성 그래프 정보
종속성 그래프는 리포지토리에 저장된 매니페스트 및 잠금 파일과 종속성 제출 API을(를) 사용하여 리포지토리에 대해 제출된 모든 종속성을 요약한 것입니다. 각 리포지토리에 대해 다음이 표시됩니다 리포지토리가 의존하는 종속성, 즉 에코시스템 및 패키지.
각 종속성에 대해 버전 포함된 매니페스트 파일 및 알려진 취약성이 있는지를 확인할 수 있습니다. 전이적 종속성을 지원하는 패키지 에코시스템의 경우 관계 상태가 표시되고 공개 단추 ... 는 종속성을 공개 단추에 가져온 전이적 경로를 표시합니다. 전이적 종속성 지원에 대한 자세한 내용은 종속성 그래프에서 지원되는 패키지 에코시스템을(를) 참조하세요.
검색 표시줄을 사용하여 특정 종속성을 검색할 수도 있습니다. 종속성은 취약성을 맨 위에 두고 자동으로 정렬됩니다.
GitHub는 종속성에 대한 라이선스 정보를 검색하지 않으며 종속성, 리포지토리 및 리포지토리에 의존하는 패키지에 대한 정보를 계산하지 않습니다. 자세한 내용은 종속성 그래프 정보을(를) 참조하세요.
지원되는 패키지 에코시스템
종속성 그래프를 사용하도록 설정하면, 일반적으로 사용되는 많은 프로그래밍 언어 패키지 에코시스템에서 사용되는 매니페스트 파일을 리포지토리에서 검색합니다. 지원되는 매니페스트 파일 중 하나를 발견하면, 해당 콘텐츠의 내용을 구문 분석하여 각 패키지의 이름과 버전을 포함한 콘텐츠의 표현을 작성합니다.
일부 파일은 모든 직접 및 모든 간접 종속성에 사용되는 버전을 명시적으로 정의합니다. 이러한 파일은 빌드에 포함된 패키지 버전을 고정하며, Dependabot이 직접 및 간접 종속성 모두에서 취약한 버전을 식별할 수 있도록 합니다. 이러한 형식을 사용하면, 종속성 그래프의 정확도가 더욱 향상되므로 해당 형식은 이 표의 "권장 파일" 열 아래에 나열됩니다.
패키지 관리자 | 언어 | 전이적 종속성 | 권장 파일 | 추가 파일 |
---|---|---|---|---|
Cargo | Rust | Cargo.lock | Cargo.toml | |
작성기 | PHP | composer.lock | composer.json | |
NuGet | .NET 언어(C#, F#, VB), C++ | .csproj , .vbproj , .nuspec , .vcxproj , .fsproj | packages.config | |
GitHub Actions 워크플로 | YAML | .yml , .yaml | ||
Go 모듈 | Go | go.mod | ||
Maven | Java, Scala | pom.xml | ||
npm | JavaScript | package-lock.json | package.json | |
pip | Python | requirements.txt , pipfile.lock | pipfile , setup.py | |
pnpm | JavaScript | pnpm-lock.yaml | package.json | |
pub | Dart | pubspec.lock | pubspec.yaml | |
Python Poetry | Python | poetry.lock | pyproject.toml | |
RubyGems | Ruby | Gemfile.lock | Gemfile , *.gemspec | |
Swift 패키지 관리자 | Swift | Package.resolved | ||
Yarn | JavaScript | yarn.lock | package.json |
Note
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 버전 업데이트 정보 항목을 참조하세요.
종속성 제출 작업을 통해 지원되는 패키지 에코시스템
종속성 그래프의 정적 분석 및 자동 제출 외에도 종속성 제출 API를 사용하여 빌드 시간 종속성을 종속성 그래프에 추가하거나 위의 지원되는 에코시스템 목록에 없는 에코시스템이더라도 원하는 패키지 관리자 및 에코시스템의 종속성을 종속성 그래프에 추가할 수 있습니다. 이러한 제출된 종속성의 종속성 정보는 Dependabot updates 및 Dependabot alerts으로 차례로 전달됩니다.
종속성 제출 API을 사용하여 프로젝트에 제출된 종속성은 제출에 사용된 탐지기와 제출된 시점을 표시합니다. 종속성 제출 API에 대한 자세한 내용은 종속성 제출 API 사용을(를) 참조하세요.
GitHub Actions 워크플로에서 대부분의 경우 종속성 제출 API을(를) 사용하여 프로젝트를 빌드할 때 프로젝트에 대한 종속성을 제출합니다. 종속성 제출 API을(를) 사용하는 가장 간단한 방법은 종속성 목록을 수집하고 필요한 스냅샷 형식으로 변환한 후 목록을 API에 제출하는 미리 만들어진 작업을 리포지토리에 추가하는 것입니다. 아래 표에서 현재 사용할 수 있는 작업에 대한 링크를 찾을 수 있습니다.
에코시스템 | 작업 |
---|---|
Go | Go 종속성 제출 |
Gradle | 그레이들 종속성 제출 |
Maven | Maven 종속성 트리 종속성 제출 |
제분기 | Mill 종속성 제출 |
Mix(Elixir) | Mix 종속성 제출 |
Scala | Sbt 종속성 제출 |
NuGet 및 기타 | 구성 요소 감지 종속성 제출 작업 |
Note
구성 요소 검색 종속성 제출 작업의 경우 지원되는 다른 에코시스템에는 Vcpkg, Conan, Conda, Crates, NuGet이 포함됩니다.
예를 들어 다음 Go 종속성 제출 워크플로는 Go 빌드 대상(main
함수를 포함하는 Go 파일)에 대한 종속성을 계산하고 해당 목록을 종속성 제출 API에 제출합니다.
name: Go Dependency Submission
on:
push:
branches:
- main
# The API requires write permission on the repository to submit dependencies
permissions:
contents: write
# Environment variables to configure Go and Go modules. Customize as necessary
env:
GOPROXY: '' # A Go Proxy server to be used
GOPRIVATE: '' # A list of modules are considered private and not requested from GOPROXY
jobs:
go-action-detection:
runs-on: ubuntu-latest
steps:
- name: 'Checkout Repository'
uses: actions/checkout@v4
- uses: actions/setup-go@v5
with:
go-version: ">=1.18.0"
- name: Run snapshot action
uses: actions/go-dependency-submission@v1
with:
# Required: Define the repo path to the go.mod file used by the
# build target
go-mod-path: go-example/go.mod
#
# Optional. Define the repo path of a build target,
# a file with a `main()` function.
# If undefined, this action will collect all dependencies
# used by all build targets for the module. This may
# include Go dependencies used by tests and tooling.
go-build-target: go-example/cmd/octocat.go
작업을 직접 만들 수도 있습니다. 자세한 내용은 종속성 제출 API 사용을(를) 참조하세요.
매니페스트 중복 제거
종속성 그래프는 정적 분석, 자동 제출, 사용자 제출이라는 세 가지 방법으로 종속성에 대해 알아볼 수 있습니다. 하나의 리포지토리에 여러 스캔 방식이 구성되어 있을 수 있으며, 이로 인해 동일한 패키지 매니페스트가 여러 번 스캔되고 각 스캔마다 서로 다른 결과가 나올 수 있습니다. 종속성 그래프는 중복 제거 논리를 사용하여 출력을 구문 분석하여 각 매니페스트 파일에 대해 가장 정확한 정보의 우선 순위를 지정합니다.
종속성 그래프는 다음 우선 순위 규칙을 사용하여 각 매니페스트 파일의 인스턴스를 하나만 표시합니다.
- 사용자 제출은 일반적으로 아티팩트 빌드 중에 생성되며, 가장 완전한 정보를 포함하고 있기 때문에 가장 높은 우선 순위를 갖습니다.
- 서로 다른 감지기의 수동 스냅샷이 여러 개 있는 경우, 관련자 및 사용된 첫 번째 스냅샷을 기준으로 사전순으로 정렬됩니다.
- 동일한 감지기를 사용하는 두 개의 관련자가 있는 경우, 해결된 종속성이 병합됩니다. 관련자 및 감지기에 대한 자세한 내용은 종속성 제출에 대한 REST API 엔드포인트을(를) 참조하세요.
- 자동 제출은 아티팩트 빌드 중에 생성되지만 사용자가 제출하지는 않기 때문에 두 번째로 높은 우선 순위를 갖습니다.
- 정적 분석 결과는 다른 데이터를 사용할 수 없는 경우에 사용됩니다.