Skip to main content
설명서에 자주 업데이트를 게시하며 이 페이지의 번역이 계속 진행 중일 수 있습니다. 최신 정보는 영어 설명서를 참조하세요.

종속성 제출 API 사용

종속성 제출 API를 사용하면 프로젝트에 대해 프로젝트를 빌드하거나 컴파일할 때 확인되는 종속성과 같은 종속성을 제출할 수 있습니다.

참고: 종속성 제출에 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에 의해 유지 관리됨
GoGo 종속성 제출
GradleGradle 종속성 제출
MavenMaven 종속성 트리 종속성 제출
제분기밀 종속성 제출
ScalaSbt 종속성 제출

예를 들어 다음 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

사용자 고유의 작업 만들기

또는 빌드 시 프로젝트에 대한 종속성을 제출하는 고유한 작업을 작성할 수 있습니다. 워크플로는 다음을 수행해야 합니다.

  1. 프로젝트에 대한 종속성 목록을 생성합니다.
  2. 종속성 목록을 종속성 제출 API에서 허용하는 스냅샷 형식으로 변환합니다. 형식에 대한 자세한 내용은 종속성 제출 REST API 설명서의 “리포지토리 스냅샷 만들기” API 작업에 대한 본문 매개 변수를 참조하세요.
  3. 종속성 제출 API에 형식이 지정된 종속성 목록을 제출합니다.

GitHub는 종속성 제출 API에 종속성을 제출하기 위한 고유한 GitHub 작업을 빌드하는 데 도움이 되는 TypeScript 라이브러리인 종속성 제출 도구 키트를 유지 관리합니다. 작업 작성에 대한 자세한 내용은 "작업 만들기"을 참조하세요.

SBOM(소프트웨어 자료 청구서 생성 및 제출)

GitHub Actions을(를) 사용하여 종속성 및 관련 정보의 공식적이고 컴퓨터에서 읽을 수 있는 인벤토리인 SBOM(소프트웨어 청구서)을 생성할 수 있습니다. 다음 작업은 리포지토리에 대한 SBOM을 생성하고 다른 애플리케이션에서 다운로드하고 사용할 수 있는 워크플로 아티팩트로 연결합니다. 워크플로 아티팩트 다운로드에 대한 자세한 내용은 "워크플로 아티팩트 다운로드"을 참조하세요.

작업세부 정보GitHub에 의해 유지 관리됨
SBOM-generator-action종속성 그래프의 정보를 사용하여 SPDX SBOM 생성
앵커 SBOM 작업Syft를 사용하여 지원되는 에코시스템을 사용하여 SPDX 2.2 호환 SBOM 만들기
Microsoft의 sbom-tool종속성을 검사하고 SPDX 호환 SBOM을 만듭니다.

그런 다음, 다음 작업 중 하나를 사용하여 종속성 제출 API에 SBOM을 업로드하고 제출하여 알려진 취약성이 있는 종속성에 대해 Dependabot alerts를 받을 수 있습니다. 두 테이블에 모두 표시되는 작업은 SBOM을 생성하고 제출하도록 구성할 수 있습니다.

작업세부 정보GitHub에 의해 유지 관리됨
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/"