关于AWS-RunPatchBaselineSSM 文档 - Amazon Web Services Systems Manager
AWS 文档中描述的 AWS 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 AWS 服务入门

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

关于AWS-RunPatchBaselineSSM 文档

Amazon Web Services Systems Manager支持AWS-RunPatchBaseline,用于修补程序管理器的 Systems Manager 文档(SSM 文档),Amazon Web Services Systems Manager。此 SSM 文档在实例上执行修补操作以执行安全相关更新和其他类型的更新。运行文档时,如果未指定修补程序组,则使用当前指定为操作系统类型的 “默认” 的修补程序基线。否则,它将使用与修补程序组关联的修补程序基线。有关补丁组的信息,请参阅。关于补丁组

您可以使用AWS-RunPatchBaseline为操作系统和应用程序应用补丁。(打开Windows Server,则应用程序支持仅限于 Microsoft 发布的应用程序的更新。)

本文档支持 Linux、macOS, 和Windows Server实例。此文档将为每个平台执行适当的操作。

注意

补丁管理器还支持旧版 SSM 文档AWS-ApplyPatchBaseline。但是,此文档只支持在 Windows 实例上进行修补。我们建议您使用AWS-RunPatchBaseline而是因为它支持 Linux 上的修补程序,macOS, 和Windows Server实例。要使用 SSM 代理版本 2.0.834.0 或更高版本,需要 SSM 代理程序版本 2.0.834.0 或更高版本。AWS-RunPatchBaseline文档.

Windows

在 上Windows Server实例,AWS-RunPatchBaseline文档下载并调用 PowerShell 模块,然后由 PowerShell 模块下载适用于该实例的补丁基准的快照。此修补程序基准快照包含已批准的修补程序列表,这些修补程序通过查询 Windows 服务器更新服务 (WSUS) 服务器的修补程序基准进行编译。此列表传递给 Windows Update API,Windows Update API 根据需要控制已批准的补丁的下载和安装。

Linux

在 Linux 实例上,AWS-RunPatchBaseline文档调用 Python 模块,然后由 Python 模块下载适用于该实例的补丁基准的快照。此补丁基准快照使用已定义的规则及已批准补丁和已阻止补丁的列表驱动每种实例类型相应的软件包管理器:

  • Amazon Linux、Amazon Linux 2、CentOS、Oracle Linux 和 Oracle LinuxRHEL7 个实例使用 YUM。对于 YUM 操作,Patch Manager 需要 Python 2.6 或更高版本。

  • RHEL 8 实例使用 DNF。对于 DNF 操作,Patch Manager 需要 Python 2Python 3。(默认情况下,RHEL 8 上不安装其中任一版本。 您必须手动安装其中一个或另一个。)

  • Debian Server 和 Ubuntu Server 实例使用 APT。对于 APT 操作,Patch Manager 需要 Python 3

  • SUSE Linux Enterprise Server 实例使用 Zypper。对于 Zypper 操作,Patch Manager 需要 Python 2.6 或更高版本。

macOS

在 上macOS实例,AWS-RunPatchBaseline文档调用 Python 模块,然后由 Python 模块下载适用于该实例的补丁基准的快照。接下来,Python 子进程调用Amazon命令行界面 (AmazonCLI),以检索指定软件包管理器的安装和更新信息,并为每个更新包驱动适当的软件包管理器。

每个快照都特定于Amazon Web Services 账户、修补程序组、操作系统和快照 ID。快照通过预签名 Amazon Simple Storage Service (Amazon S3) URL 传递,该 URL 在快照创建后 24 小时过期。但是,在 URL 过期后,如果您想要将相同的快照内容应用于其他实例,您可以在创建快照后三天内生成新的预签名 Amazon S3 URL。若要执行此操作,请使用为实例提供可部署的修补程序快照命令。

安装完所有已批准和适用的更新后,根据需要执行重启,然后在实例上生成补丁合规性信息,并向 Patch Manager 报告。

注意

如果在 AWS-RunPatchBaseline 文档中将 RebootOption 参数设置为 NoReboot,Patch Manager 运行后不会重启实例。有关更多信息,请参阅 参数名称: RebootOption

有关查看补丁合规性数据的信息,请参阅关于补丁合规性

AWS-RunPatchBaseline 个参数

