SBOM 생성을 자동화하는 방법

소프트웨어 BOM은 더 이상 조직에 "있으면 좋은" 문서가 아닙니다. 이제는 다양한 이유로 "필수"가 되었습니다. 연방 규정에 따라 소프트웨어 구성 요소를 의무적으로 공개해야 한다는 사실 외에도 소프트웨어 회사는 이제 애플리케이션에 사용되는 모든 오픈 소스 및 상업적 종속성을 나열하는 것이 유익한 사이버 보안 관행이라는 것을 깨달았습니다.

흥미롭게도 SBOM의 필요성을 인식함에도 불구하고 이를 만드는 것은 여전히 ​​상당히 어려울 수 있습니다. 그 이유는 제품의 소프트웨어 BOM을 작성하는 프로세스가 복잡하고 지루하며 시간이 많이 걸릴 수 있기 때문입니다. 또한 규제 당국은 제품의 모든 반복에 대해 정확하고 정확한 SBOM을 생성할 것을 권장하므로 매번 수동으로 구현하는 것은 완전히 비현실적이지는 않더라도 리소스 집약적입니다. 

포괄적인 SBOM을 구현하는 경우 자동화 경로를 따르는 것이 항상 권장됩니다. 모든 소프트웨어는 자체 종속성을 가질 가능성이 높은 여러 종속성으로 구성된 복잡한 패키지입니다. 이는 가장 단순한 소프트웨어라도 수백 또는 수천 개의 종속성을 가질 수 있음을 의미합니다. 이 모든 것을 컴파일하고 수동으로 정리하려면 많은 작업이 필요합니다. 이 문서에서는 SBOM을 구현하는 데 자동화가 필요한 이유와 SBOM을 수동으로 생성할 때 발생하는 스트레스를 완화하기 위해 자동화를 구현하는 방법을 설명합니다. 

SBOM 프로세스 자동화가 중요한 이유

소프트웨어 BOM은 단순히 소프트웨어 제품의 구성 요소 목록입니다(식용 제품의 구성 요소 목록과 유사). 일반적으로 소프트웨어 BOM을 생성하는 데 필요한 것은 이러한 구성 요소를 나열하는 스프레드시트뿐입니다. 그러나 이는 거의 실용적이지 않은 지나치게 단순화된 것입니다. SBOM은 정확한 필수 정보 세트가 포함된 전체 목록입니다. 이 목록을 수동으로 처리하는 것은 확실히 시간이 많이 걸리고 복잡합니다.

수동 SBOM으로는 간단히 해결할 수 없으므로 SBOM을 구현하고 수집하는 데 자동화가 필수적입니다. 수동 SBOM 구현의 어려움 외에도 규정 준수 문제는 말할 것도 없고 SBOM을 수동으로 생성하는 데 따른 위험도 있습니다. 다음은 포괄적인 소프트웨어 목록을 수집 및 컴파일하고 이를 사람이 읽을 수 있고 쿼리하기 쉬운 저장소에 저장하는 자동화된 시스템에서 SBOM을 가장 잘 생성하는 몇 가지 이유입니다.

사이버 공급망 위협

포괄적인 SBOM을 생성하는 주요 목표는 소프트웨어 구성 요소를 더 잘 이해하고 가능한 취약점을 분석하는 것입니다. 이는 모든 소프트웨어 제품에 대한 위협을 완화하기 위한 중요한 사이버 보안 조치가 되었습니다. 자동화된 SBOM은 이 작업을 보다 원활하게 수행합니다. 자동화된 소프트웨어 자재 명세서는 암호화 서명 및 자동화된 구성 요소 확인 덕분에 더 안전할 뿐만 아니라 자동화를 통해 소프트웨어 반복의 통합 및 배포 파이프라인 전체에서 구성 요소가 지속적으로 스캔되도록 보장합니다.

시간 절약

