Docker之SBOM

大雄45發表於2022-07-22
導讀 這裡簡略的介紹了 SBOM,以及 Docker CLI 的試驗性子  – sbom,能夠透過該 生成 r 容器映象多種格局的 SBOM 資訊。

Docker之SBOMDocker之SBOM

在上個月公佈的 Docker Desktop v4.7.0 中,介紹了一個新的 CLI 外掛-docker/sbom-cli-plugin,其為 Docker CLI 減少了一個子命令 – sbom,用於檢視 Docker 容器映象的軟體物料清單(SBOM)。

什麼是 SBOM?

首先介紹下什麼是 SBOM(Software Bill of Materials),我們們稱之為軟體物料清單,是軟體供應鏈中的術語。軟體供應鏈是用於構建軟體應用程式(軟體產品)的元件、庫和工具的列表,而物料清單則宣告這些元件、庫的清單,相似於食品的配料清單。軟體物料清單能夠幫忙組織或者集體防止應用有安全漏洞的軟體。

DOCKER SBOM 命令

留神: 從 Docker Desktop 4.7.0 版本開始到當初,docker sbom 命令還是實驗性的,該效能興許會在當前版本中刪除和更改,以後   的 Docker CLI 還未蘊含該子命令。

docker sbom 命令用於生產一個容器映象的軟體物料清單(SBOM)

? >$ docker sbom --help
Usage:  docker sbom [OPTIONS] COMMAND
View the packaged-based Software Bill Of Materials (SBOM) for an image.
EXPERIMENTAL: The flags and outputs of this command may change. Leave feedback on 
Examples:
docker sbom alpine:latest                                          a summary of discovered packages
docker sbom alpine:latest --format syft-json                       show all possible cataloging details
docker sbom alpine:latest --output sbom.txt                        write report output to a file
docker sbom alpine:latest --exclude /lib  --exclude '**/*.db'      ignore one or more paths/globs in the image
Options:
-D, --debug                 show debug logging
    --exclude stringArray   exclude paths from being scanned using a glob expression
    --format string         report output format, options=[syft-json cyclonedx-xml cyclonedx-json github-0-json spdx-tag-value spdx-json table text] (default "table")
    --layers string         [experimental] selection of layers to catalog, options=[squashed all] (default "squashed")
-o, --output string         file to write the default report output to (default is STDOUT)
    --platform string       an optional platform specifier for container image sources (e.g. 'linux/arm64', 'linux/arm64/v8', 'arm64', 'linux')
    --quiet                 suppress all non-report output
-v, --version               version for sbom
Commands:
version     Show Docker sbom version information
Run 'docker sbom COMMAND --help' for more information on a command.

從命令的幫忙資訊中能夠看到,除了間接生成表格模式的 SBOM 輸入外,還反對應用--format 指定多種型別的輸入格局。

我們們嘗試對映象 neo4j:4.4.5 生成 SBOM:

? >$ docker sbom neo4jh:4.4.5
Syft v0.43.0
✔ Loaded image
✔ Parsed image
✔ Cataloged packages      [385 packages]
NAME                                VERSION                                    TYPE
CodePointIM                         11.0.15                                    java-archive  
FastInfoset                         1.2.16                                     java-archive
FileChooserDemo                     11.0.15                                    java-archive
Font2DTest                          11.0.15                                    java-archive
HdrHistogram                        2.1.9                                      java-archive
J2Ddemo                             11.0.15                                    java-archive
Metalworks                          11.0.15                                    java-archive
...
libuuid1                            2.36.1-8+deb11u1                           deb
libxxhash0                          0.8.0-2                                    deb
libzstd1                            1.4.8+dfsg-2.1                             deb
listenablefuture                    9999.0-empty-to-avoid-conflict-with-guava  java-archive
log4j-api                           2.17.1                                     java-archive
log4j-core                          2.17.1                                     java-archive
login                               1:4.8.1-1                                  deb
...

下面的輸入表格之擷取了區域性,我們們能夠看到在清單列表中,除了零碎包(deb 型別)之外,還有 java 的軟體包,其中就蘊含了 log4j 的包及其版本資訊,從這些資訊中就能夠理解到容器映象是否蘊含了存在安全漏洞的依賴和軟體包,加強了應用軟體映象來部署利用的安全性。

下面的資訊中還看到了 Syft v0.43.0,這是因為以後的 SBOM CLI 外掛是應用 Anchore 的 Syft 我的專案來進行映象層的掃描,當前的版本興許會透過其餘辦法讀取 SBOM 資訊。另外,搜尋公眾號Linux就該這樣學後臺回覆“git書籍”,獲取一份驚喜禮包。

我們們再嘗試輸入一個映象的 SPDX 格局的 SBOM 檔案:

? >$ docker sbom --form spdx-json --output hugo-sbom.json mengzyou/hugo:latest
Syft v0.43.0
✔ Loaded image
✔ Parsed image
✔ Cataloged packages
? >$ cat hugo-sbom.json
{
 "SPDXID": "SPDXRef-DOCUMENT",
 "name": "mengzyou/hugo-latest",
 "spdxVersion": "SPDX-2.2",
 "creationInfo": {
  "created": "2022-05-09T10:55:06.6343529Z",
  "creators": [
   "Organization: Anchore, Inc",
   "Tool: syft-[not provided]"
  ],
  "licenseListVersion": "3.16"
 },
 "dataLicense": "CC0-1.0",
 "documentNamespace": "https://anchore.com/syft/image/mengzyou/hugo-latest-162a6a05-379c-49f0-a7f2-b4b738a63d1b",
 "packages": [
  {
   "SPDXID": "SPDXRef-ed18f2a986e77aab",
   "name": "alpine-baselayout",
   "licenseConcluded": "GPL-2.0-only",
   "description": "Alpine base dir structure and init scripts",
   "downloadLocation": "
...
  }
}

因為生成的檔案較長,下面只輸入了一小部分。補充 – SPDX (Software Package Data Exchage) 是一個形容 SBOM 資訊的凋謝規範,其中將蘊含軟體元件、許可版權資訊以及相干的平安參考。SPDX 透過為公司和社群提供共享重要資料的通用格局來縮小冗餘的工作,從而簡化和提供合規性。

總結

這裡簡略的介紹了 SBOM,以及 Docker CLI 的試驗性子命令 – sbom,能夠透過該命令生成 r 容器映象多種格局的 SBOM 資訊,讓開發人員和須要應用容器映象來部署服務的運維人員能夠容易的獲取到映象的 SBOM 資訊,從而理解到映象的平安資訊,以滿足應用的合規性。同時,也能夠思考將該工具退出到公司交付利用的 CI/CD 流水中,作為映象製品的安全檢查工作。

原文來自:


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69955379/viewspace-2907056/,如需轉載,請註明出處,否則將追究法律責任。

相關文章