참고: 종속성 제출에 REST API를 사용하는 기능은 현재 퍼블릭 베타 버전이며 변경될 수 있습니다.
종속성 제출 API 정보
REST API를 사용하여 프로젝트에 대한 종속성을 제출할 수 있습니다. 이를 통해 소프트웨어가 컴파일되거나 빌드될 때 확인된 종속성 등의 종속성을 GitHub의 종속성 그래프 기능에 추가하여 프로젝트의 모든 종속성을 보다 완벽하게 파악할 수 있습니다.
종속성 그래프는 리포지토리의 매니페스트 또는 잠금 파일(예: JavaScript 프로젝트의 package-lock.json
파일)에서 식별되는 종속성 외에 API를 사용하여 제출하는 모든 종속성을 보여 줍니다. 종속성 그래프를 보는 방법에 대한 자세한 내용은 "AUTOTITLE"을 참조하세요.
제출된 종속성은 알려진 취약성에 대해 Dependabot alerts 및 Dependabot security updates를 받게 됩니다. GitHub Advisory Database의 지원되는 에코시스템 중 하나에서 발생한 종속성에 대한 Dependabot alerts만 가져옵니다. 제출된 종속성은 종속성 검토 또는 조직의 종속성 인사이트에 표시되지 않습니다.
종속성은 스냅샷 형식으로 종속성 제출 API에 제출됩니다. 스냅샷은 커밋 SHA 및 기타 메타데이터와 연결된 종속성 집합으로, 커밋에 대한 리포지토리의 현재 상태를 반영합니다. 스냅샷은 빌드 시 검색된 종속성 또는 SBOM(소프트웨어 자료 청구서)에서 생성할 수 있습니다. 이러한 사용 사례 중 하나를 지원하는 GitHub Actions이(가) 있습니다. 종속성 제출 API에 대한 자세한 내용은 종속성 제출 REST API 설명서를 참조하세요.
빌드 시 종속성 제출
GitHub Actions 워크플로에서 종속성 제출 API를 사용하여 프로젝트를 빌드할 때 프로젝트에 대한 종속성을 제출할 수 있습니다.
미리 만들어진 작업 사용
종속성 제출 API를 사용하는 가장 간단한 방법은 종속성 목록을 수집하고 필요한 스냅샷 형식으로 변환한 후 목록을 API에 제출하는 미리 만들어진 작업을 리포지토리에 추가하는 것입니다. 다양한 에코시스템에 대해 이러한 단계를 완료하는 작업은 GitHub Marketplace에서 사용할 수 있습니다. 이러한 작업 중 일부는 제3자가 제공합니다. 아래 표에서 현재 사용 가능한 작업에 대한 링크를 찾을 수 있습니다.
에코시스템 | 작업 | GitHub에 의해 유지 관리됨 |
---|---|---|
Go | Go 종속성 제출 | |
Gradle | Gradle 종속성 제출 | |
Maven | Maven 종속성 트리 종속성 제출 | |
제분기 | 밀 종속성 제출 | |
Scala | Sbt 종속성 제출 |
예를 들어 다음 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
# Envionment 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@v3
- uses: actions/setup-go@v3
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 설명서의 “리포지토리 스냅샷 만들기” API 작업에 대한 본문 매개 변수를 참조하세요.
- 종속성 제출 API에 형식이 지정된 종속성 목록을 제출합니다.
GitHub는 종속성 제출 API에 종속성을 제출하기 위한 고유한 GitHub 작업을 빌드하는 데 도움이 되는 TypeScript 라이브러리인 종속성 제출 도구 키트를 유지 관리합니다. 작업 작성에 대한 자세한 내용은 "작업 만들기"을 참조하세요.
SBOM(소프트웨어 자료 청구서 생성 및 제출)
GitHub Actions을(를) 사용하여 종속성 및 관련 정보의 공식적이고 컴퓨터에서 읽을 수 있는 인벤토리인 SBOM(소프트웨어 청구서)을 생성할 수 있습니다. 다음 작업은 리포지토리에 대한 SBOM을 생성하고 다른 애플리케이션에서 다운로드하고 사용할 수 있는 워크플로 아티팩트로 연결합니다. 워크플로 아티팩트 다운로드에 대한 자세한 내용은 "워크플로 아티팩트 다운로드"을 참조하세요.
작업 | 세부 정보 | |
---|---|---|
SBOM-generator-action | 종속성 그래프의 정보를 사용하여 SPDX SBOM 생성 | |
앵커 SBOM 작업 | Syft를 사용하여 지원되는 에코시스템을 사용하여 SPDX 2.2 호환 SBOM 만들기 | |
Microsoft의 sbom-tool | 종속성을 검사하고 SPDX 호환 SBOM을 만듭니다. |
그런 다음, 다음 작업 중 하나를 사용하여 종속성 제출 API에 SBOM을 업로드하고 제출하여 알려진 취약성이 있는 종속성에 대해 Dependabot alerts를 받을 수 있습니다. 두 테이블에 모두 표시되는 작업은 SBOM을 생성하고 제출하도록 구성할 수 있습니다.
작업 | 세부 정보 | |
---|---|---|
SPDX 종속성 제출 작업 | Microsoft의 SBOM 도구를 사용하여 지원되는 에코시스템으로 SPDX 2.2 호환 SBOM 만들기 | |
앵커 SBOM 작업 | Syft를 사용하여 지원되는 에코시스템을 사용하여 SPDX 2.2 호환 SBOM 만들기 | |
SBOM 종속성 제출 작업 | 종속성 제출 API에 CycloneDX SBOM 업로드 |
예를 들어 다음 SPDX 종속성 제출 작업 워크플로는 리포지토리에 대한 종속성을 계산하고, SPDX 2.2 형식으로 내보낼 수 있는 SBOM을 생성하고, 종속성 제출 API에 제출합니다.
name: SBOM upload
on:
workflow_dispatch:
push:
branches: ["main"]
jobs:
SBOM-upload:
runs-on: ubuntu-latest
permissions:
id-token: write
contents: write
steps:
- uses: actions/checkout@v3
- name: Generate SBOM
# generation command documentation: https://github.com/microsoft/sbom-tool#sbom-generation
run: |
curl -Lo $RUNNER_TEMP/sbom-tool https://github.com/microsoft/sbom-tool/releases/latest/download/sbom-tool-linux-x64
chmod +x $RUNNER_TEMP/sbom-tool
$RUNNER_TEMP/sbom-tool generate -b . -bc . -pn $ -pv 1.0.0 -ps OwnerName -nsb https://sbom.mycompany.com -V Verbose
- uses: actions/upload-artifact@v3
with:
name: sbom
path: _manifest/spdx_2.2
- name: SBOM upload
uses: advanced-security/spdx-dependency-submission-action@v0.0.1
with:
filePath: "_manifest/spdx_2.2/"