SBOM 구현을 자동화한다는 것은 소프트웨어 자재 명세서를 생성하기 위해 기계 속도로 작동하는 고급 도구를 사용한다는 의미입니다. 이렇게 하면 여러 가지 방법으로 시간이 절약됩니다. 첫째, 이러한 방식으로 SBOM을 생성하는 것은 개별 구성 요소를 수동으로 식별하여 스프레드시트에 포함시키는 것보다 빠릅니다.

SBOM을 자동화하면 취약점을 더 쉽고 빠르게 감지할 수 있습니다. 수동으로 컴파일된 SBOM을 사용하면 취약점의 가능한 위치를 식별하는 것은 매우 긴 프로세스입니다.

SBOM을 사용하면 업데이트도 더 빨라집니다. 자동화된 시스템은 새로 업데이트된 종속성을 기반으로 취약점을 식별하기 위해 SBOM을 자주 검사합니다. 이렇게 하면 SBOM을 생성하거나 수동으로 쿼리하는 데 시간을 낭비하는 대신 위험을 더 빠르게 완화하고 다른 중요한 작업에 시간과 리소스를 투자할 수 있습니다.

NIST 및 연방 요구 사항

SBOM 자동화는 이점 외에도 규제 측면에서도 중요합니다. 2014년 사이버 공급망 관리 및 투명성 법률과 같은 SBOM에 대한 연방 요구 사항에서는 SBOM을 생성하는 데 자동 솔루션과 도구를 사용해야 한다고 규정하고 있습니다.

마찬가지로 2021년 XNUMX월 NTIA(National Telecommunication and Information Administration)는 모든 SBOM에 포함되어야 하는 최소 요소를 자세히 설명하는 연방 승인 지침을 발표했습니다. 이 문서에는 자동화 지원이 나열되어 있습니다. 모든 SBOM의 핵심 요소 중 하나입니다.

NTIA에 따르면 소프트웨어 BOM은 사람과 기계가 읽을 수 있어야 하며 자동 생성이 가능해야 합니다. 자동화된 SBOM을 구현하면 문서에 포함된 데이터를 더 쉽게 추적할 수 있습니다. 

스프레드시트는 비효율적이고 오류가 발생하기 쉽습니다.

앞서 언급했듯이 모든 소프트웨어 패키지에는 수백 가지 종속성이 있습니다. 이는 일반적인 소프트웨어 BOM에서 다루어야 할 수천 개의 데이터 포인트가 있음을 의미합니다. 스프레드시트는 이러한 양의 데이터를 관리하기에는 부족합니다. 이러한 모든 데이터 포인트를 수동으로 입력하면 제때에 발견하지 못할 경우 심각한 결과를 초래할 수 있는 인적 오류가 발생할 수 있습니다. 대신 자동화된 시스템을 선택하면 정확하고 포괄적인 SBOM을 생성할 가능성이 더 높습니다.

일관성

SBOM 생성 프로세스 자동화의 주요 이점 중 하나는 소프트웨어 제품의 다양한 반복에 대한 CI/CD 파이프라인 전체에서 일관성을 유지하는 데 도움이 된다는 것입니다. 여기에는 제품을 제작하는 동안은 물론 출시 후에도 제품에 적용된 모든 변경 사항이 포함됩니다.

SBOM은 정적이 아닙니다. 제품이 발전함에 따라 추가된 모든 새로운 종속성을 포착하기 위해 소프트웨어 BOM이 개정됩니다. 이러한 변경 사항은 내부 및 소프트웨어 공급망 전체의 모든 사용자 및 기타 이해관계자에게 전달되어야 합니다. 모든 이해관계자가 최신 버전의 SBOM은 물론 이전 버전의 소프트웨어에도 액세스할 수 있는 것이 중요합니다.

수동으로 준비된 SBOM을 사용하면 일관성과 버전 제어를 유지하는 것이 어렵고 이로 인해 충돌 및 기타 문제가 발생할 수 있습니다. 자동화된 SBOM을 사용하면 변경 사항이 일관되게 유지되며 이러한 변경 사항이 언제, 어떻게 적용되었는지 더 쉽게 확인할 수 있습니다. 이는 수동 시스템으로는 달성하기 어렵습니다.

