Docker之SBOM
導讀 | 這裡簡略的介紹了 SBOM,以及 Docker CLI 的試驗性子 – sbom,能夠透過該 生成 r 容器映象多種格局的 SBOM 資訊。 |
在上個月公佈的 Docker Desktop v4.7.0 中,介紹了一個新的 CLI 外掛-docker/sbom-cli-plugin,其為 Docker CLI 減少了一個子命令 – sbom,用於檢視 Docker 容器映象的軟體物料清單(SBOM)。
首先介紹下什麼是 SBOM(Software Bill of Materials),我們們稱之為軟體物料清單,是軟體供應鏈中的術語。軟體供應鏈是用於構建軟體應用程式(軟體產品)的元件、庫和工具的列表,而物料清單則宣告這些元件、庫的清單,相似於食品的配料清單。軟體物料清單能夠幫忙組織或者集體防止應用有安全漏洞的軟體。
留神: 從 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/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- docker 1.2 之docker基本用法Docker
- docker之docker-machine用法DockerMac
- Docker(五):Docker 三劍客之 Docker MachineDockerMac
- Docker(六):Docker 三劍客之 Docker SwarmDockerSwarm
- Docker(四):Docker 三劍客之 Docker ComposeDocker
- 為什麼要關注軟體材料清單(SBOM)
- Docker筆記之Docker初體驗Docker筆記
- Docker之HelloWorld篇Docker
- docker之containerDockerAI
- 快速上手之dockerDocker
- Docker之Docker Compose技術詳解。Docker
- Docker初探之Windows篇DockerWindows
- Docker筆記之DockerfileDocker筆記
- docker之Dockerfile實踐Docker
- docker network之 noneDockerNone
- Docker筆記五之Docker系統變數Docker筆記變數
- 理解Docker(8):Docker 儲存之卷(Volume)Docker
- 簡單、透明、安全、高度整合!龍蜥可信 SBOM 能力探索與實踐
- 土法搞docker系列之自制docker的graph driver vdiskDocker
- 畫江湖之 docker 篇 【docker 常規操作記錄】Docker
- 畫江湖之 docker 篇 [docker 常規操作記錄]Docker
- 容器技術|Docker三劍客之docker-swarmDockerSwarm
- 理解Docker(8):Docker 儲存之卷(Volume) (轉)Docker
- 【Docker】Docker三劍客實踐之部署叢集Docker
- 容器技術之Docker映象Docker
- Docker筆記之七:RegistryDocker筆記
- Docker 深入篇之 Build 原理DockerUI
- Docker之 資料持久化Docker持久化
- Docker 之 Nginx環境搭建DockerNginx
- Docker筆記二之容器Docker筆記
- Docker筆記一之映象Docker筆記
- docker學習之使用映象Docker
- docker拾遺-之再入坑Docker
- docker之Dockerfile指令介紹Docker
- docker之資料卷管理Docker
- Docker 映象構建之 DockerfileDocker
- Docker進階與實踐之四:Docker映象倉庫Docker
- 容器技術|Docker三劍客之docker-composeDocker