补丁基准规则在基于 Linux 的系统上的工作原理 - Amazon Systems Manager
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 Amazon Web Services 服务入门

补丁基准规则在基于 Linux 的系统上的工作原理

对于 Linux 分发版,补丁基准中规则的工作方式因分发版类型的不同而有所差异。与 Windows Server 托管式节点上的补丁更新不同,规则将在每个节点上得到评估以考虑实例上配置的存储库。Patch Manager(Amazon Systems Manager 的一项功能)使用本机软件包管理器推动安装补丁基准批准的补丁。

对于报告修补程序严重性级别的基于 Linux 的操作系统类型,Patch Manager 将软件发布商报告的严重性级别用于更新通知或单个修补程序。Patch Manager 不会从第三方来源(例如常见漏洞评分系统 (CVSS)),或者国家漏洞数据库 (NVD) 发布的指标中获取严重性级别。

补丁基准规则在 Amazon Linux 和 Amazon Linux 2 上的工作原理

在 Amazon Linux 和 Amazon Linux 2 上,补丁选择过程如下:

  1. 在托管式节点上,YUM 库可访问每个已配置存储库的 updateinfo.xml 文件。

    注意

    如果没有 updateinfo.xml 文件时,是否安装补丁取决于批准的补丁包括非安全性更新自动审批。例如,如果允许非安全更新,则会在自动批准时间到达时安装这些更新。

  2. updateinfo.xml 中的每个更新通知都包含几个属性,它们表示通知中的软件包的属性,如下表所述。

    更新通知属性
    属性 说明
    type

    对应于补丁基准的 PatchFilter 数据类型中分类键属性的值。表示更新通知中包含的软件包的类型。

    可以使用 Amazon CLI 命令 describe-patch-properties 或 API 操作 DescribePatchProperties 来查看受支持值的列表。您也可以在 Systems Manager 控制台中创建补丁基准页面或编辑补丁基准页面中的审批规则区中查看列表。

    severity

    对应于补丁基准的 PatchFilter 数据类型中严重性键属性的值。表示更新通知中包含的软件包的严重性。通常只适用于安全性 更新通知。

    可以使用 Amazon CLI 命令 describe-patch-properties 或 API 操作 DescribePatchProperties 来查看受支持值的列表。您也可以在 Systems Manager 控制台中创建补丁基准页面或编辑补丁基准页面中的审批规则区中查看列表。

    update_id

    表示建议 ID,例如 ALAS-2017-867。补丁基准中的 ApprovedPatchesRejectedPatches 属性可以使用建议 ID。

    重点

    包含有关更新通知的其他信息,例如 CVE ID (格式:CVE-2017-1234567)。补丁基准中的 ApprovedPatchesRejectedPatches 属性可以使用 CVE ID。

    已更新

    对应于补丁基准中的 ApproveAfterDays。表示更新通知中包含的软件包的发行日期 (更新的日期)。将当前时间戳与此属性的值比较并配合 ApproveAfterDays 可用来确定补丁是否已获得部署批准。

    注意

    有关已批准的补丁和已拒绝的补丁列表的已接受格式的信息,请参阅 关于已批准补丁和已拒绝补丁列表的软件包名称格式

  3. 托管式节点的产品由 SSM Agent 确定。此属性对应于补丁基准的 PatchFilter 数据类型中的产品键属性的值。

  4. 根据以下准则为更新选择程序包。

    安全性选项 补丁选择

    Amazon 提供的预定义的默认补丁基准和 Approved patches include non-security updates (已批准的补丁包括非安全性更新) 选中的自定义补丁基准

    对于 updateinfo.xml 中的每个更新通知,补丁基准用作筛选器,只允许更新包含符合条件的软件包。如果应用补丁基准定义后有多个软件包适用,则使用最新版本。

    此工作流程的等效 yum 命令为:

    sudo yum update-minimal --sec-severity=critical,important --bugfix -y

    Approved patches include non-security updates (已批准的补丁包括非安全性更新)复选框选中的自定义补丁基准

    除了应用已从 updateinfo.xml 中选择的安全性更新,Patch Manager 还会应用符合补丁筛选规则的非安全性更新。

    此工作流程的等效 yum 命令为:

    sudo yum update --security --bugfix -y

