從2024年04月起,新建立的ACR企業版執行個體將支援OCI的Image和Distribution規範v1.1.0,包括對Reference Types的支援。這意味著您除了可以儲存和分發容器鏡像外,還能管理和分發非容器鏡像內容的OCI製品,如鏡像簽名和軟體物料清單(SBOM)。這使您能夠像管理容器鏡像一樣,管理和分發這些OCI製品。本文將介紹如何在Container RegistryACR中應用OCI v1.1.0新版本規範的相關功能。
前提條件
已在本地安裝ORAS用戶端。具體操作,請參見安裝ORAS。
已在本地安裝Docker。具體操作,請參見安裝Docker並使用(Linux)。
已配置專用網路或公網的存取控制,用於串連到企業版執行個體,本文以配置公網存取控制為例。具體操作,請參見配置公網的存取控制。
已擷取登入企業版執行個體的密碼。若您忘記或遺失密碼,您可以通過配置訪問憑證的方式重設密碼。具體操作,請參見配置訪問憑證。
步驟一:使用Referrers API關聯鏡像的衍生製品
Referrers API是OCI v1.1.0新版本規範提出的能力,旨在將容器鏡像與其衍生製品,例如物料清單(SBOM)、簽名和漏洞掃描結果緊密關聯。它能夠協助您有效追蹤特定軟體製品的來源,從而提升鏡像的安全性與合規性管理和審查的效率。下面以容器鏡像的物料清單(SBOM)產生與關聯為例,展示 Referrers API的相關作用。
如果您在環境中無法執行docker sbom
命令,需要先安裝並配置sbom-cli-plugin組件。
以下樣本將展示如何使用Referrers API來關聯鏡像<企業版執行個體名稱>-registry.cn-hangzhou.cr.aliyuncs.com/library/golang:1.20
的物料清單(SBOM)。
指明企業版執行個體網域名稱,並輸入您的使用者名稱和登入密碼。
登入成功之後會顯示
Login Succeeded
。docker login <企業版執行個體名稱>-registry.cn-hangzhou.cr.aliyuncs.com Username: ****@test.com Password: Login Succeeded
執行以下命令,產生目標鏡像的物料清單(SBOM)資料。
docker sbom <企業版執行個體名稱>-registry.cn-hangzhou.cr.aliyuncs.com/library/golang:1.20 --format spdx-json -o sbom.jsom
預期輸出。
執行以下命令,關聯目標鏡像物料清單(SBOM)資料。
oras attach --distribution-spec v1.1-referrers-api <企業版執行個體名稱>-registry.cn-hangzhou.cr.aliyuncs.com/library/golang:1.20 sbom.jsom --artifact-type example/sbom
預期輸出。
執行以下命令,查看目標鏡像與物料清單(SBOM)關聯關係。
oras discover --distribution-spec v1.1-referrers-api <企業版執行個體名稱>-registry.cn-hangzhou.cr.aliyuncs.com/library/golang:1.20
預期輸出。
步驟二:跨執行個體分發鏡像及其關聯的衍生製品
ACR企業版執行個體支援通過ORAS等工具跨執行個體分發鏡像及其關聯的衍生製品。我們以拷貝容器鏡像及其軟體物料(SBOM)為例來展示這一功能。
將已關聯的物料清單(SBOM)中的 <企業版執行個體名稱>-registry.cn-hangzhou.cr.aliyuncs.com/library/golang:1.20
鏡像分發到<企業版執行個體名稱>-registry.cn-beijing.cr.aliyuncs.com
倉庫。您需要先登入目標執行個體鏡像倉庫。
指明企業版執行個體網域名稱,並輸入您的使用者名稱和登入密碼。
登入成功之後會顯示
Login Succeeded
docker login <企業版執行個體名稱>-registry.cn-beijing.cr.aliyuncs.com Username: ****@test.com Password: Login Succeeded
執行以下命令,分發鏡像及其關聯的物料清單(SBOM)至目標執行個體鏡像倉庫。
$ oras cp -r --from-distribution-spec v1.1-referrers-api --to-distribution-spec v1.1-referrers-api <企業版執行個體名稱>-registry.cn-hangzhou.cr.aliyuncs.com/library/golang:1.20 <企業版執行個體名稱>-registry.cn-beijing.cr.aliyuncs.com/library/golang:1.20
預期輸出。
執行以下命令,目標鏡像也有同樣的物料清單(SBOM)。
oras discover --distribution-spec v1.1-referrers-api <企業版執行個體名稱>-registry.cn-beijing.cr.aliyuncs.com/library/golang:1.20
預期輸出。