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

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

关于AWS-RunPatchBaselineWithHooksSSM 文档

Amazon Web Services Systems Manager支持AWS-RunPatchBaselineWithHooks,用于修补程序管理器的 Systems Manager 文档(SSM 文档),Amazon Web Services Systems Manager。此 SSM 文档在实例上执行修补操作以执行安全相关更新和其他类型的更新。

AWS-RunPatchBaselineWithHooks不同于AWS-RunPatchBaseline通过以下方式:

  • 一个包装文档AWS-RunPatchBaselineWithHooks是一个包装器AWS-RunPatchBaseline并依赖于AWS-RunPatchBaseline对于它的一些操作。

  • 这些区域有:Install操作AWS-RunPatchBaselineWithHooks支持在实例修补期间在指定点运行的生命周期挂钩。由于修补程序安装有时需要重新启动实例,因此修补操作分为两个事件,共有三个支持自定义功能的挂接。第一个挂钩位于Install with NoRebootoperation. 第二个钩子是Install with NoRebootoperation. 实例重新启动后,第三个挂接可用。

  • 不支持自定义修补程序列表AWS-RunPatchBaselineWithHooks不支持InstallOverrideList参数。

  • SSM 代理支持AWS-RunPatchBaselineWithHooks要求在实例上安装 SSM 代理 3.0.502 或更高版本以进行修补。

运行文档时,如果未指定修补程序组,则使用当前指定为操作系统类型的 “默认” 的修补程序基线。否则,它将使用与修补程序组关联的修补程序基准。有关补丁组的信息,请参阅。关于补丁组

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

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

Linux

在 Linux 实例上,AWS-RunPatchBaselineWithHooks文档调用 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-RunPatchBaselineWithHooks文档调用 Python 模块,然后由 Python 模块下载适用于该实例的补丁基准的快照。接下来,Python 子进程调用实例上的 CLI,以检索指定软件包管理器的安装和更新信息,并为每个更新包驱动适当的软件包管理器。

Windows

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

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

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

注意

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

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

AWS-RunPatchBaselineWithHooks操作步骤

AWS-RunPatchBaselineWithHooks运行时,将执行以下步骤:

  1. Scan-AScan操作使用AWS-RunPatchBaseline在实例上运行,并生成并上载符合性报告。

  2. 验证本地修补程序状态-运行一个脚本,以确定将根据所选操作执行哪些步骤,Scan结果:步骤 1。

    1. 如果选定的操作为Scan,则操作将被标记为完成。操作结束。

    2. 如果选定的操作为Install,修补程序管理器将评估Scan结果来确定接下来要运行的内容:

      1. 如果未检测到缺少的修补程序,并且不需要挂起的重新启动,则操作将直接进行到最后一步(步骤 8),其中包括您提供的挂接。两者之间的任何步骤都将跳过。

      2. 如果未检测到缺少的修补程序,但需要挂起重新引导,并且选定的重新启动选项为NoReboot,则操作将直接进行到最后一步(步骤 8),其中包括您提供的挂接。两者之间的任何步骤都将跳过。

      3. 否则,操作将继续下一步。

  3. 预修补挂接操作-您为第一个生命周期挂钩提供的 SSM 文档PreInstallHookDocName在实例上运行。

  4. 通过 NoReboot 安装-一个Install操作,重新启动选项为NoReboot,使用AWS-RunPatchBaseline在实例上运行,并生成并上载符合性报告。

  5. 安装后挂钩操作-您为第二个生命周期挂钩提供的 SSM 文档PostInstallHookDocName在实例上运行。

  6. 验证重新启动-运行脚本以确定实例是否需要重新启动以及要运行的步骤:

    1. 如果选定的重新启动选项为NoReboot,则操作将直接进行到最后一步(步骤 8),其中包括您提供的挂接。两者之间的任何步骤都将跳过。

    2. 如果选定的重新启动选项为RebootIfNeeded时,修补程序管理器将检查是否需要从步骤 4 中收集的清单中进行任何挂起的重新启动。

      1. 如果未找到需要重新启动的修补程序,则实例修补操作将完成,并且该操作将直接进入最后一步(步骤 8),其中包括您提供的挂接。两者之间的任何步骤都将跳过。

      2. 如果找到需要重新启动的补丁,则操作将继续执行下一步。

  7. 重新启动并报告-带有重新启动选项的安装操作RebootIfNeeded在实例上运行使用AWS-RunPatchBaseline,并生成并上载符合性报告。

  8. 重新启动后挂接操作-您为第三个生命周期挂钩提供的 SSM 文档OnExitHookDocName在实例上运行。

