| sitelink1 | |
|---|---|
| sitelink2 | |
| sitelink3 | |
| sitelink4 | |
| extra_vars5 | |
| extra_vars6 |
SBOM 을 적용하려는 소프트웨어 솔루션에 대한 정보
- 개발 언어는 c, java, javascript, object-c, swift
- 연동하려는 ci/cd 는 jenkins
- 소프트웨어 개발 life cycle 모든 단계(설계,개발,테스트,배포,유지보수)에서 sbom 이 적용되어야 함
[sbom 자체에는 영향도 없는 항목]
- 개발용 ide 는 visual studio, eclipse, vscode, xcode
- 솔루션이 구동되는 환경 : windows, linux, macOS, iOS, android, web browser
SBOM 적용을 위한 시스템 구축 계획
- 목표/범위 수립
- 시스템 구축 목표
- SPDX 형식의 SBOM 자동 생성
- 프로젝트 빌드 과정 중 SBOM(Software Bill of Materials)을 자동 생성
- 표준 포맷인 SPDX 출력에 초점을 맞춤
- CI/CD 파이프라인과의 통합
- Jenkins 기반의 CI/CD 파이프라인 내에서 자동으로 SBOM을 생성하고 저장
- 수동 개입 없이 실행 가능하도록 자동화
- 오픈소스 도구 기반의 실용적인 구현
- FOSSLight를 분석 도구로 채택하여 비용 없이 운영 가능
- 유지관리 용이하고 내부 적용 가능한 구조
- SPDX 형식의 SBOM 자동 생성
- 시스템 구축 범위
- 분석 도구 : FOSSLight Scanner (Defendency-check, Syft 는 추후 적용)
- 분석 대상 : Nexacro Project
- 결과 포맷 : SPDX (JSON 또는 YAML 형식)
- CI/CD 연동 : Jenkins 파이프라인 내에 SBOM 생성 Step 삽입
- 출력 저장 방식 : 지정 폴더 또는 아티팩트 저장소에 .spdx.json 저장
- SBOM 관리 : FOSSLight Hub
- 자동화 흐름
> Git pull
→ SBOM 분석(FOSSLight Scanner)
→ SPDX 결과 파일 저장 및 검사 (Verify)
→ 결과 파일 업로드(FOSSLight CLI)
→ SBOM 관리 서버(FOSSLight Hub)
- 요구 기술
- FOSSLight Scanner, CLI : Python (lv:low)
- FOSSLight Hub : java web application server 설치 및 운용 (lv:middle)
- OS : Windows, Ubuntu (lv:high)
- CI/CD : Jenkins (lv:super)
- 시스템 구축 목표
- 표준/포맷 결정
- SPDX (JSON 또는 YAML 형식)
- 생성 도구 설치
- OS : Windows 11 Pro + WSL2(Ubuntu)
- 2종의 OS 환경에 도구를 설치하고 운영하여 시스템 유연성을 확보
- Language
- Java 11 or higher
- Python 3.8
- VCS (형상 관리)
- Git : azure tfs project로 부터 checkout
- FOSSLight Scanner
- SBOM 추출
- WSL2(Ubuntu)에 설치하고 Git 으로 프로젝트 소스를 pull 하여 scan
- FOSSLight Hub
- SBOM 관리
- Windows 에 설치하고 내장된 WAS(Spring Boot)로 구동
- Database
- MariaDB (10.0 or higher) or MySql (5.6 or higher)
- Windows 에 설치하고 FOSSLight Hub에서 사용
- Jenkins
- CI/CD Pipeline
- Windows 에 설치하고 내장된 WAS(Jetty)로 구동
- OS : Windows 11 Pro + WSL2(Ubuntu)
- 저장소 구축
- Git Repository 설정
- Scaning 작업을 수행할 위치에 Repository 를 생성
- Git Repository 설정
- 보안 도구 연결
- Syft
- OWASP Dependency-Check
- CI/CD 연동
Jenkins 의 CI/CD 파이프라인 구축- Git Pull 실행 : 프로젝트 최신 업데이트
- FOSSLight Sanner 실행 : 오픈소스 컴플라이언스 스캔으로 SBOM 추출
- FOSSLight CLI 실행 : SBOM을 Hub 에 업로드
- OWASP Dependency-Check 실행 : 취약점 스캔으로 SBOM 추출
- FOSSLight CLI 실행 : SBOM을 Hub 에 업로드
- 테스트 및 검증
- SBOM 검증 (정합성 및 형식 검토)
- SPDX 필수 필드 (e.g., DocumentName, SPDXID, LicensesDeclared, PackageName) 누락 여부 확인
- 검증 도구
- online : https://tools.spdx.org/app/validate/
- download tools : https://github.com/spdx/tools-java 또는 https://github.com/spdx/tools-python
- 라이선스 검토 및 승인 여부 판단
- 할 일
- SBOM 내 각 컴포넌트의 DeclaredLicense 필드에 나열된 라이선스를 확인
- 해당 라이선스가 조직 정책상 허용, 조건부 허용, 금지 중 어느 쪽인지 매핑
- 도구/방법
- 내부 정책에 따라 허용 라이선스 목록(whitelist) 또는 금지 목록(blacklist)과 대조
- online : https://tools.spdx.org/app/check_license/
- 할 일
- 라이선스 조항 이행 확인 (Compliance)
- 할 일
- 복제본 포함 시 주의사항 (예: GPL, AGPL)
- NOTICE, LICENSE 파일 포함 여부
- 소스코드 공개 조건 준수 여부
- 도구
- FOSSLight에서 생성한 NOTICE 파일 활용
- 컴플라이언스 템플릿 (예: OSS 사용 보고서, OpenChain 문서화 지침)
- 법무팀/컴플라이언스 팀 협업
- 할 일
- 자동화/보고용 문서 생성
- 할 일
- 승인 여부 기록
- 법적 리스크 있는 라이선스 검출 시 리포트 작성
- 도구
- FOSSLight Report 파일 (.xlsx) 자체를 내부 양식으로 사용 가능
- 또는 SPDX→Excel 변환 후 커스텀 템플릿 적용
- 할 일
- SBOM 검증 (정합성 및 형식 검토)
- 정책 수립 및 교육
※ 참고사항
FOSSLight Tools 테스트 결과
- FOSSLight Scanner 는 모두 Python 3.8 로 실행 가능
- spdx format 으로 output file 을 지원하는 scanner 는 dependency 하나이지만
FOSSLight Scanner 는 source, dependency, binary 를 한번에 scan 하고 spdx format output file 로 저장 - work800 scan 은 총 6시간 이상이 소요 (-c 옵션을 12 설정시 7시간 30분, 15 설정시 5시간 10분, 20 설정시 6시간 30분)
- FOSSLight Dependency Scanner 을 위해서는 프로젝트 내의 각 패키지 매니저에(NPM, Pypi, Gradle, Maven, Pub, Android(gradle) 대해 Prerequisite 작업이 필요
- FOSSLight Binary Scanner 는 jar 인 경우만 OWASP Dependency-check-py 를 이용
- OWASP Dependency-Check 는 .NET 분석시 내부적으로 GrokAssembly.exe 사용이어서 Windows 환경이 필수이고 .dll, .exe 내부의 assembly metadata 추출 후 CPE 매핑
- OWASP Dependency-Check 는 파일스캔으로 의존성과 취약점을 분석하고 output 은 HTML, XML, JSON 형식의 보고서로써 어떤 파일에 취약점(CVE)이 있는지 보고해준다.
- Syft 로 패키지 메타데이터 분석 및 바이너리 분석하여 SBOM 문서를 생성한다.
- FOSSLight Source Scanner 에는 SCANOSS 오픈소스를 사용하는데 API 사용에 대한 한도 초과 오류가 발생하고 있음 (무료 사용시 호출 횟수 제한)
- SBOM 생성 또는 관리를 위한 메타 정보 파일 (sbom-info.yaml)을 FOSSlight 에서 참조 할 수 없다는 오류 발생
- 메타 정보 파일 (sbom-info.yaml) 내용 > 프로젝트 이름, 버전, 작성자 정보, 생성 시각, SPDX ID 또는 BOM metadata, 분석 옵션 등 - 스캔 결과 로그 내용에서의 ERROR 처리에 대해서도 별도의 공수가 필요
