从2024年04月起,新创建的ACR企业版实例将支持OCI的Image和Distribution规范v1.1.0,包括对Reference Types的支持。这意味着您除了可以存储和分发容器镜像外,还能管理和分发非容器镜像内容的OCI制品,如镜像签名和软件物料清单(SBOM)。这使您能够像管理容器镜像一样,管理和分发这些OCI制品。本文将介绍如何在容器镜像服务ACR中应用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
预期输出。