对于Scan操作时,如果步骤 1 失败,则运行文档的过程将停止,并将该步骤报告为失败,尽管后续步骤报告为成功。

对于Install操作,如果aws:runDocument步骤在操作过程中失败,则这些步骤将被报告为失败,并且操作直接进行到最后一步(步骤 8),其中包括您提供的挂接。两者之间的任何步骤都将跳过。此步骤被报告为失败,最后一步报告其操作结果的状态,其中的所有步骤均报告为成功。

AWS-RunPatchBaselineWithHooks 个参数

AWS-RunPatchBaselineWithHooks支持六个参数。

Operation 参数是必需的。

这些区域有:RebootOptionPreInstallHookDocNamePostInstallHookDocName, 和OnExitHookDocName参数是可选的。

Snapshot-ID在技术上是可选的,但是我们建议您在运行AWS-RunPatchBaselineWithHooks在维护时段以外。当文档作为维护时段操作的一部分运行时,让 Patch Manager 自动提供值。

参数名称: Operation

用量:必填项。

选项Scan | Install

Scan

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

安装

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

注意

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

参数名称: Snapshot ID

用量:可选。

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

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

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

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

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

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

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

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

参数名称: RebootOption

用量:可选。

选项RebootIfNeeded | NoReboot

RebootIfNeeded

在选择RebootIfNeeded选项,如果 Patch Manager 安装了新补丁,并且它检测到任何状态为INSTALLED_PENDING_REBOOTInstalloperation. 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

参数名称: PreInstallHookDocName

用量:可选。

默认值AWS-Noop

要提供的值PreInstallHookDocName参数是您选择的 SSM 文档的名称或 Amazon 资源名称 (ARN)。您可以使用Amazon托管文档或您已创建或已与您共享的自定义 SSM 文档的名称或 ARN。(对于已与您共享的 SSM 文档,从不同的Amazon Web Services 账户,则必须指定完整资源 ARN,例如aws:arn:ssm:us-east-2:123456789012:document/MySharedDocument。)

您指定的 SSM 文档在Install操作,并执行 SSM Agent 支持的任何操作,例如在对实例执行修补之前,用于检查应用程序运行状况检查的 shell 脚本。有关操作的列表,请参阅Systems Manager 命令文档插件参考)。SSM 文档名称为AWS-Noop,它不会对实例执行任何操作。

有关创建自定义 SSM 文档的信息,请参阅创建 SSM 文档

参数名称: PostInstallHookDocName

用量:可选。

默认值AWS-Noop

要提供的值PostInstallHookDocName参数是您选择的 SSM 文档的名称或 Amazon 资源名称 (ARN)。您可以使用Amazon托管文档或您已创建或已与您共享的自定义 SSM 文档的名称或 ARN。(对于已与您共享的 SSM 文档,从不同的Amazon Web Services 账户,则必须指定完整资源 ARN,例如aws:arn:ssm:us-east-2:123456789012:document/MySharedDocument。)

您指定的 SSM 文档在Install with NoReboot操作,并执行 SSM 代理支持的任何操作,例如用于在重新启动之前安装第三方更新的 shell 脚本。有关操作的列表,请参阅Systems Manager 命令文档插件参考)。SSM 文档名称为AWS-Noop,它不会对实例执行任何操作。

有关创建自定义 SSM 文档的信息,请参阅创建 SSM 文档

参数名称: OnExitHookDocName

用量:可选。

默认值AWS-Noop

要提供的值OnExitHookDocName参数是您选择的 SSM 文档的名称或 Amazon 资源名称 (ARN)。您可以使用Amazon托管文档或您已创建或已与您共享的自定义 SSM 文档的名称或 ARN。(对于已与您共享的 SSM 文档,从不同的Amazon Web Services 账户,则必须指定完整资源 ARN,例如aws:arn:ssm:us-east-2:123456789012:document/MySharedDocument。)

您指定的 SSM 文档在实例重新启动操作后运行,并执行 SSM Agent 支持的任何操作,例如用于在修补操作完成后验证实例运行状况的 shell 脚本。有关操作的列表,请参阅Systems Manager 命令文档插件参考)。SSM 文档名称为AWS-Noop,它不会对实例执行任何操作。

有关创建自定义 SSM 文档的信息,请参阅创建 SSM 文档