有关补丁合规性状态值的信息,请参阅了解补丁合规性状态值

补丁基准规则在 CentOS 上的工作原理

在 CentOS 上,补丁选择过程如下:

  1. 在托管式节点上,YUM 库(在 CentOS 6.x 和 7.x 版本上)或 DNF 库(在 CentOS 8.x 上)可访问每个已配置存储库的 updateinfo.xml 文件。

    注意

    如果没有 updateinfo.xml,是否安装补丁取决于已批准的补丁包括非安全性更新自动审批的设置。例如,如果允许非安全更新,则会在自动批准时间到达时安装这些更新。

  2. updateinfo.xml 中的每个更新通知都包含几个属性,它们表示通知中的软件包的属性,如下表所述。

    更新通知属性
    属性 说明
    type

    对应于补丁基准的 PatchFilter 数据类型中分类键属性的值。表示更新通知中包含的软件包的类型。

    可以使用 Amazon CLI 命令 describe-patch-properties 或 API 操作 DescribePatchProperties 来查看受支持值的列表。您也可以在 Systems Manager 控制台中创建补丁基准页面或编辑补丁基准页面中的审批规则区中查看列表。

    severity

    对应于补丁基准的 PatchFilter 数据类型中严重性键属性的值。表示更新通知中包含的软件包的严重性。通常只适用于安全性 更新通知。

    可以使用 Amazon CLI 命令 describe-patch-properties 或 API 操作 DescribePatchProperties 来查看受支持值的列表。您也可以在 Systems Manager 控制台中创建补丁基准页面或编辑补丁基准页面中的审批规则区中查看列表。

    update_id

    表示建议 ID,例如 CVE-2019-17055。补丁基准中的 ApprovedPatchesRejectedPatches 属性可以使用建议 ID。

    重点

    包含有关更新通知的其他信息,例如 CVE ID(格式:CVE-2019-17055)或 Bugzilla ID(格式:1463241)。补丁基准中的 ApprovedPatchesRejectedPatches 属性可以使用 CVE ID 和 Bugzilla ID。

    已更新

    对应于补丁基准中的 ApproveAfterDays。表示更新通知中包含的软件包的发行日期 (更新的日期)。将当前时间戳与此属性的值比较并配合 ApproveAfterDays 可用来确定补丁是否已获得部署批准。

    注意

    有关已批准的补丁和已拒绝的补丁列表的已接受格式的信息,请参阅 关于已批准补丁和已拒绝补丁列表的软件包名称格式

  3. 托管式节点的产品由 SSM Agent 确定。此属性对应于补丁基准的 PatchFilter 数据类型中的产品键属性的值。

  4. 根据以下准则为更新选择程序包。

    安全性选项 补丁选择

    Amazon 提供的预定义的默认补丁基准和 Approved patches include non-security updates (已批准的补丁包括非安全性更新) 选中的自定义补丁基准

    对于 updateinfo.xml 中的每个更新通知,补丁基准用作筛选器,只允许更新包含符合条件的软件包。如果应用补丁基准定义后有多个软件包适用,则使用最新版本。

    对于 CentOS 6 和 7,此工作流程的等效 yum 命令为:

    sudo yum update-minimal --sec-severity=critical,important --bugfix -y

    对于 CentOS 8,此工作流程的等效 dnf 命令为:

    sudo dnf update-minimal --sec-severity=Critical --bugfix -y \ sudo dnf update-minimal --sec-severity=Important --bugfix -y

    Approved patches include non-security updates (已批准的补丁包括非安全性更新)复选框选中的自定义补丁基准

    除了应用已从 updateinfo.xml 中选择的安全性更新,Patch Manager 还会应用符合补丁筛选规则的非安全性更新。

    对于 CentOS 6 和 7,此工作流程的等效 yum 命令为:

    sudo yum update --security --bugfix -y

    对于 CentOS 8,此工作流程的等效 dnf 命令为:

    sudo dnf update --security --bugfix -y

