Rev's/스크랩

GitHub, "Export SBOM" 기능 발표

RevFactory 2023. 3. 31. 00:11
프로젝트에서 사용 중인 오픈소스를 식별하고, 취약성 평가 및 라이선스 정책이 일치하는지 확인하기 위해서는 SBOM (software bills of materials) 을 관리해야 합니다. 특히 미국에서는 사이버 보안 강화를 위하여 행정명령 14028 에 따라 SBOM 제공이 의무사항으로 제정되어 있습니다.
 

 

참고로, 카카오의 OLIVE Platform 도 이러한 SBOM을 관리하기 위한 서비스로 누구나 사용가능할 수 있도록 공개되어 있습니다.
 

1. GitHub "Export SBOM"

지난 3월 28일, GitHub은 블로그를 통해 이제 GitHub을 통해서도 SBOM 내보내기가 가능하다고 발표했습니다. 현재 Insights 탭 > Dependency Graph 에서 내보내기를 할 수 있습니다.

 

내보내기 기능으로 다운로드된 JSON 포멧의 파일은 SPDX 형식으로 아래와 같이 제공합니다.

 

 

GitHub SBOM 내보내기 기능은 Microsoft 의 GitHub Repository에 공개되어 있는 SBOM Tool 을 사용하고 있습니다. SBOM Tool은 CLI 를 제공하고 있어서 Windows, Linux, macOS 에서도 실행이 가능합니다.
이 오픈소스는 GitHub Actions 에 추가하여 CI/CD에 통합이 가능했었는데, 이번에 정식으로 GitHub Dependency Graph 기능으로 추가 되었습니다.
Javascript 기반 프로젝트 스캔 테스트 결과, NPM 모듈이 식별은 잘 되지만, 다운로드 URL, License, 공급자 등은 NOASSERTION 으로 대부분 표기되고 있어서 좀 더 개선은 필요해 보였습니다
 

2. Dependency submission API

이미 식별된 종속정 정보를 API 를 통해 GitHub에 제출하여, 프로젝트에 대한 종속성을 누락없이 관리할 있습니다. 제출된 종속성을 토대로 알려진 취약점에 대한 Dependabot 경고 및 Dependabot 보안 업데이트를 수신할 수 있습니다.
 

빌드 시, 종속성 제출

프로젝트가 빌드될 때 GitHub Actions 워크플로에서 종속성 제출 API를 사용하여 프로젝트에 대한 종속성을 제출할 수 있습니다. GitHub Actions 에서 제공중인 Action 을 CI/CD Flow 에 추가하 종속성을 추출하고 API 에 해당 목록을 제출할 수 있습니다.
Ecosystem과 GitHub Action
 

3. GitHub Action 에 연동

GitHub Action workflow 에 추가하여 여러 작업을 할 수도 있는데, 예를 들어 자동 생성된 SBOM 을 원하는 위치에 자동으로 업로드 시킬 수 있습니다.
 
(샘플) 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/"
 
 

참고 링크