종속성 제출 API 정보
REST API를 사용하여 프로젝트에 대한 종속성을 제출할 수 있습니다. 이를 통해 소프트웨어가 컴파일되거나 빌드될 때 확인된 종속성 등의 종속성을 GitHub의 종속성 그래프 기능에 추가하여 프로젝트의 모든 종속성을 보다 완벽하게 파악할 수 있습니다.
종속성 그래프는 리포지토리의 매니페스트 또는 잠금 파일(예: JavaScript 프로젝트의 package-lock.json
파일)에서 식별되는 종속성 외에 API를 사용하여 제출하는 모든 종속성을 보여 줍니다. 종속성 그래프 보기에 대한 자세한 내용은 리포지토리의 종속성 탐색을(를) 참조하세요.
제출된 종속성은 알려진 취약성에 대해 Dependabot alerts 및 Dependabot security updates를 받게 됩니다. GitHub Advisory Database의 지원되는 에코시스템 중 하나에서 발생한 종속성에 대한 Dependabot alerts만 가져옵니다. 이러한 에코시스템에 대한 자세한 내용은 GitHub Advisory Database 정보을(를) 참조하세요. 종속성 제출 API을(를) 통해 제출된 전환 종속성의 경우 업데이트를 사용할 수 있으면 Dependabot에서 자동으로 끌어오기 요청을 열어 상위 종속성을 업데이트합니다.
제출된 종속성은 종속성 검토에 표시되지만, 조직의 종속성 인사이트에서는 사용할 수 없습니다.
Note
종속성 제출 API 및 종속성 검토 API는 함께 작동합니다. 즉, 종속성 검토 API에는 종속성 제출 API을(를) 통해 제출된 종속성이 포함됩니다.
종속성은 스냅샷 형식으로 종속성 제출 API에 제출됩니다. 스냅샷은 커밋 SHA 및 기타 메타데이터와 연결된 종속성 집합으로, 커밋에 대한 리포지토리의 현재 상태를 반영합니다. 스냅샷은 빌드 시 감지된 종속성 또는 소프트웨어 자료 청구서(SBOM)에서 생성할 수 있습니다. 이러한 사용 사례 중 하나를 지원하는 GitHub Actions이(가) 있습니다. 종속성 제출 API에 대한 자세한 내용은 종속성 제출에 대한 REST API 엔드포인트을(를) 참조하세요.
빌드 시 종속성 제출
GitHub Actions 워크플로에서 종속성 제출 API을(를) 사용하여 프로젝트를 빌드할 때 프로젝트에 대한 종속성을 제출할 수 있습니다.
미리 만들어진 작업 사용
종속성 제출 API을(를) 사용하는 가장 간단한 방법은 종속성 목록을 수집하고 필요한 스냅샷 형식으로 변환한 후 목록을 API에 제출하는 미리 만들어진 작업을 리포지토리에 추가하는 것입니다.
이러한 작업에 대한 자세한 내용은 종속성 그래프에서 지원되는 패키지 에코시스템을(를) 참조하세요
사용자 고유의 작업 만들기
또는 빌드 시 프로젝트에 대한 종속성을 제출하는 고유한 작업을 작성할 수 있습니다. 워크플로는 다음을 수행해야 합니다.
- 프로젝트에 대한 종속성 목록을 생성합니다.
- 종속성 목록을 종속성 제출 API에서 허용하는 스냅샷 형식으로 변환합니다. 형식에 대한 자세한 내용은 종속성 제출에 대한 REST API 엔드포인트의 "리포지토리 스냅샷 만들기" API 엔드포인트에 대한 본문 매개 변수를 참조하세요.
- 종속성 제출 API에 형식이 지정된 종속성 목록을 제출합니다.
GitHub는 종속성 제출 API에 종속성을 제출하기 위한 고유한 GitHub 작업을 빌드하는 데 도움이 되는 TypeScript 라이브러리인 종속성 제출 도구 키트를 유지 관리합니다. 작업 작성에 대한 자세한 내용은 자동화 공유을(를) 참조하세요.
소프트웨어 재료 청구서(SBOM) 생성 및 제출
SBOM은 프로젝트의 종속성 및 관련 정보(예: 버전, 패키지 식별자, 라이선스 및 저작권 정보)의 공식적이고 컴퓨터에서 읽을 수 있는 인벤토리입니다. SBOM은 다음을 통해 공급망 위험을 줄일 수 있습니다.
- 리포지토리에서 사용하는 종속성에 대한 투명성 제공
- 프로세스 초기에 취약성을 식별할 수 있도록 허용
- 코드베이스에 있을 수 있는 라이선스 규정 준수, 보안 또는 품질 문제에 대한 인사이트 제공
- 다양한 데이터 보호 표준을 더 잘 준수할 수 있도록 지원
소프트웨어 자료 청구서(SBOM) 생성
SBOM을 생성하려면 다음을 사용할 수 있습니다.
- GitHub UI. 종속성 그래프 정보를 사용하여 리포지토리에 대한 SBOM을 내보내는 방법에 대한 자세한 내용은 리포지토리에 대한 소프트웨어 자료 청구서 내보내기을(를) 참조하세요.
- REST API는 자세한 내용은 SBOM(소프트웨어 자료 청구서)에 대한 REST API 엔드포인트을(를) 참조하세요.
- GitHub Actions. 다음 작업은 리포지토리에 대한 SBOM을 생성하고 다른 애플리케이션에서 다운로드하고 사용할 수 있는 워크플로 아티팩트로 연결합니다. 워크플로 아티팩트 다운로드에 대한 자세한 내용은 워크플로 아티팩트 다운로드을(를) 참조하세요.
작업 | 세부 정보 |
---|---|
앵커 SBOM 작업 | Syft를 사용하여 지원되는 에코시스템으로 SPDX 2.2 호환 가능한 SBOM 만들기 |
Microsoft의 sbom-tool | 종속성을 검사하고 SPDX 호환 가능한 SBOM을 만듭니다 |
종속성 제출 API에 SBOM(소프트웨어 자료 청구서) 제출
알려진 취약점이 있는 종속성에 대해 Dependabot alerts을(를) 받으려면 SBOM을 업로드하여 종속성 제출 API에 제출하면 됩니다. 종속성 제출 API에 SBOM을 제출하려면 다음 표의 작업 중 하나를 사용할 수 있습니다.
Tip
SPDX 종속성 제출 작업 및 Anchore SBOM 작업을 사용하여 SBOM을 생성하고 종속성 제출 API에 제출할 수 있습니다.
작업 | 세부 정보 |
---|---|
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@v4
- 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@v4
with:
name: sbom
path: _manifest/spdx_2.2
- name: SBOM upload
uses: advanced-security/spdx-dependency-submission-action@5d6e7f8a9b0c1d2e3f4a5b6c7d8e9f0a1b2c3d4e
with:
filePath: "_manifest/spdx_2.2/"