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

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

关于 SSM 文档 AWS-RunPatchBaselineAssociation

AWS-RunPatchBaseline 文档一样,AWS-RunPatchBaselineAssociation 对实例执行修补操作,以便进行安全相关更新和其他类型的更新。您还可以使用文档 AWS-RunPatchBaselineAssociation 将补丁应用于操作系统和应用程序。(在 Windows Server 上,应用程序支持仅限于更新 Microsoft 应用程序。)

注意

目前,在混合环境中,本地服务器和虚拟机 (VM) 不支持 AWS-RunPatchBaselineAssociation

此文档同时支持 Linux 和 Windows EC2 实例。此文档将为每个平台执行相应的操作,在 Linux 实例上调用 Python 模块,在 Windows 实例上调用 PowerShell 模块。

但是,AWS-RunPatchBaselineAssociation 在以下方面与 AWS-RunPatchBaseline 不同:

  • 使用 AWS-RunPatchBaselineAssociation 文档时,您可以在文档的 BaselineTags 参数字段中指定标签键对。如果您的账户中的自定义补丁基准共享这些标签,则 Patch Manager 在目标实例上运行时,而不是在操作系统类型中当前指定的“默认”补丁基准,将使用该已标记的基准。

    以下两种格式对 BaselineTags 参数都有效:

    Key=tag-key,Values=tag-value

    Key=tag-key,Values=tag-value1,tag-value2,tag-value3

  • AWS-RunPatchBaselineAssociation 运行时,将使用 PutComplianceItems API 命令而不是 PutInventory 使用的 AWS-RunPatchBaseline 命令来记录它收集的补丁合规性数据。 这种差异意味着,按特定关联存储并报告补丁合规性信息。此关联之外生成的补丁合规性数据不会被覆盖。

  • 运行 AWS-RunPatchBaselineAssociation 后报告的补丁合规性信息指示实例是否合规。它不包含补丁级别详细信息,如以下 AWS CLI 命令的输出所示。请注意,命令在 Association 上筛选作为合规性类型:

    aws ssm list-compliance-items \ --resource-ids "i-02573cafcfEXAMPLE" \ --resource-types "ManagedInstance" \ --filters "Key=ComplianceType,Values=Association,Type=EQUAL" \ --region us-east-2

    系统将返回类似于以下内容的信息:

    {
        "ComplianceItems": [
            {
                "Status": "NON_COMPLIANT", 
                "Severity": "UNSPECIFIED", 
                "Title": "MyPatchAssociation", 
                "ResourceType": "ManagedInstance", 
                "ResourceId": "i-02573cafcfEXAMPLE", 
                "ComplianceType": "Association", 
                "Details": {
                    "DocumentName": "AWS-RunPatchBaselineAssociation", 
                    "PatchBaselineId": "pb-0c10e65780EXAMPLE", 
                    "DocumentVersion": "1"
                }, 
                "ExecutionSummary": {
                    "ExecutionTime": 1590698771.0
                }, 
                "Id": "3e5d5694-cd07-40f0-bbea-040e6EXAMPLE"
            }
        ]
    }

如果标签键对值已指定为 AWS-RunPatchBaselineAssociation 文档的参数,则 Patch Manager 将搜索与操作系统类型匹配并已使用相同的标签键对进行标记的自定义补丁基准。此搜索不限于当前指定的默认补丁基准或分配给补丁组的基准。如果没有找到带指定标签的基准,则 Patch Manager 接下来会查找补丁组(如果在运行 AWS-RunPatchBaselineAssociation 的命令中指定了补丁组)。 如果没有匹配任何补丁组,Patch Manager 将回退到操作系统账户的当前默认补丁基准。

如果找到多个带在 AWS-RunPatchBaselineAssociation 文档中指定的标签的补丁基准,Patch Manager 将返回一条错误消息,指示只能使用该键值对标记一个补丁基准,以便继续操作。

注意

在 Linux 实例上,使用适用于每个实例类型的程序包管理器来安装程序包:

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

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

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

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

注意

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

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

AWS-RunPatchBaselineAssociation 参数

AWS-RunPatchBaselineAssociation 支持四个参数。这些区域有:OperationAssociationId 参数是必需的。这些区域有:InstallOverrideList, RebootOption, 和 BaselineTags 参数是可选的。

参数名称:Operation

用法:必填项。

选项Scan | Install.

Scan

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

安装

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

注意

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

参数名称:BaselineTags

用法:可选。

BaselineTags 是您选择并分配给单个自定义补丁基准的唯一标签键值对。您可以为此参数指定一个或多个值。以下两种格式均有效:

Key=tag-key,Values=tag-value

Key=tag-key,Values=tag-value1,tag-value2,tag-value3

这些区域有:BaselineTags 值由 Patch Manager 用于确保在单个操作中修补的一组实例都具有完全相同的一组已批准补丁。 当修补操作运行时,Patch Manager 将检查以了解操作系统类型的补丁基准是否使用您为 BaselineTags 指定的相同键值对进行标记。 如果存在匹配项,则将使用此自定义补丁基准。如果没有匹配项,将根据为修补操作指定的任何修补程序组标识修补程序基准。如果没有,则使用该操作系统的 AWS 预定义补丁基准。

注意

您不需要使用此键/值对标记实例。

参数名称:AssociationId

用法:必填项。

AssociationId 是现有状态管理器关联的 ID。它由 Patch Manager 用来将合规性数据添加到指定的关联。通过将修补结果作为关联合规性数据而不是清单合规性数据发送,实例的现有清单合规性信息在修补操作后不会被覆盖,也不会被其他关联 IDs 覆盖。 如果您还没有要使用的关联,可以通过运行 create-association 命令创建一个。例如:

Linux
aws ssm create-association \ --name "AWS-RunPatchBaselineAssociation" \ --association-name "MyPatchAssociation" \ --targets "Key=instanceids,Values=[i-02573cafcfEXAMPLE,i-07782c72faEXAMPLE,i-07782c72faEXAMPLE]" \ --parameters "Operation=Scan" \ --schedule-expression "cron(0 */30 * * * ? *)" \ --sync-compliance "MANUAL" \ --region us-east-2
Windows
aws ssm create-association ^ --name "AWS-RunPatchBaselineAssociation" ^ --association-name "MyPatchAssociation" ^ --targets "Key=instanceids,Values=[i-02573cafcfEXAMPLE,i-07782c72faEXAMPLE,i-07782c72faEXAMPLE]" ^ --parameters "Operation=Scan" ^ --schedule-expression "cron(0 */30 * * * ? *)" ^ --sync-compliance "MANUAL" ^ --region us-east-2

参数名称:InstallOverrideList

用法:可选。

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

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

有效的 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 格式验证程序”。

  • Microsoft Windows

    id

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

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

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

其他字段

您在 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*'
  • 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 安装了新补丁,或者如果它在 INSTALLED_PENDING_REBOOT 操作期间检测到任何状态为 Install 的补丁,则会重启实例。INSTALLED_PENDING_REBOOT 状态可能意味着上次运行 Install 操作时选择了 NoReboot 选项。(安装在 Patch Manager 外部的补丁不会具备 INSTALLED_PENDING_REBOOT 状态。)

注意

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

NoReboot

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

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

重要

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

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

  • Linux 操作系统:/var/log/amazon/ssm/patch-configuration/patch-states-configuration.json

  • Windows Server 操作系统: C:\ProgramData\Amazon\PatchBaselineOperations\State\PatchStatesConfiguration.json