使用OCI v1.1.0規(guī)范管理和關聯(lián)容器鏡像及其衍生制品
從2024年04月起,新創(chuàng)建的ACR企業(yè)版實例將支持OCI的Image和Distribution規(guī)范v1.1.0,包括對Reference Types的支持。這意味著您除了可以存儲和分發(fā)容器鏡像外,還能管理和分發(fā)非容器鏡像內(nèi)容的OCI制品,如鏡像簽名和軟件物料清單(SBOM)。這使您能夠像管理容器鏡像一樣,管理和分發(fā)這些OCI制品。本文將介紹如何在容器鏡像服務ACR中應用OCI v1.1.0新版本規(guī)范的相關功能。
前提條件
已在本地安裝ORAS客戶端。具體操作,請參見安裝ORAS。
已在本地安裝Docker。具體操作,請參見安裝Docker并使用(Linux)。
已配置專有網(wǎng)絡或公網(wǎng)的訪問控制,用于連接到企業(yè)版實例,本文以配置公網(wǎng)訪問控制為例。具體操作,請參見配置公網(wǎng)的訪問控制。
已獲取登錄企業(yè)版實例的密碼。若您忘記或遺失密碼,您可以通過配置訪問憑證的方式重置密碼。具體操作,請參見配置訪問憑證。
步驟一:使用Referrers API關聯(lián)鏡像的衍生制品
Referrers API是OCI v1.1.0新版本規(guī)范提出的能力,旨在將容器鏡像與其衍生制品,例如物料清單(SBOM)、簽名和漏洞掃描結(jié)果緊密關聯(lián)。它能夠幫助您有效追蹤特定軟件制品的來源,從而提升鏡像的安全性與合規(guī)性管理和審查的效率。下面以容器鏡像的物料清單(SBOM)生成與關聯(lián)為例,展示 Referrers API的相關作用。
如果您在環(huán)境中無法執(zhí)行docker sbom
命令,需要先安裝并配置sbom-cli-plugin組件。
如果您在環(huán)境中無法執(zhí)行docker sbom
命令時,可以按照如下方式安裝和配置sbom-cli-plugin組件。
安裝sbom-cli-plugin組件。
wget "https://github.com/docker/sbom-cli-plugin/releases/download/v0.6.1/sbom-cli-plugin_0.6.1_linux_amd64.tar.gz"
創(chuàng)建組件目錄。
mkdir -p /root/.docker/cli-plugins
解壓tar包到指定目錄中。
tar -zxvf sbom-cli-plugin_0.6.1_linux_amd64.tar.gz -C /root/.docker/cli-plugins
以下示例將展示如何使用Referrers API來關聯(lián)鏡像<企業(yè)版實例名稱>-registry.cn-hangzhou.cr.aliyuncs.com/library/golang:1.20
的物料清單(SBOM)。
指明企業(yè)版實例域名,并輸入您的用戶名和登錄密碼。
登錄成功之后會顯示
Login Succeeded
。docker login <企業(yè)版實例名稱>-registry.cn-hangzhou.cr.aliyuncs.com Username: ****@test.com Password: Login Succeeded
執(zhí)行以下命令,生成目標鏡像的物料清單(SBOM)數(shù)據(jù)。
docker sbom <企業(yè)版實例名稱>-registry.cn-hangzhou.cr.aliyuncs.com/library/golang:1.20 --format spdx-json -o sbom.jsom
預期輸出。
執(zhí)行以下命令,關聯(lián)目標鏡像物料清單(SBOM)數(shù)據(jù)。
oras attach --distribution-spec v1.1-referrers-api <企業(yè)版實例名稱>-registry.cn-hangzhou.cr.aliyuncs.com/library/golang:1.20 sbom.jsom --artifact-type example/sbom
預期輸出。
執(zhí)行以下命令,查看目標鏡像與物料清單(SBOM)關聯(lián)關系。
oras discover --distribution-spec v1.1-referrers-api <企業(yè)版實例名稱>-registry.cn-hangzhou.cr.aliyuncs.com/library/golang:1.20
預期輸出。
步驟二:跨實例分發(fā)鏡像及其關聯(lián)的衍生制品
ACR企業(yè)版實例支持通過ORAS等工具跨實例分發(fā)鏡像及其關聯(lián)的衍生制品。我們以拷貝容器鏡像及其軟件物料(SBOM)為例來展示這一功能。
將已關聯(lián)的物料清單(SBOM)中的 <企業(yè)版實例名稱>-registry.cn-hangzhou.cr.aliyuncs.com/library/golang:1.20
鏡像分發(fā)到<企業(yè)版實例名稱>-registry.cn-beijing.cr.aliyuncs.com
倉庫。您需要先登錄目標實例鏡像倉庫。
指明企業(yè)版實例域名,并輸入您的用戶名和登錄密碼。
登錄成功之后會顯示
Login Succeeded
docker login <企業(yè)版實例名稱>-registry.cn-beijing.cr.aliyuncs.com Username: ****@test.com Password: Login Succeeded
執(zhí)行以下命令,分發(fā)鏡像及其關聯(lián)的物料清單(SBOM)至目標實例鏡像倉庫。
$ oras cp -r --from-distribution-spec v1.1-referrers-api --to-distribution-spec v1.1-referrers-api <企業(yè)版實例名稱>-registry.cn-hangzhou.cr.aliyuncs.com/library/golang:1.20 <企業(yè)版實例名稱>-registry.cn-beijing.cr.aliyuncs.com/library/golang:1.20
預期輸出。
執(zhí)行以下命令,目標鏡像也有同樣的物料清單(SBOM)。
oras discover --distribution-spec v1.1-referrers-api <企業(yè)版實例名稱>-registry.cn-beijing.cr.aliyuncs.com/library/golang:1.20
預期輸出。