프로젝트에서 사용 중인 오픈소스를 식별하고, 취약성 평가 및 라이선스 정책이 일치하는지 확인하기 위해서는 SBOM (software bills of materials) 을 관리해야 합니다. 특히 미국에서는 사이버 보안 강화를 위하여 행정명령 14028 에 따라 SBOM 제공이 의무사항으로 제정되어 있습니다.
- 사이버 보안 행정 명령 및 소프트웨어 공급망 보안 (fossa)- 미국 상원의 Log4J 취약점 청문회 하이라이트 5가지 (fossa)
참고로, 카카오의 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- Go : Go Dependency Submission- Gradle : Gradle Dependency Submission- Mill : Mill Dependency Submission- Scala : Sbt Dependency Submission
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/"
참고 링크
'Rev's > 스크랩' 카테고리의 다른 글
우아콘 2022 추천 세션 (0) | 2022.10.23 |
---|---|
RedHat, 2021 Open Source Enterprise 현황 보고서 (0) | 2021.03.10 |
2020년 가장 인기 있는 Docker Image Top10 (Docker Hub) (0) | 2021.02.11 |