[ad_1]
SBOM (Hóa đơn nguyên vật liệu phần mềm) giúp bạn hiểu chuỗi cung ứng phần mềm của mình bằng cách liệt kê các gói và nhà cung cấp mà mã của bạn dựa vào. Các SBOM đang nhanh chóng đạt được động lực như một cách để giúp cải thiện bảo mật trước các cuộc tấn công chuỗi cung ứng trong thế giới thực nổi bật.
Một nhà đề xuất chính của SBOM là Microsoft đã công bố phương pháp tiếp cận thế hệ của họ vào tháng 10 năm 2021. Đầu năm nay, công ty đã sử dụng công cụ nguồn mở để sản xuất SBOM trên Windows, macOS và Linux.
Trong bài viết này, bạn sẽ học cách bắt đầu sử dụng dự án để lập chỉ mục các phần phụ thuộc mã của bạn. Nó tạo ra các tài liệu tương thích với SPDX liệt kê các tệp, gói và các mối quan hệ trong dự án của bạn. SPDX (Trao đổi dữ liệu gói phần mềm) là tiêu chuẩn được ISO chấp nhận cho các SBOM để bạn có thể chuyển các báo cáo đã tạo trực tiếp vào các công cụ hệ sinh thái khác.
Microsoft ban đầu công bố dự án dưới tên Salus. Kể từ khi rút lui khỏi thuật ngữ này vì nó xung đột với dự án bảo mật mã Salus hiện có bắt nguồn từ Coinbase. Bộ tạo SBOM bây giờ được gọi đơn giản là sbom-tool
.
Bắt đầu
Bạn có thể tải xuống Công cụ SBOM từ kho lưu trữ GitHub của Microsoft. Các tệp nhị phân được biên dịch trước có sẵn trên trang phát hành. Chọn bản tải xuống phù hợp cho hệ thống của bạn, sau đó làm cho tệp nhị phân có thể thực thi và di chuyển nó đến một vị trí trong đường dẫn của bạn.
Đây là một ví dụ cho Linux:
$ wget https://github.com/microsoft/sbom-tool/releases/download/v<VERSION>/sbom-tool-linux-x64 $ chmod +x sbom-tool-linux-x64 $ mv sbom-tool-linux-x64 /usr/local/bin/sbom-tool
Bạn sẽ có thể chạy sbom-tool
để hiển thị thông tin trợ giúp trong cửa sổ dòng lệnh của bạn:
$ sbom-tool No action was specified The Sbom tool generates a SBOM for any build artifact. Usage - Microsoft.Sbom.Tool <action> -options
Tạo SBOM
Các SBOM mới được tạo bằng cách chạy công cụ generate
lệnh con. Một số đối số cần được cung cấp:
-b
(BuildDropPath
) – Thư mục để lưu tệp kê khai SPDX SBOM đã tạo.-bc
(BuildComponentPath
) – Thư mục sẽ được quét để tìm các phần phụ thuộc trong dự án của bạn.-nsb
(NamespaceUriBase
) – Đường dẫn cơ sở sẽ được sử dụng làm không gian tên của tệp kê khai SBOM. Đây phải là URL do tổ chức của bạn sở hữu, chẳng hạn nhưhttps://example.com/sbom
.
SBOM Tool cũng cần biết tên và phiên bản dự án của bạn. Nó thường có thể suy ra điều này từ các tệp đã có trong kho lưu trữ của bạn, chẳng hạn như package.json
name
và version
nhưng bạn có thể cần cung cấp thông tin theo cách thủ công hoặc ghi đè các giá trị mặc định trong một số trường hợp. Thêm pn
và pv
cờ để làm điều này:
-pn
(PackageName
) – Tên của dự án hoặc gói thầu của bạn.-pv
(PackageVersion
) – Phiên bản dự án mà bạn đang quét. Điều này phải khớp với phiên bản phát hành mà SBOM của bạn đi kèm để người dùng có thể tương quan danh sách phụ thuộc với các bản dựng cụ thể.
Đây là một ví dụ về cách tạo SBOM cho các tệp trong thư mục làm việc của bạn. SBOM sẽ được đặt vào sbom-output
thư mục con. Điều này cần phải tồn tại trước khi bạn chạy công cụ.
$ mkdir sbom-output $ sbom-tool generate -b sbom-output -bc . -pn example -pv 1.0 -nsb https://example.com/sbom
Tổng quan về kết quả quét sẽ được hiển thị trong thiết bị đầu cuối của bạn:
[INFO] Enumerated 3728 files and 607 directories in 00:00:00.5938034 [INFO] |Component Detector Id |Detection Time |# Components Found |# Explicitly Referenced | ... [INFO] |Npm |0.63 seconds |241 |0 | ... [INFO] |Total |0.64 seconds |241 |0 | [INFO] Detection time: 0.6374678 seconds.
Dự án này sử dụng npm để quản lý các phụ thuộc của nó. Công cụ đã phát hiện 241 gói bên trong thư mục làm việc của package.json
tập tin.
SBOM Tool hiện hỗ trợ 19 ngôn ngữ lập trình và định dạng gói khác nhau. Danh sách bao gồm các viên ngọc npm, NuGet, PyPi, Maven, Rust Crates và Ruby, cũng như các gói Linux có trong hình ảnh Docker. Tham chiếu đến kho lưu trữ GitHub từ xa cũng được hỗ trợ.
Nội dung SBOM
SBOM đã tạo sẽ được ghi vào _manifest/spdx_2.2/manifest.spdx.json
bên trong thư mục đầu ra bản dựng mà bạn đã chỉ định. SBOM là một tệp JSON khá dài dòng được sử dụng bởi phần mềm khác.
{ "các tập tin": []"gói": [ { "name": "color-convert", "SPDXID": "SPDXRef-Package-A72B0922E46D9828746F346D7FD11B7F81EDEB15B92BEEDAE087F5F7407FECDC", ... }
There are four main types of information within the report:
- The
files
section – This lists all the files containing source code you’ve written in your project. SBOM Tool will only populate this section when certain project types are scanned, such as C# solutions. - The
packages
section – A complete catalog of all the third-party dependencies present in your project, with references to their source package manager, the version used, and the type of license that applies. - The
relationships
section – This details all the relationships between the components listed in the SBOM. The most common relationship you’ll see isDEPENDS_ON
, which declares an item in thepackages
section as one of your project’s dependencies. Several other kinds of relationship also exist, such asCREATED_BY
,DEPENDENCY_OF
, andPATCH_FOR
. - Report metadata details – Fields such as
name
,documentNamespace
,spdxVersion
, andcreationInfo
identify the SBOM, the tool used to create it, and the SPDX manifest revision that applies.
Now you’ve got an SBOM you can start using it with other tools to conduct vulnerability scans and manage license compliance. You can consider distributing the SBOM with your software releases so consumers are able to inspect the contents of each new version. SBOMs are best generated as part of your build pipeline so they stay up to date.
Having access to an SBOM is invaluable when major new supply chain problems appear. Organizations using SBOMs were better placed to respond to Log4j, for example. They could inspect their reports to quickly find projects depending on the vulnerable library, instead of auditing package lists by hand.
Scanning Docker Images
SBOM Tool is capable of scanning existing Docker images as part of a report generation. To use this capability, you need to add the -di
flag and specify the image tag or digest that you want to scan. The rest of the arguments stay the same.
$ sbom-tool generate -di ubuntu:latest -b sbom-output -bc . -pn demo -pv 1.0 -nsb https://demo.com/demo
The Docker image will be analyzed to identify the packages it includes. They’ll be added to the SBOM report alongside the dependencies found in your source folder. You can scan multiple Docker images in a single operation by separating their tags or digest hashes with commas.
Summary
SBOM Tool is a young open-source SBOM generation utility developed at Microsoft. It supports several leading package formats and produces SPDX-compatible output. This means you can feed generated SBOMs straight into other tools like Grype to automatically find security vulnerabilities and outdated dependencies.
SBOMs are an effective way to increase awareness of software supply chains and uncover lurking issues. Producing and distributing an SBOM helps users understand what’s being silently included in their project. SBOM Tool is one way to generate industry-standard reports with a single command, making it easier to offer an SBOM with each of your releases.
[ad_2]