AWS-RunPatchBaseline支持五个参数。Operation 参数是必需的。这些区域有:InstallOverrideListBaselineOverride, 和RebootOption参数是可选的。Snapshot-ID在技术上是可选的,但是我们建议您在运行AWS-RunPatchBaseline在维护时段以外。当文档作为维护窗口操作的一部分运行时,修补程序管理器可以自动提供自定义值。

参数名称: Operation

用量:必填项。

选项Scan | Install

Scan

在选择Scan选项,AWS-RunPatchBaseline确定实例的补丁合规性状态并向 Patch Manager 报告此信息。Scan不会提示安装更新或重新启动实例。相反,此操作会标识缺少哪些已批准并且适用于此实例的更新。

安装

在选择Install选项,AWS-RunPatchBaseline尝试安装实例中缺失的已批准并且适用的更新。在 Install 操作中生成的补丁合规性信息不会列出任何缺失的更新。但是,如果更新的安装因任何原因失败,它会报告处于失败状态的更新。只要在实例上安装了更新,就一定会重启实例,以确保更新正常安装和激活。(例外:如果RebootOption参数设置为NoReboot中的AWS-RunPatchBaseline文档中,Patch Manager 运行后不会重启实例。 有关更多信息,请参阅 。参数名称: RebootOption。)

注意

如果在 Patch Manager 更新实例之前安装了基准规则指定的补丁,则系统可能无法按预期重新启动。当补丁是由用户手动安装或由其他程序自动安装时,可能会发生这种情况,例如unattended-upgradesUbuntu 服务器上的软件包。

参数名称: Snapshot ID

用量:可选。

Snapshot ID 是 Patch Manager 使用的唯一 ID (GUID),用于确保在单一操作中修补的一组实例都具有完全相同的一组已批准补丁。尽管参数定义为可选参数,我们还是推荐最佳实践取决于您是否运行AWS-RunPatchBaseline,如下表所述。

AWS-RunPatchBaseline 最佳实践
Mode 最佳实践 详细信息
正在运行AWS-RunPatchBaseline在维护时段内 不要提供快照 ID。Patch Manager 将为您提供。

如果您使用维护窗口运行AWS-RunPatchBaseline,则不应提供自己生成的快照 ID。这种情况下,Systems Manager 提供 GUID 值基于维护时段执行 ID。这可确保在所有调用中使用正确的 ID。AWS-RunPatchBaseline在维护时段中。

如果在这种情况下您指定值,请注意,补丁基准的快照最多保留 3 天。之后,即使您在快照到期后指定相同的 ID,也将生成新的快照。

正在运行AWS-RunPatchBaseline在维护时段以外 为快照 ID 生成和指定自定义 GUID 值。¹

当您不使用维护窗口运行AWS-RunPatchBaseline,建议为每个补丁基准生成并指定唯一的快照 ID,特别是在运行AWS-RunPatchBaseline文档在同一操作中的多个实例上。如果在这种情况下您不指定 ID,Systems Manager 会为命令发送到的每个实例生成不同的快照 ID。这会导致在实例间指定不同的补丁集。

例如,假设您正在运行AWS-RunPatchBaseline文档直接通过 “运行命令”,一种Amazon Web Services Systems Manager,并针对一组 50 个实例。指定自定义快照 ID 将生成单一基准快照 (用于评估和修补所有实例),从而确保所有实例最终处于一致状态。

¹ 您可以使用任何能够生成 GUID 的工具为快照 ID 参数生成值。例如,在 PowerShell 中,可以使用 New-Guid cmdlet 生成格式为 12345699-9405-4f69-bc5e-9315aEXAMPLE 的 GUID。

参数名称: InstallOverrideList

用量:可选。

InstallOverrideList允许您为要安装的补丁列表指定一个 https URL 或 Amazon S3 路径样式 URL。此补丁安装列表(以 YAML 格式维护)会覆盖当前的默认补丁基准指定的补丁。这样,您可以更精细地控制实例上安装的补丁。

请注意,合规性根据补丁基准中指定的内容而不是您在补丁的 InstallOverrideList 列表中指定的内容反映补丁状态。也就是说,Scan 操作会忽略 InstallOverrideList 参数。这是为了确保合规性报告根据策略而不是针对特定修补操作批准的内容持续反映补丁状态。

有关如何使用 InstallOverrideList 参数按不同维护时段计划将不同类型的补丁应用到目标组,同时仍使用单个补丁基准的说明,请参阅在中使 InstallOverrideList 参数的示例场景AWS-RunPatchBaseline或者AWS-RunPatchBaselineAssociation