有关补丁合规性状态值的信息,请参阅了解补丁合规性状态值

补丁基准规则在 Debian Server 和 Raspberry Pi OS 上的工作原理

在 Debian Server 和 Raspberry Pi OS(原 Raspbian)上,补丁基准服务提供对 优先级部分 字段的筛选。这些字段通常存在于所有 Debian Server 和 Raspberry Pi OS 软件包中。为确定补丁基准是否选择了某个补丁,Patch Manager 执行以下操作:

  1. 在 Debian Server 和 Raspberry Pi OS 系统上,运行等效于 sudo apt-get update 的程序刷新可用软件包列表。不配置存储库,从 sources 列表中配置的存储库提取数据。

  2. 如果某个更新可用于 python3-apt (一个 libapt 的 Python 库接口),则将升级到最新版本。(即使您没有选择包括非安全更新选项,该非安全软件包也会更新。)

    重要

    仅在 Debian Server 8 上:由于 Debian Server 8.* 操作系统引用的软件包存储库 (jessie-backports) 已过时,因此 Patch Manager 会执行以下其他步骤来确保修补操作成功:

    1. 在托管式节点上,将从源位置列表 (jessie-backports) 中注释掉对 /etc/apt/sources.list.d/jessie-backports 存储库的引用。因此,不会尝试从该位置下载补丁。

    2. 将导入 Stretch 安全更新签名密钥。此密钥为 Debian Server 8.* 发行版上的更新和安装操作提供必要的权限。

    3. 在这一点运行 apt-get 操作,以确保在修补过程开始之前已安装 python3-apt 的最新版本。

    4. 安装过程完成后,将恢复对 jessie-backports 存储库的引用,并从 apt 源密钥环中删除签名密钥。这样做是为了使系统配置保持修补操作之前的状态。

  3. 然后,应用 GlobalFiltersApprovalRulesApprovedPatchesRejectedPatches 列表。

    注意

    由于无法可靠地确定 Debian Server 更新程序包的发布日期,因此该操作系统不支持自动审批选项。

    但是,批准规则也取决于在创建或上次更新补丁基准时是否选中包括非安全更新复选框。

    如果不包含非安全更新,则应用一条隐式规则,以便只选择在安全存储库中有升级的软件包。对于每个软件包,软件包的候选版本(通常为最新版本)必须包含在安全存储库中。在这种情况下,对于 Debian Server,补丁候选版本仅限于以下存储库中包含的补丁:

    这些存储库的命名如下:

    • Debian Server 8:debian-security jessie

    • Debian Server 和 Raspberry Pi OS 9:debian-security stretch

    • Debian Server 和 Raspberry Pi OS 10:debian-security buster

    如果包含非安全更新,也会考虑来自其他存储库的补丁。

    注意

    有关已批准的补丁和已拒绝的补丁列表的已接受格式的信息,请参阅 关于已批准补丁和已拒绝补丁列表的软件包名称格式

要查看 PrioritySection 字段的内容,运行以下 aptitude 命令:

注意

您需要先在 Debian Server 系统上安装 Aptitude。

aptitude search -F '%p %P %s %t %V#' '~U'

在对此命令的响应中,按以下格式报告所有可升级软件包:

name, priority, section, archive, candidate version

有关补丁合规性状态值的信息,请参阅了解补丁合规性状态值

补丁基准规则在 macOS 上的工作原理

在 macOS 上,补丁选择过程如下:

  1. 在托管式节点上,Patch Manager 访问 InstallHistory.plist 文件的已解析内容并标识软件包名称和版本。

    有关解析过程的详细信息,请参阅 如何安装补丁 中的 macOS 选项卡。

  2. 托管式节点的产品由 SSM Agent 确定。此属性对应于补丁基准的 PatchFilter 数据类型中的产品键属性的值。

  3. 根据以下准则为更新选择程序包。

    安全性选项 补丁选择

    Amazon 提供的预定义的默认补丁基准和 Approved patches include non-security updates (已批准的补丁包括非安全性更新) 选中的自定义补丁基准

    对于每个可用软件包更新,补丁基准用作筛选器,只允许更新包含符合条件的软件包。如果应用补丁基准定义后有多个软件包适用,则使用最新版本。

    Approved patches include non-security updates (已批准的补丁包括非安全性更新) 选中的自定义补丁基准

    除了应用使用 InstallHistory.plist 标识出来的安全性更新,Patch Manager 还会应用符合补丁筛选规则的非安全性更新。

