本文介绍如何在ACR中使用容器镜像的内容分析功能,以增强镜像安全性与合规性检测能力。
功能说明
该功能目前处于灰度发布中,仅支持美国(弗吉尼亚)、法兰克福、中国香港、新加坡、华东1(杭州)、华东2(上海)、华南1(深圳)和华北2(北京)地域,其他地域将在后续逐步开放。
镜像内容分析
镜像内容分析,用于审查和解析容器镜像的组成及特性。通过镜像内容分析,您可以检测安全漏洞、进行合规检查、管理和追踪软件版本。这不仅有助于优化组件的依赖关系,还能提升容器的安全性和性能。利用镜像内容分析,您可以确保容器化应用符合标准、降低风险,并实现高效管理和透明的软件供应链追踪。
步骤一:创建内容分析规则
您可以通过以下操作步骤,创建内容分析规则。
登录容器镜像服务控制台。
在顶部菜单栏,选择所需地域。
在左侧导航栏,选择实例列表。
在实例列表页面单击目标企业版实例。
在实例管理页面的左侧导航栏中选择 ,然后单击创建规则。根据以下参数创建规则。单击确定完成创建。
参数名称
描述
规则名称
自定义规则名称。
分析方式
默认为自动分析。
分析范围
选择内容分析范围:
命名空间:选择指定命名空间,默认分析范围是指定命名空间下所有仓库。
仓库 :选择指定的目标仓库。
步骤二:触发内容分析
在创建内容分析规则后,您可以对容器镜像进行内容分析。
自动分析:当您手动将镜像推送到指定分析范围内的镜像仓库时,系统会自动启动对新镜像的内容分析。对于存量镜像,需手动触发才能进行内容分析。
手动分析:您可以在指定分析范围内选择触发所有镜像的分析,或者对指定镜像进行分析。
分析范围内的所有镜像。
在实例管理页面的左侧导航栏中选择 。
在分析规则栏中,单击目标规则列中的立即扫描。
在任务列表栏中操作列下的查看任务,可以查看扫描信息。
分析范围内的指定镜像。
在镜像仓库单击目标镜像仓库。然后单击左侧导航栏的镜像版本。
在镜像版本页面,单击目标镜像版本操作列下的内容分析,在内容分析页面单击立即分析。
分析完成后,除了生成内容分析结果,还会生成以 _sbom
为尾缀的 SBOM OCI制品,以便于区分。您可以通过ORAS和Tag获取目标镜像的SBOM文件。
步骤三:查看分析结果
通过镜像的内容分析结果,您可以查看镜像版本中操作系统软件包的各个组件、其依赖项、版本信息、风险状态以及所有包含该操作系统软件包的镜像版本。
在镜像仓库单击目标镜像仓库。然后单击左侧导航栏的镜像版本。
在镜像版本页面,单击目标镜像版本操作列下的内容分析。
在内容分析页面查看镜像的内容分析结果。其中包括操作系统、操作系统软件包和语言软件包三种软件包类型及各自的版本号和风险状态。
说明由于操作系统支持的限制,部分操作系统可能无法扫描出相关信息。可提交工单支持。
在目标软件包操作列中,单击查看含该软件包的镜像。然后在弹出的侧边栏中,您可以查看分析范围内所有包含该操作系统软件包的镜像版本。
说明查询结果将显示满足以下要求并包含该软件包的镜像版本:
该镜像已进行过内容分析。
该镜像未进行过内容分析,但镜像层的digest与查询软件包所在层的digest一致(即该镜像层被多个镜像复用)。
此外,当前内容分析对于经过制品清理后的重复推送覆盖Tag镜像、多架构镜像也会查询出来,以repo@digest形式列出。
SBOM文件
SBOM(软件物料清单)是一份说明软件组成部分的清单,类似于制造业中的物料清单(BOM)。它描述了软件的各个组件、依赖项和版本信息,对于理解软件结构以及确保其安全性和合规性至关重要。通过SBOM文件,您可以了解软件的组成部分,识别和管理组件间的依赖关系,确保安全性与合规性,简化审计流程,提高应急响应能力,支持软件供应链透明性,并优化开发和维护流程。以下是SBOM文件示例。
{
"bomFormat": "CycloneDX", # SBOM格式类型。
"specVersion": "1.3",
"serialNumber": "urn:uuid:47c90508-80a5-4cec-91f3-9920d765e3b5",
"version": 1,
"components": [ # 软件组件的列表,每个组件包括类型、名称、版本、许可证信息和包URL。
{
"type": "library",
"name": "openssl",
"version": "1.1.1",
"licenses": [
{
"license": {
"id": "Apache-2.0"
}
}
],
"purl": "pkg:generic/openssl@1.1.1"
},
{
"type": "library",
"name": "curl",
"version": "7.76.1",
"licenses": [
{
"license": {
"id": "MIT"
}
}
],
"purl": "pkg:generic/curl@7.76.1"
}
],
"dependencies": [ # 组件间的依赖关系列表。
{
"ref": "pkg:generic/openssl@1.1.1",
"dependsOn": []
},
{
"ref": "pkg:generic/curl@7.76.1",
"dependsOn": [
"pkg:generic/openssl@1.1.1"
]
}
]
}
使用ORAS获取镜像的SBOM文件
前置条件
已在本地安装ORAS客户端,且与ACR网络互通。
使用的ACR企业版实例所属区域支持ACR SBOM内容分析功能,支持地域详情请参见功能说明。
通过ORAS和Tag获取
Tag固定的尾缀为_sbom
。
使用以下命令登录镜像仓库。
oras login --username=<镜像仓库登录名> <企业版实例名称>-registry.<企业版实例所在的地域>.cr.aliyuncs.com Password: Login Succeeded
获取SBOM文件。
oras pull <企业版实例名称>-registry.<企业版实例所在地域>.cr.aliyuncs.com/<命名空间的名称>/<镜像仓库的名称>:<镜像版本号>_sbom
使用ORAS获取
使用以下命令登录镜像仓库。
oras login --username=<镜像仓库登录名> <企业版实例名称>-registry.<企业版实例所在的地域>.cr.aliyuncs.com Password: Login Succeeded
获取镜像digest标识。
oras discover <企业版实例名称>-registry.<企业版实例所在的地域>.cr.aliyuncs.com/<命名空间的名称>/<镜像仓库的名称>:<镜像版本号>
预期输出如下。
<企业版实例名称>-registry.<企业版实例所在的地域>.cr.aliyuncs.com/<命名空间的名称>/<镜像仓库的名称>@sha256:1f5745d79a9f820f5bXXXXXXXXXX5f626eb49aff9 └── application/vnd.cyclonedx+json └── sha256:0f0206650a86a16XXXXXXXX3891b22a9d649501229f83
获取SBOM文件。
oras pull <企业版实例名称>-registry.<企业版实例所在的地域>.cr.aliyuncs.com/<命名空间的名称>/<镜像仓库的名称>@sha256:0f0206650a86a16XXXXXXXX3891b22a9d649501229f83