有效的 URL 格式

注意

如果您的文件存储在公开可用的存储桶中,您可以指定 https URL 格式或 Amazon S3 路径样式的 URL。如果您的文件存储在私有存储桶中,则必须指定 Amazon S3 路径样式的 URL。

  • https URL 格式

    https://s3.amazonaws.com/DOC-EXAMPLE-BUCKET/my-windows-override-list.yaml
  • Amazon S3 路径样式 URL

    s3://DOC-EXAMPLE-BUCKET/my-windows-override-list.yaml

有效的 YAML 内容格式

用在列表中指定补丁的格式取决于实例的操作系统。但是,一般格式如下所示:

patches: - id: '{patch-d}' title: '{patch-title}' {additional-fields}:{values}

尽管可以在 YAML 中提供额外字段,但是补丁操作会将其忽略。

此外,建议在 S3 存储桶中添加或更新列表之前验证 YAML 文件格式是否有效。有关 YAML 格式的更多信息,请参阅 yaml.org。对于验证工具选项,请在 Web 中搜索“yaml 格式验证程序”。

Linux

id

id 字段是必需的。它用来使用软件包名称和架构指定补丁。例如:'dhclient.x86_64'。 您可以在 id 中使用通配符来指示多个软件包。例如:'dhcp*''dhcp*1.*'

Title

title 字段是可选的,但它在 Linux 系统上提供额外的筛选功能。如果使用 title,它应包含以下格式之一的软件包版本信息:

YUM/SUSE Linux Enterprise Server (SLES):

{name}.{architecture}:{epoch}:{version}-{release}

APT

{name}.{architecture}:{version}

对于 Linux 补丁标题,您可以在任意位置使用一个或多个通配符来扩展匹配软件包的数量。例如:'*32:9.8.2-0.*.rc1.57.amzn1'

例如:

  • 实例上目前安装了 Apt 软件包版本 1.2.25,但版本 1.2.27 现已可用。

  • 将 apt.amd64 版本 1.2.27 添加到补丁列表中。它依赖于 apt utils.amd64 版本 1.2.27,但在列表中指定了 apt-utils.amd64 版本 1.2.25。

在这种情况下,将阻止安装 apt 版本 1.2.27 并报告为“Failed-NonCompliant.”。

Windows

id

id 字段是必需的。它用来使用 Microsoft 知识库 ID(例如 KB2736693)和 Microsoft 安全公告 ID(例如 MS17-023)指定补丁。

您在 Windows 补丁列表中提供的任何其他字段都是可选的,仅供您自己参考。您可以使用其他字段,如 titleclassificationseverity 等来提供关于指定补丁的更详细信息。

macOS

id

id 字段是必需的。的值id字段可以使用{package-name}.{package-version}格式或 {包名称} 格式。

示例补丁列表

  • Amazon Linux

    patches: - id: 'kernel.x86_64' - id: 'bind*.x86_64' title: '32:9.8.2-0.62.rc1.57.amzn1' - id: 'glibc*' - id: 'dhclient*' title: '*12:4.1.1-53.P1.28.amzn1' - id: 'dhcp*' title: '*10:3.1.1-50.P1.26.amzn1'
  • CentOS

    patches: - id: 'kernel.x86_64' - id: 'bind*.x86_64' title: '32:9.8.2-0.62.rc1.57.amzn1' - id: 'glibc*' - id: 'dhclient*' title: '*12:4.1.1-53.P1.28.amzn1' - id: 'dhcp*' title: '*10:3.1.1-50.P1.26.amzn1'
  • Debian 服务器

    patches: - id: 'apparmor.amd64' title: '2.10.95-0ubuntu2.9' - id: 'cryptsetup.amd64' title: '*2:1.6.6-5ubuntu2.1' - id: 'cryptsetup-bin.*' title: '*2:1.6.6-5ubuntu2.1' - id: 'apt.amd64' title: '*1.2.27' - id: 'apt-utils.amd64' title: '*1.2.25'
  • macOS

    patches: - id: 'XProtectPlistConfigData' - id: 'MRTConfigData.1.61' - id: 'Command Line Tools for Xcode.11.5' - id: 'Gatekeeper Configuration Data'
  • Oracle Linux

    patches: - id: 'audit-libs.x86_64' title: '*2.8.5-4.el7' - id: 'curl.x86_64' title: '*.el7' - id: 'grub2.x86_64' title: 'grub2.x86_64:1:2.02-0.81.0.1.el7' - id: 'grub2.x86_64' title: 'grub2.x86_64:1:*-0.81.0.1.el7'
  • Red Hat Enterprise Linux (RHEL)

    patches: - id: 'NetworkManager.x86_64' title: '*1:1.10.2-14.el7_5' - id: 'NetworkManager-*.x86_64' title: '*1:1.10.2-14.el7_5' - id: 'audit.x86_64' title: '*0:2.8.1-3.el7' - id: 'dhclient.x86_64' title: '*.el7_5.1' - id: 'dhcp*.x86_64' title: '*12:5.2.5-68.el7'
  • SUSE Linux Enterprise Server (SLES)

    patches: - id: 'amazon-ssm-agent.x86_64' - id: 'binutils' title: '*0:2.26.1-9.12.1' - id: 'glibc*.x86_64' title: '*2.19*' - id: 'dhcp*' title: '0:4.3.3-9.1' - id: 'lib*'
  • Ubuntu Server

    patches: - id: 'apparmor.amd64' title: '2.10.95-0ubuntu2.9' - id: 'cryptsetup.amd64' title: '*2:1.6.6-5ubuntu2.1' - id: 'cryptsetup-bin.*' title: '*2:1.6.6-5ubuntu2.1' - id: 'apt.amd64' title: '*1.2.27' - id: 'apt-utils.amd64' title: '*1.2.25'
  • Windows

    patches: - id: 'KB4284819' title: '2018-06 Cumulative Update for Windows Server 2016 (1709) for x64-based Systems (KB4284819)' - id: 'KB4284833' - id: 'KB4284835' title: '2018-06 Cumulative Update for Windows Server 2016 (1803) for x64-based Systems (KB4284835)' - id: 'KB4284880' - id: 'KB4338814'

参数名称: RebootOption

用量:可选。

选项RebootIfNeeded | NoReboot

RebootIfNeeded

当您选择 RebootIfNeeded 选项时,如果 Patch Manager 安装了新补丁,或者如果它在 Install 操作期间检测到任何状态为 INSTALLED_PENDING_REBOOT 的补丁,则会重启实例。INSTALLED_PENDING_REBOOT 状态可能意味着上次运行 Install 操作时选择了 NoReboot 选项。(在 Patch Manager 之外安装的补丁不会具备 INSTALLED_PENDING_REBOOT 状态。)

注意

选择 RebootIfNeeded 选项时,Patch Manager 不会评估补丁是否需要 重启。当缺少程序包或程序包状态为 INSTALLED_PENDING_REBOOT 时,才会重启。

NoReboot

选择 NoReboot 选项后,即使实例在 Install 操作期间安装了补丁,Patch Manager 也不会重启实例。如果您知道您的实例在应用修补程序后不需要重启,或者您的应用程序或进程在实例上运行,但不应因修补操作重启而中断,则此选项非常有用。当您希望更多地控制实例重启的时间(例如,使用维护时段)时,该选项也很有用。

注意

如果选择 NoReboot 选项并安装了补丁,则会为该补丁分配状态 InstalledPendingReboot。但实例本身被标记为 Non-Compliant。重新启动并运行 Scan 操作后,实例状态将更新为 Compliant

修补程序安装跟踪文件:为了跟踪补丁安装,特别是自上次重启系统以来安装的补丁,Systems Manager 会在托管实例上维护一个文件。

重要

请勿删除或修改该跟踪文件。如果删除或损坏此文件,实例的补丁合规性报告则不准确。如果发生这种情况,请重启实例并运行补丁扫描操作以还原文件。

此跟踪文件存储在托管实例上的以下位置:

  • Linux 操作系统:

    • /var/log/amazon/ssm/patch-configuration/patch-states-configuration.json

    • /var/log/amazon/ssm/patch-configuration/patch-inventory-from-last-operation.json

  • Windows Server操作系统:

    • C:\ProgramData\Amazon\PatchBaselineOperations\State\PatchStatesConfiguration.json

    • C:\ProgramData\Amazon\PatchBaselineOperations\State\PatchInventoryFromLastOperation.json

参数名称: BaselineOverride

用量:可选。

您可以在运行时使用BaselineOverride参数。此基准覆盖在 S3 存储桶中作为 JSON 对象进行维护。它确保修补操作使用与主机操作系统匹配的提供基准,而不是应用默认修补程序基准中的规则

有关如何使用BaselineOverride参数,请参阅使用基准覆盖参数