有关补丁合规性状态值的信息,请参阅了解补丁合规性状态值

补丁基准规则在 Oracle Linux 上的工作原理

在 Oracle Linux 上,补丁选择过程如下:

  1. 在托管式节点上,YUM 库可访问每个已配置存储库的 updateinfo.xml 文件。

    注意

    如果存储库不是由 Oracle 管理的,则可能不存在 updateinfo.xml 文件。如果没有 updateinfo.xml,是否安装补丁取决于已批准的补丁包括非安全性更新自动审批的设置。例如,如果允许非安全更新,则会在自动批准时间到达时安装这些更新。

  2. updateinfo.xml 中的每个更新通知都包含几个属性,它们表示通知中的软件包的属性,如下表所述。

    更新通知属性
    属性 说明
    type

    对应于补丁基准的 PatchFilter 数据类型中分类键属性的值。表示更新通知中包含的软件包的类型。

    可以使用 Amazon CLI 命令 describe-patch-properties 或 API 操作 DescribePatchProperties 来查看受支持值的列表。您也可以在 Systems Manager 控制台中创建补丁基准页面或编辑补丁基准页面中的审批规则区中查看列表。

    severity

    对应于补丁基准的 PatchFilter 数据类型中严重性键属性的值。表示更新通知中包含的软件包的严重性。通常只适用于安全性 更新通知。

    可以使用 Amazon CLI 命令 describe-patch-properties 或 API 操作 DescribePatchProperties 来查看受支持值的列表。您也可以在 Systems Manager 控制台中创建补丁基准页面或编辑补丁基准页面中的审批规则区中查看列表。

    update_id

    表示建议 ID,例如 CVE-2019-17055。补丁基准中的 ApprovedPatchesRejectedPatches 属性可以使用建议 ID。

    重点

    包含有关更新通知的其他信息,例如 CVE ID(格式:CVE-2019-17055)或 Bugzilla ID(格式:1463241)。补丁基准中的 ApprovedPatchesRejectedPatches 属性可以使用 CVE ID 和 Bugzilla ID。

    已更新

    对应于补丁基准中的 ApproveAfterDays。表示更新通知中包含的软件包的发行日期 (更新的日期)。将当前时间戳与此属性的值比较并配合 ApproveAfterDays 可用来确定补丁是否已获得部署批准。

    注意

    有关已批准的补丁和已拒绝的补丁列表的已接受格式的信息,请参阅 关于已批准补丁和已拒绝补丁列表的软件包名称格式

  3. 托管式节点的产品由 SSM Agent 确定。此属性对应于补丁基准的 PatchFilter 数据类型中的产品键属性的值。

  4. 根据以下准则为更新选择程序包。

    安全性选项 补丁选择

    Amazon 提供的预定义的默认补丁基准和 Approved patches include non-security updates (已批准的补丁包括非安全性更新) 选中的自定义补丁基准

    对于 updateinfo.xml 中的每个更新通知,补丁基准用作筛选器,只允许更新包含符合条件的软件包。如果应用补丁基准定义后有多个软件包适用,则使用最新版本。

    对于版本 7 托管式节点,此工作流的等效 yum 命令为:

    sudo yum update-minimal --sec-severity=important,moderate --bugfix -y

    对于版本 8 托管式节点,此工作流的等效 dnf 命令为:

    sudo dnf upgrade-minimal --security --sec-severity Moderate --sec-severity Important

    Approved patches include non-security updates (已批准的补丁包括非安全性更新) 选中的自定义补丁基准

    除了应用已从 updateinfo.xml 中选择的安全性更新,Patch Manager 还会应用符合补丁筛选规则的非安全性更新。

    对于版本 7 托管式节点,此工作流的等效 yum 命令为:

    sudo yum update --security --bugfix

    对于版本 8 托管式节点,此工作流的等效 dnf 命令为:

    sudo dnf upgrade --security --bugfix