소프트웨어 BOM을 자동화하는 방법

SBOM에 대한 NTIA의 최소 요구 사항과 같은 규제 표준은 소프트웨어 BOM의 특정 형식을 규정합니다. 이러한 표준에는 SPDX(Software Package Data Exchange) 및 CycloneDX가 포함됩니다. 소프트웨어 보안 팀은 이러한 표준의 특성 자체가 이미 SBOM이 자동화되어야 한다는 것을 의미한다는 것을 알아야 합니다.

따라서 모든 소프트웨어 보안 팀은 SBOM을 생성하기 위해 개발 파이프라인 내의 전략적 지점에서 실행될 자동화된 단계를 추가하여 SBOM의 생성 및 사용을 보장해야 합니다. 이는 빌드가 완료된 후 소프트웨어 구성 요소를 조사하기 위한 오픈 소스 도구일 수도 있고 소프트웨어의 지속적인 개발 파이프라인 내에 통합된 SCA 도구일 수도 있습니다. 소프트웨어 BOM을 자동화하는 다양한 방법이 아래에 강조되어 있습니다.

오픈 소스 도구 사용

소프트웨어 BOM을 생성하는 가장 저렴한 방법 중 하나는 오픈 소스 도구를 사용하는 것입니다. 실질적으로 무료이지만 기본적인 기능만 제공합니다. SBOM 구현 프로세스를 자동화하는 여러 오픈 소스 도구가 있습니다. 그러나 대부분의 이러한 도구로 생성된 보고서는 두 가지 형식으로만 생성됩니다. CycloneDX 및 SPDX.

오픈 소스 SBOM 자동화 도구의 좋은 예는 다음과 같습니다. Microsoft의 SBOM 생성기. 이 범용 빌드 시간 생성기는 기업이 소프트웨어 패키지에 대한 SBOM을 생성하는 데 도움을 주기 위해 제작되었습니다. 이 도구는 크로스 플랫폼 지원을 제공하고 표준 SPDX(Software Package Data Exchange) 형식으로 SBOM을 생성합니다.

Microsoft의 SBOM 생성기는 NPM, PyPI, Maven, Rust Crates, Ruby Gems, Linux 및 NuGet 프레임워크로 구축된 소프트웨어 패키지에 통합되어 종속성 및 구성 요소 목록을 생성할 수 있습니다. GitHub 공개 리포지토리와 통합될 수도 있습니다.

이 도구는 SBOM 최소 요구 사항에 지정된 대로 SBOM 문서에 대한 일반 정보를 출력합니다. 또한 모든 파일과 패키지 간의 관계를 나열합니다.

플러그인 도구 사용

SBOM을 자동 생성하는 또 다른 접근 방식은 지속적인 통합 및 지속적인 배포 파이프라인(DevOps 파이프라인) 내에서 수행하는 것입니다. 워크플로의 빌드 단계 내에 통합되는 Maven 플러그인을 사용하여 이 작업을 수행할 수 있습니다. 이 접근 방식은 파이프라인 내에서 소프트웨어 BOM 생성 프로세스를 자동화하는 확장 가능하고 편리한 방법입니다.

프로젝트의 빌드 환경 내에서 수행하므로 이 작업이 훨씬 더 쉽다는 것을 알게 될 것입니다. SBOM을 자동 생성하려면 몇 가지 인수만 전달하면 됩니다. Maven 플러그인의 경우 SBOM은 Cyclone DX 형식으로 생성됩니다.

Maven 플러그인은 프로젝트 내의 모든 종속성을 자세히 설명하는 포괄적인 SBOM을 생성할 수 있습니다. 이렇게 하려면 "mvn verify" 명령을 실행하여 SBOM 파일을 생성하기 전에 pom.xml 파일을 구성하는 것부터 시작해야 합니다. bom.json 파일은 SBOM 파일보다 먼저 생성됩니다.

