Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
本文介绍如何安装、启用和配置连续修补。 启用连续修补功能后,容器注册表将自动检测和修复容器映像的操作系统级别漏洞。
先决条件
可以使用最低版本为 2.15.0 或更高版本的 Azure CLI 的本地安装。
已有一个具有 Azure 容器注册表(ACR)的现有资源组。
你有一个已启用 ACR 任务的 Azure 容器注册表(ACR 免费层中不支持 ACR 任务)。
安装持续修补工作流
运行以下命令以安装 CLI 扩展:
az extension add -n acrcssc
启用持续补丁工作流
使用 az login 登录到 Azure CLI。
az cloud set -n AzureChinaCloud az login # az cloud set -n AzureCloud //means return to Public Azure.登录到 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- 如果你在 3 号指定并运行
使用 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”。 运行你的工作流的三个任务以及任何当前排队的运行都将被删除。