有关补丁合规性状态值的信息,请参阅了解补丁合规性状态值

补丁基准规则在 RHEL、CentOS Stream 和 Rocky Linux 上的工作原理

在 Red Hat Enterprise Linux (RHEL)、CentOS Stream 和 Rocky Linux 上,补丁选择过程如下:

  1. 在托管式节点上,YUM 库 (RHEL 7) 或 DNF 库 (RHEL 8、CentOS Stream 和 Rocky Linux) 访问每个已配置存储库的 updateinfo.xml 文件。

    注意

    如果存储库不是由 Red Hat 管理的,可能不存在 updateinfo.xml 文件。如果找不到 updateinfo.xml,则不会应用任何补丁。

  2. updateinfo.xml 中的每个更新通知都包含几个属性,它们表示通知中的软件包的属性,如下表所述。

    更新通知属性
    属性 说明
    type

    对应于补丁基准的 PatchFilter 数据类型中分类键属性的值。表示更新通知中包含的软件包的类型。

    可以使用 Amazon CLI 命令 describe-patch-properties 或 API 操作 DescribePatchProperties 来查看受支持值的列表。您也可以在 Systems Manager 控制台中创建补丁基准页面或编辑补丁基准页面中的审批规则区中查看列表。

    severity

    对应于补丁基准的 PatchFilter 数据类型中严重性键属性的值。表示更新通知中包含的软件包的严重性。通常只适用于安全性 更新通知。

    可以使用 Amazon CLI 命令 describe-patch-properties 或 API 操作 DescribePatchProperties 来查看受支持值的列表。您也可以在 Systems Manager 控制台中创建补丁基准页面或编辑补丁基准页面中的审批规则区中查看列表。

    update_id

    表示建议 ID,例如 RHSA-2017:0864。补丁基准中的 ApprovedPatchesRejectedPatches 属性可以使用建议 ID。

    重点

    包含有关更新通知的其他信息,例如 CVE ID (格式:CVE-2017-1000371) 或 Bugzilla ID (格式:1463241)。补丁基准中的 ApprovedPatchesRejectedPatches 属性可以使用 CVE ID 和 Bugzilla ID。

    已更新

    对应于补丁基准中的 ApproveAfterDays。表示更新通知中包含的软件包的发行日期 (更新的日期)。将当前时间戳与此属性的值比较并配合 ApproveAfterDays 可用来确定补丁是否已获得部署批准。

    注意

    有关已批准的补丁和已拒绝的补丁列表的已接受格式的信息,请参阅 关于已批准补丁和已拒绝补丁列表的软件包名称格式

  3. 托管式节点的产品由 SSM Agent 确定。此属性对应于补丁基准的 PatchFilter 数据类型中的产品键属性的值。

  4. 根据以下准则为更新选择程序包。

    安全性选项 补丁选择

    Amazon 提供的预定义的默认补丁基准和 Approved patches include non-security updates (已批准的补丁包括非安全性更新)复选框 选中的自定义补丁基准

    对于 updateinfo.xml 中的每个更新通知,补丁基准用作筛选器,只允许更新包含符合条件的软件包。如果应用补丁基准定义后有多个软件包适用,则使用最新版本。

    对于 RHEL 7,此工作流程的等效 yum 命令为:

    sudo yum update-minimal --sec-severity=critical,important --bugfix -y

    对于 RHEL 8、CentOS Stream 和 Rocky Linux,此工作流程的等效 dnf 命令为:

    sudo dnf update-minimal --sec-severity=Critical --bugfix -y \ sudo dnf update-minimal --sec-severity=Important --bugfix -y

    Approved patches include non-security updates (已批准的补丁包括非安全性更新)复选框选中的自定义补丁基准

    除了应用已从 updateinfo.xml 中选择的安全性更新,Patch Manager 还会应用符合补丁筛选规则的非安全性更新。

    对于 RHEL 7,此工作流程的等效 yum 命令为:

    sudo yum update --security --bugfix

    对于 RHEL 8、CentOS Stream 和 Rocky Linux,此工作流程的等效 dnf 命令为:

    sudo dnf update --security --bugfix

