如果您有這樣的需求,可以直接跳到 安裝與操作方式 這一段看實作方法。
如果您想稍微了解一下SBOM的具體內容,可以繼續往下閱讀。
軟體物料清單 (Software Bill of Manual, SBOM)包含但不限於開源和現成軟體元件之清單 、相關軟體建置和安裝整合程序之說明。
這邊借用一下ChatGPT的回答
SBOM代表軟體元件清單(Software Bill of Materials),也稱為軟體物料清單(Software Bill of Materials),是一份清單,其中包含構成特定軟體的所有元件、第三方庫、框架和其他軟體組件的詳細資訊。SBOM是一個組成部分的清單,可以幫助企業瞭解其使用的軟體的全貌,以及該軟體的安全性、合規性和風險。
SBOM旨在提高軟體供應鏈的透明度,幫助企業在軟體開發和供應過程中更好地管理風險。SBOM還可以幫助企業識別和解決軟體中存在的漏洞和其他安全問題,以提高安全性。
最近,SBOM已經成為軟體供應鏈安全和管理的重要組件,因為許多企業越來越依賴第三方軟體元件和庫來構建其應用程序。此外,許多行業標準和規範,如美國國防工業基地(DIB)標準和歐盟開放軟體供應鏈安全(OSSC)計劃,已經開始要求企業提供SBOM。
在美國拜登總統發布的 這份行政命令 中,這一段提及
(vii) providing a purchaser a Software Bill of Materials (SBOM) for each product directly or by publishing it on a public website;
要求軟體開發者將軟體物料清單 (SBOM)直接給予購買者或在公開網站上公布出來。
當然這個行政命令是對於提供軟體給美國政府機關的承包商比較有效力,不過台灣幾乎是美國有什麼規範都會跟進,趁這機會準備起來不是壞事。
依照美國商務部和國家電信暨資訊管理局的公告, SBOM最少要有這些欄位,因還沒找到台灣的正式翻譯,故以下附上中英文對照
生成的 SBOM 會是一個 json 格式的檔案,符合 SPDX 的格式規範,這裡擷取其中一部分
上面那段 SBOM 內容,應該有看到像下面這樣的字
"licenseConcluded": "NOASSERTION",
"licenseDeclared": "NOASSERTION",
"copyrightText": "NOASSERTION",
依照 2022/08/23的官方Github討論,目前不支援自動擷取授權欄位,但相關功能未來有計畫要推出,可以期待看看
安裝檔有兩種方式可以下載
用瀏覽器直接下載微軟工具sbom執行檔 exe
利用 Powershell 指令,在預計要下載的位置執行以下語法
Invoke-WebRequest -Uri "https://github.com/microsoft/sbom-tool/releases/latest/download/sbom-tool-win-x64.exe" -OutFile "sbom-tool.exe"
sbom-tool generate -b <drop path> -bc <build components path> -pn <package name> -pv <package version> -ps <package supplier> -nsb <namespace uri base>
要注意 <build components path>
,這邊要填寫的是有 *.csproj
或 package.json
之類包含專案檔案資訊的,所以如果是零碎的檔案而非程式專案,沒辦法自動掃描生成
.\sbom-tool.exe generate -b C:\MyFolder\SBOM -bc C:\MySourceCode\RootPath -ps 供應商名稱 -pn 元件名稱 -pv 1.0 -nsb 文件前綴網址
C:\MyFolder\SBOM\_manifest\spdx_2.2
生成範例雖然前面貼過圖了,這邊再貼一次偏尾段的內容,如果使用上有問題也歡迎留言討論。
{
"name": "Microsoft.EntityFrameworkCore",
"SPDXID": "SPDXRef-Package-EE6D1A7DC4B44B14837A3E2A92944080E6197D3E7906EFD67F9FEEB4981C5DE3",
"downloadLocation": "NOASSERTION",
"filesAnalyzed": false,
"licenseConcluded": "NOASSERTION",
"licenseDeclared": "NOASSERTION",
"copyrightText": "NOASSERTION",
"versionInfo": "6.0.5",
"externalRefs": [
{
"referenceCategory": "PACKAGE-MANAGER",
"referenceType": "purl",
"referenceLocator": "pkg:nuget/Microsoft.EntityFrameworkCore@6.0.5"
}
],
"supplier": "NOASSERTION"
},
...
...
...
"spdxVersion": "SPDX-2.2",
"dataLicense": "CC0-1.0",
"SPDXID": "SPDXRef-DOCUMENT",
"name": "元件名稱 1.0",
"documentNamespace": "https://example.com/sbom/example/1.0/D1gZ5qfB7kyCfrFtI17Bog",
"creationInfo": {
"created": "2023-05-10T15:55:35Z",
"creators": [
"Organization: 供應商名稱",
"Tool: Microsoft.SBOMTool-1.1.0"
]
},
"documentDescribes": [
"SPDXRef-RootPackage"
]
單純只有一家的工具也不太好,我寫了另外一篇 使用 SPDX Software Bill of Materials (SBOM) Generator 產生 SBOM,也可以改用另一個試試看
產完後,只是 單純知道 用了哪些元件而已,但到底這些清單中的元件有沒有風險,還需要進一步的檢查,請見下一篇的
產完 SBOM 之後就沒事了? 用 OSV 開源漏洞資料庫查到底哪些元件有風險
資安