Maven 플러그인에는 종속성에 대해 생성된 SBOM 파일을 감사하는 내장 SCA 도구가 함께 제공됩니다. 파일이 감사되면 SCA 도구를 두 번째로 실행하여 소프트웨어 BOM을 다시 생성할 수 있습니다.

이러한 플러그인 도구의 한 예는 다음과 같습니다. 스크라이브 플랫폼, 이를 통해 소프트웨어 제작자는 SBOM을 자동으로 생성할 수 있습니다. 이는 SBOM 생성을 넘어 사용자가 SBOM을 관리 및 공유하고, 무결성을 검증하고, 컨테이너, 종속성 및 파이프라인의 취약성을 추적하는 데 도움이 됩니다. 다음은 SBOM 생성 자동화를 위해 Scribe가 작동하는 방식에 대한 간단한 개요입니다.

  • 1 단계 : Scribe Hub에 등록 및 로그인(무료). 사용자는 이 웹 인터페이스를 사용하여 프로젝트를 등록하고 설정합니다. MAC 및 Linux 장치에서 실행되는 별도의 증거 수집기가 SBOM 자체를 생성합니다.
  • 2단계: Scribe를 지속적인 통합 파이프라인과 통합합니다. Scribe Hub의 코드 조각을 연속 통합 파이프라인 및/또는 최종 빌드 이미지에 추가하면 이 작업이 완료됩니다.
  • 3단계: 소프트웨어 BOM을 생성하고 내보냅니다. 소프트웨어 BOM은 Scribe gensbom CLI 도구를 사용하여 생성됩니다. 생성된 SBOM은 CycloneDX JSON 형식으로 내보낼 수 있습니다.

구성 분석(SCA) 도구 사용

소프트웨어 제품에 대한 SBOM을 자동으로 생성하는 세 번째 접근 방식은 타사 소프트웨어 구성 분석 도구를 사용하는 것입니다. SCA 도구는 제품을 분석하여 소프트웨어 내의 타사 구성 요소와 라이선스를 식별합니다. 이 도구는 코드의 적법성과 라이선스 요구 사항 준수 여부를 평가합니다.

SCA는 소프트웨어의 소스 코드, 바이너리 파일, 컨테이너 이미지 및 매니페스트 파일을 검사하여 구성을 결정하고 소프트웨어에 포함된 모든 오픈 소스 구성 요소를 나열합니다. SBOM의 일부로 SCA는 다양한 데이터베이스에 대해 이러한 구성 요소를 실행하여 보안 정보, 라이센스 및 알려진 취약점을 추출합니다.

소프트웨어 구성 분석 도구는 SBOM 생성 프로세스를 자동화하고 속도를 높입니다. 이 도구는 제품에 대한 소프트웨어 BOM을 작성하기 위해 짧은 시간 내에 수천 개의 데이터 포인트를 스캔하도록 설계되었습니다. SCA 도구는 소프트웨어 패키지의 구성 요소와 이러한 구성 요소의 출처에 대한 완전한 감독을 제공하여 DevOps 파이프라인을 보호하는 데 도움이 됩니다. 

결론

일부 회사에서는 규제 요구 사항에 따라 SBOM이 의무화되었기 때문에 SBOM만 생성하지만, 소프트웨어 공급망 위협을 완화하는 데 있어 이러한 관행은 필수적인 것으로 입증되었습니다. 프로세스 자동화는 SBOM을 수동으로 컴파일하는 지루하고 시간 소모적인 작업을 줄이는 데 도움이 되므로 더욱 중요합니다. 이 기사에서 다루는 각 기술에서 강조된 것처럼 SBOM 자동화는 SBOM 생성 프로세스 속도를 높이고 더 정확하고 안정적으로 만들 수 있습니다. Scribe와 같은 플러그인 도구를 사용하면 소프트웨어 개발 파이프라인 내에서 바로 SBOM 생성을 자동화할 수 있습니다. 블로그와 기타 리소스를 확인하여 Scribe가 SBOM 생성을 자동화하는 방법과 이를 활용하는 방법을 알아보세요.