AWS Systems Manager
用户指南
AWS 文档中描述的 AWS 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 AWS 服务入门

关于 SSM 文档 AWS-RunPatchBaseline

AWS Systems Manager 支持 Patch Manager 的 SSM 文档 AWS-RunPatchBaseline,该文档在实例上执行修补操作以执行安全相关更新和其他类型的更新。您可以使用 AWS-RunPatchBaseline 文档为操作系统和应用程序应用补丁。(在 Windows Server 上,应用程序支持仅限于 Microsoft 应用程序的更新。)

此文档同时支持 Linux 和 Windows 实例,因此可在由 Systems Manager 管理的任何类型的实例上可靠运行。此文档将为每个平台执行适当的操作。

注意

Patch Manager 还支持旧版 SSM 文档 AWS-ApplyPatchBaseline。但是,此文档只支持在 Windows 实例上进行修补。建议使用 AWS-RunPatchBaseline,因为它同时支持在 Linux 和 Windows 实例上进行修补。要使用 AWS-RunPatchBaseline 文档,需要 SSM 代理 版本 2.0.834.0 或更高版本。

在 Windows 系统上:

在 Windows 实例上,AWS-RunPatchBaseline 文档下载并调用 PowerShell 模块,然后由 PowerShell 模块下载适用于该实例的补丁基准的快照。将此补丁基准快照传递给 Windows Update API,Windows Update API 根据需要控制已批准的补丁的下载和安装。

在 Linux 系统上:

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

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

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

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

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

AWS-RunPatchBaseline 参数

AWS-RunPatchBaseline 支持三个参数。Operation 参数是必需的。InstallOverrideList 参数是可选的。从技术上讲,Snapshot-ID 是可选的,但我们建议在维护时段之外运行 AWS-RunPatchBaseline 时为其提供一个自定义值;而在维护时段操作中运行此文档时,让 Patch Manager 自动提供该值。

参数名称: Operation

用法:必需。

选项Scan | Install

Scan

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

安装

选择 Install 选项时,AWS-RunPatchBaseline 尝试安装实例中缺失的已批准并且适用的更新。在 Install 操作中生成的补丁合规性信息不会列出任何缺失的更新。但是,如果更新的安装因任何原因失败,它会报告处于失败状态的更新。只要在实例上安装了更新,就一定会重启实例,以确保更新正常安装和激活。

参数名称: InstallOverrideList

用法:可选。

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

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

有效的 URL 格式

  • https URL 格式

    https://s3.amazonaws.com/my-patch-approval-lists-bucket/my-windows-override-list.yaml
  • Amazon S3 路径样式 URL

    s3://my-patch-approval-lists-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 格式验证程序”。

  • Microsoft Windows

    id

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

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

  • Linux

    id

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

    标题

    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.”。

其他字段

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

示例补丁列表

  • 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'
  • APT

    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'
  • 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'
  • 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*'

参数名称: Snapshot ID

用法:可选。

Snapshot ID 是 Patch Manager 使用的唯一 ID (GUID),用于确保在单一操作中修补的一组实例都具有完全相同的一组已批准补丁。尽管它定义为可选参数,根据是否在维护时段中运行 AWS-RunPatchBaseline,我们还是提供了不同的最佳实践建议,如下表所述。

AWS-RunPatchBaseline 最佳实践

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

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

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

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

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

例如,假设通过 Run Command 直接运行 AWS-RunPatchBaseline 文档,并且目标为包含 50 个实例的实例组。指定自定义快照 ID 将生成单一基准快照 (用于评估和修补所有实例),从而确保所有实例最终处于一致状态。

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

本页内容: