你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn。
本文介绍如何安装、启用和配置连续修补。 启用连续修补功能后,容器注册表将自动检测和修复容器映像的操作系统级别漏洞。
先决条件
- 可以使用 Azure Cloud Shell 或 Azure CLI 的本地安装,最低版本为 2.15.0 或更高版本。
- 已有一个具有 Azure 容器注册表(ACR)的现有资源组。
- 你有一个已启用 ACR 任务的 Azure 容器注册表(ACR 免费层中不支持 ACR 任务)。
安装持续修补工作流
运行以下命令以安装 CLI 扩展:
az extension add -n acrcssc
启用持续补丁工作流
- 使用 az login 登录到 Azure CLI。
az login
- 登录到 ACR。
az acr login -n <myRegistry>
- 运行以下命令以创建一个名为
continuouspatching.json
,其中包含连续修补 JSON 的文件。 JSON 文件名很灵活。
cat <<EOF > continuouspatching.json
{
"version": "v1",
"tag-convention" : "<incremental|floating>",
"repositories": [{
"repository": "<Repository Name>",
"tags": ["<comma-separated-tags>"],
"enabled": <true|false>
}]
}
EOF
架构以数组格式引入特定存储库和标记。 此处定义了每个变量:
version
允许 ACR 团队跟踪你正在使用的架构版本。 除非指示不要更改此变量。tag-convention
是可选字段。 允许的值是“增量”或“浮动”-请参阅 连续修补的关键概念 ,了解详细信息。repositories
是一个数组,其中包含详细的存储库和标记信息repository
引用存储库名称tags
是用逗号分隔的标记数组。 通配符*
可用于表示该存储库中的所有标记。enabled
是一个布尔值,该值为 true 或 false,用于确定是否启用指定的存储库。
以下详细介绍了一个示例配置,其中客户希望修补存储库python
中的所有标签(使用 * 符号),以及专门修补存储库jammy-20240111
中的jammy-20240125
和ubuntu
标签。
JSON 示例:
{
"version": "v1",
"tag-convention" : "incremental",
"repositories": [{
"repository": "python",
"tags": ["*"],
"enabled": true
},
{
"repository": "ubuntu",
"tags": ["jammy-20240111", "jammy-20240125"],
"enabled": true,
}]
}
- 创建配置文件后,建议执行空运行,以验证 JSON 条件是否选择了预期的构件。 干运行需要一个名为
schedule
的参数,该参数指定您的连续修补周期的运行频率。 计划标志以天为单位,最小值为 1 天,最大值为 30 天。 例如,如果希望每天修补映像,则可以将计划指定为1d
或 1 天。 如果你希望每周修补(每周一次),则应该将计划填写为7d
,即 7 天。
命令架构:
az acr supply-chain workflow create -r <registryname> -g <resourcegroupname> -t continuouspatchv1 --config <JSONfilepath> --schedule <number of days> --dry-run
示例命令:
az acr supply-chain workflow create -r myRegistry -g myResourceGroup -t continuouspatchv1 --config ./continuouspatching.json --schedule 1d --dry-run
该 --dry-run
标志通过 JSON 文件配置输出所有指定项目。 客户可以验证是否选择了正确的工件。 使用示例 ubuntu 配置时,应将以下结果显示为输出。
Ubuntu: jammy-20240111
Ubuntu: jammy-20240125
查看所有必需/可选标志的帮助命令:
az acr supply-chain workflow create --help
- 一旦对试运行结果感到满意,请再次运行
create
命令,而无需标记--dry-run
即可正式创建连续修补工作流。
注释
参数 --schedule
遵循从月份的第 1 天开始的固定日乘数。 这意味着:
- 如果你在 3 号指定并运行
--schedule 7d
,则下次计划运行的时间将是 7 号,因为 7 是从本月 1 号开始数起,3 号之后的第一个 7 的倍数。 - 如果
--schedule
为 3d,而今天是 7 号,那么下一次计划的运行将在 9 号进行,因为 9 是继 7 后的下一个 3 的倍数。 - 如果添加标志
--run-immediately
,则触发即时修补程序运行。 后续的计划运行时间仍将根据你的--schedule
值,从每月的第 1 天起,按最接近的日期倍数来对齐。 - 计划计数器每月重置。 无论指定的计划如何,工作流都将在每月的第一个时间运行,然后按照指定的计划值运行本月剩余时间。 如果我的修补程序在1月28日运行,并且我的周期是7天,那么下一个修补程序将在2月1日运行,然后是2月8日,接着每隔7天继续运行。
命令架构:
az acr supply-chain workflow create -r <registryname> -g <resourcegroupname> -t continuouspatchv1 --config <JSONfilename> --schedule <number of days> --run-immediately
示例命令:
az acr supply-chain workflow create -r myRegistry -g myResourceGroup -t continuouspatchv1 --config ./continuouspatching.json --schedule 1d --run-immediately
在成功执行命令后,无论是否包含--run-immediately
,您都应该看到:
一条成功消息,确认你的工作流任务已排队。
一个输出参数,用于指示工作流下一次运行的计划时间,从而可以准确跟踪修补将何时再次发生。
针对所有必需/可选标志的帮助命令。
az acr supply-chain workflow create --help
使用 Azure 门户查看工作流任务
- 工作流成功后,转到 Azure 门户查看正在运行的任务。 选择“服务 -> 存储库”,应会看到名为
csscpolicies/patchpolicy
“的新存储库”。 此存储库托管了一个 JSON 配置项目,该项目被持续引用以进行持续修补。
- 接下来,选择“服务”下的“任务”-应会看到三个新任务:
任务:
- cssc-trigger-workflow - 此任务扫描配置文件,并在每个相应的镜像上调用扫描任务。
- cssc-scan-image - 此任务将扫描映像中是否存在作系统漏洞。 仅当找到作系统漏洞时,此任务才会触发修补任务。
- cssc-patch-image - 此任务会修补映像。 这些任务协同工作来执行持续修补工作流。
- 还可以在“任务”视图中选择“运行”以查看特定任务运行。 在此处可以查看有关任务是成功还是失败的状态信息,以及查看调试日志。
使用 CLI 查看工作流任务
还可以运行以下 CLI show 命令,查看每个任务和常规工作流的更多详细信息。 命令输出:
- 时间表
- 创建日期
- 系统数据,例如上次修改日期、按谁等。
命令架构:
az acr supply-chain workflow show -r <registry> -g <resourceGroup> -t continuouspatchv1
示例命令:
az acr supply-chain workflow show -r myRegistry -g myResourceGroup -t continuouspatchv1
针对所有必需/可选标志的帮助命令:
az acr supply-chain workflow show --help
更新持续修补工作流
如果要对连续修补工作流进行编辑,则更新命令是执行此作的最简单方法。 可以使用更新 CLI 命令直接更新计划或 JSON 配置架构。
命令架构:
az acr supply-chain workflow update -r <registry> -g <resourceGroup> -t continuouspatchv1 --config <JSONfilename> --schedule <number of days>
示例命令:
az acr supply-chain workflow update -r myRegistry -g myResourceGroup -t continuouspatchv1 --config ./continuouspatching.json --schedule 1d
针对所有必需/可选标志的帮助命令:
az acr supply-chain workflow update --help
若要更新你的计划,请使用新的计划输入运行上一个命令。 若要更新 JSON 配置,建议对文件进行更改,运行试运行,然后运行更新命令。
删除持续修补工作流
若要删除连续修补工作流,请运行以下 CLI 命令。
命令架构:
az acr supply-chain workflow delete -r <registry> -g <resourceGroup> -t continuouspatchv1
示例命令:
az acr supply-chain workflow delete -r myregistry -g myresourcegroup -t continuouspatchv1
针对所有必需/可选标志的帮助命令:
az acr supply-chain workflow delete --help
成功删除工作流后,将自动删除存储库“csscpolicies/patchpolicy”。 运行你的工作流的三个任务以及任何当前排队的运行都将被删除。