有关补丁合规性状态值的信息,请参阅了解补丁合规性状态值

补丁基准规则在 SUSE Linux Enterprise Server 上的工作原理

在 SLES 上,每个补丁包括以下表示补丁中的软件包的属性的属性:

  • 类别:对应于补丁基准的 PatchFilter 数据类型中的分类属性的值。表示更新通知中包含的补丁的类型。

    可以使用 Amazon CLI 命令 describe-patch-properties 或 API 操作 DescribePatchProperties 来查看受支持值的列表。您也可以在 Systems Manager 控制台中创建补丁基准页面或编辑补丁基准页面中的审批规则区中查看列表。

  • Severity(严重性):对应于补丁基准的 PatchFilter 数据类型中 Severity(严重性)键属性的值。表示补丁的严重性。

    可以使用 Amazon CLI 命令 describe-patch-properties 或 API 操作 DescribePatchProperties 来查看受支持值的列表。您也可以在 Systems Manager 控制台中创建补丁基准页面或编辑补丁基准页面中的审批规则区中查看列表。

托管式节点的产品由 SSM Agent 确定。此属性对应于补丁基准的 PatchFilter 数据类型中产品键属性的值。

对于每个补丁,补丁基准用作筛选器,只允许更新包含符合条件的软件包。如果应用补丁基准定义后有多个软件包适用,则使用最新版本。

注意

有关已批准的补丁和已拒绝的补丁列表的已接受格式的信息,请参阅 关于已批准补丁和已拒绝补丁列表的软件包名称格式

补丁基准规则在 Ubuntu Server 上的工作原理

在 Ubuntu Server上,补丁基准服务提供对 Priority (优先级)Section (部分) 字段的筛选。这些字段通常存在于所有 Ubuntu Server 软件包中。为确定补丁基准是否选择了某个补丁,Patch Manager 执行以下操作:

  1. 在 Ubuntu Server 系统上,运行等效于 sudo apt-get update 的程序刷新可用软件包列表。不配置存储库,从 sources 列表中配置的存储库提取数据。

  2. 如果某个更新可用于 python3-apt (一个 libapt 的 Python 库接口),则将升级到最新版本。(即使您没有选择包括非安全更新选项,该非安全软件包也会更新。)

  3. 然后,应用 GlobalFiltersApprovalRulesApprovedPatchesRejectedPatches 列表。

    注意

    由于无法可靠地确定 Ubuntu Server 的更新程序包的发布日期,因此此操作系统不支持自动批准选项。

    但是,批准规则也取决于在创建或上次更新补丁基准时是否选中包括非安全更新复选框。

    如果不包含非安全更新,则应用一条隐式规则,以便只选择在安全存储库中有升级的软件包。对于每个软件包,软件包的候选版本(通常为最新版本)必须包含在安全存储库中。在这种情况下,对于 Ubuntu Server,补丁候选版本仅限于以下存储库中包含的补丁:

    • Ubuntu Server 14.04 LTS:trusty-security

    • Ubuntu Server 16.04 LTS:xenial-security

    • Ubuntu Server 18.04 LTS:bionic-security

    • Ubuntu Server 20.04 LTS:focal-security

    • Ubuntu Server 20.10 STR:groovy-gorilla

    如果包含非安全更新,也会考虑来自其他存储库的补丁。

    注意

    有关已批准的补丁和已拒绝的补丁列表的已接受格式的信息,请参阅 关于已批准补丁和已拒绝补丁列表的软件包名称格式

要查看 PrioritySection 字段的内容,运行以下 aptitude 命令:

注意

您需要先在 Ubuntu Server 16 系统上安装 Aptitude。

aptitude search -F '%p %P %s %t %V#' '~U'

在对此命令的响应中,按以下格式报告所有可升级软件包:

name, priority, section, archive, candidate version

有关补丁合规性状态值的信息,请参阅了解补丁合规性状态值