聯系電話:
+886 2 77182788
創提部落格
希望我們能與您分享和探討成長中的點點滴滴
如何生成完整的軟體物料清單(SBOM)?
分享到
提取供應商軟體物料清單(Software Bill of Materials, 簡稱:SBOM),合併並匯出符合 NTIA 標準的SBOM,以便您可以輕鬆滿足監管安全要求。
軟體物料清單 (SBOM) 的核心是一份全面的、機器可讀的清單,詳細列出了應用程式、系統或軟體堆疊中的軟體元件。SBOM 類似于傳統製造業的物料清單,它提供了軟體供應鏈的透明度和可視性,有助於實現穩健的軟體治理和風險管理實踐。
就像食物會列出其成分一樣,SBOM 也應該列出軟體中的所有協力廠商和專有組件。套用美國國家電信和信息管理局 (NTIA) 的文檔《構建軟體元件透明度:建立通用軟體物料清單 (SBOM)》中的一句話:
為了表示完整的物料清單,為消費者的軟體資產管理和漏洞管理提供足夠的透明度,SBOM 必須列舉供應商產品中包含的協力廠商軟體依賴項(開源和專有),以及運行時所需的已安裝依賴項。
例如,如果供應商下載管理器與供應商的應用程式一起安裝軟體驅動程式、庫或運行時依賴項,則該產品的完整 SBOM 將包括編譯二進位檔案中的協力廠商依賴項以及下載管理器安裝的軟體。
簡而言之,如果供應商產品在消費者系統上安裝了協力廠商依賴項,無論是作為產品的組成部分還是作為已安裝的啟用功能,都應在 SBOM 中列舉,以便為軟體資產管理和漏洞管理提供必要的透明度。
換句話說,當開發團隊選擇一個軟體元件納入其應用程式時,SBOM 就應該開始了。這些元件可以是公開可用的開源軟體 (OSS)、協力廠商商用現貨 (COTS) 庫、內部共用的通用代碼模組等等。每個包含的元件都是正在開發軟體的 SBOM 的一個元素。所有元素的集合構成了完整的 SBOM。
與最小許可權原則類似,您的 SBOM 應該包含能夠幫助接收者回答其所需問題的資訊,而非更多。這主要取決於您的 SBOM 的目標受眾,但也取決於接收者的監管(政府或行業)要求。
作為基礎,您的 SBOM 應包含 NTIA 定義的 SBOM 的最少要素。您還應考慮法規和行業要求,例如 FDA 要求添加其它要素,包括商業元件的支援級別、支援結束日期和已知的安全性漏洞。
再次強調,請再次關注結果。您或您的客戶(任何需要使用和執行您的 SBOM 的人)需要遵守哪些政府或行業法規?
假設您在 SaaS 和本地部署模式下提供相同的應用程式。核心應用程式、協力廠商元件以及支援 SaaS 環境的儀錶(備份、可觀察性、性能管理)之間有哪些區別?如果您只生成一個 SBOM,那麼第二類中的資訊將與本地部署模式下運行的應用程式無關。
這是 SBOM 製作中比較棘手的環節之一。在選擇要放入 SBOM 的組件時,務必考慮其目標物件。在這種情況下,您同時生產 SaaS 和本地版本的軟體——內部團隊的 SBOM 和客戶的 SBOM 怎麼會有所不同呢?
SaaS 應用程式的供應鏈涵蓋整個堆疊,而不僅僅是本地版本所需的應用程式本身。在這種情況下,您最終可能會生成兩個 SBOM:
1、一份是 On-Prem 版本的 SBOM,在客戶接管的安裝套裝程式被提交後生成。此 SBOM 僅包含安裝套裝程式中的內容——On-Prem 應用程式及其依賴項。
2、第二個 SBOM 適用於任何針對候選發佈版本、標籤或分支的構建。它是第一個 SBOM 的超集合,並添加了支援 SaaS 版本的附加組件。
為什麼要生成兩個 SBOM?不妨這樣想:您可以將 1 號 SBOM 用於面向客戶的工件,將 2 號 SBOM 用於推動安全性和 SOC-2 合規性。此方法可讓開發團隊和安全團隊全面瞭解風險,簡化客戶安全審查,並説明確定持續安全改進的優先順序。
生成完整的軟體物料清單 (SBOM) 並非難事。FossID工具可幫助審計人員生成 SPDX、 CycloneDX和 SPDX Lite 格式的 SBOM,其中詳細列出所掃描應用程式中的協力廠商專有元件、商業元件和開源元件。
1. 攝取 SBOM
第一步是準備要掃描的代碼庫。SBOM 中最終包含哪些資訊很大程度上取決於您的目標受眾——您的 SBOM 面向外部受眾還是內部受眾?您是為本地部署的軟體還是同一軟體的 SaaS 版本生成 SBOM?
2. 掃描並編碼
FossID Workbench中,首先創建一個項目,然後為該專案創建一個掃描。根據您的應用程式存儲庫結構,專案通常代表單個元件、服務或整個應用程式,而掃描則代表分支或發佈版本。
3. 識別開源組件
在此步驟中,您將代碼庫中的託管和非託管開源元件添加到軟體物料清單中。掃描完成後,您將檢查FossID在您的代碼庫中找到的與FossID知識庫中收集的開源元件的匹配情況。
4. 識別專有和商業組件
一旦識別出所有開源元件,請查看“無匹配”選項卡中的檔,以與開源元件相同的方式識別任何商業或專有組件。
5. 生成 SBOM 報告
識別所有元件後,請查看“已識別”選項卡以查看組成 SBOM 的元件清單,並確認您已準備好匯出 SBOM。
6. 微調元件和許可證資料
根據接收 SBOM 的受眾的要求,您可以選擇包含或省略有關您的元件及其許可證的某些資訊。
7. 逐步掃描最新的 SBOM
擁有第一個 SBOM 後,您可能需要持續生成同一代碼庫的 SBOM。通常,一個 SBOM 與單個軟體版本相關聯,並且每個新發佈的代碼版本都需要一個新的 SBOM。
DevOps 團隊可以通過自動化交付流水線中的第 2 步,幫助審計人員始終掌握代碼的最新狀態。通常,重新掃描的頻率取決於您的軟體是分版本發佈還是持續發佈。
鎖定軟體的 SBOM 後,您現在可以整合式軟體供應商提供的 SBOM,以生成合併的 SBOM。SBOM 可以導入 Workbench。
有效實施 SBOM 可能頗具挑戰性,但巧妙運用 SBOM 可以加速風險管理工作流程,而非減慢其速度。最終,SBOM 是一款可以幫助您改善安全態勢、提高開發和發佈速度,並簡化合規流程和客戶安全審查的工具。
對於任何希望實現DevSecOps並確保其軟體供應鏈彈性的團隊來說,這絕非易事。但FossID可以憑藉其技術、專業知識以及經驗豐富的經驗,為您提供幫助。
歡迎聯繫我們瞭解更多資料或申請試用