关于 AWS 运行补丁程序基准关联 SSM 文档 - AWS Systems Manager
AWS 文档中描述的 AWS 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 AWS 服务入门

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

关于 AWS 运行补丁程序基准关联 SSM 文档

类似于AWS-RunPatchBaseline文档,AWS-RunPatchBaselineAssociation对实例执行修补操作以执行安全相关更新和其他类型的更新。您也可以使用文档AWS-RunPatchBaselineAssociation为操作系统和应用程序应用补丁。(打开 Windows Server,应用程序支持仅限于 Microsoft 应用程序的更新。)

注意

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

本文档支持 Linux 的 Amazon Elastic Compute Cloud (Amazon EC2) 实例,macOS, 和 Windows Server。 此文档将为每个平台执行适当的操作,在 Linux 上调用 Python 模块,macOS 实例以及 Windows 实例上的 PowerShell 模块。

AWS-RunPatchBaselineAssociation,但是,不同于AWS-RunPatchBaseline通过以下方式:

  • 当您使用AWS-RunPatchBaselineAssociation文档中,您可以在文档的BaselineTags参数字段。如果您账户中的自定义补丁基线共享这些标签,则 AWS Systems Manager 的一项功能补丁管理器将在目标实例上运行时使用该标记的基准,而不是当前为操作系统类型指定的 “默认” 修补程序基准。

    以下两种格式都适用于BaselineTags参数:

    Key=tag-key,Values=tag-value

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

  • 何时AWS-RunPatchBaselineAssociation运行时,它收集的修补程序合规性数据将使用PutComplianceItemsAPI 命令而不是PutInventory命令,该命令由AWS-RunPatchBaseline。这种差异意味着每个特定的关联。在此关联之外生成的修补程序合规性数据不会被覆盖。

  • 运行后报告的修补程序合规性信息AWS-RunPatchBaselineAssociation指示实例是否符合规定。它不包括补丁级别的详细信息,如以下 AWS Command Line Interface (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"
            }
        ]
    }

如果已将标签 key pair 值指定为AWS-RunPatchBaselineAssociation文档中,修补程序管理器会搜索与操作系统类型匹配且已使用相同标签密钥对进行标记的自定义修补程序基线。此搜索不限于当前指定的默认补丁程序基线或分配给补丁程序组的基线。如果未找到具有指定标记的基线,则修补程序管理器接下来会查找修补程序组(如果在运行AWS-RunPatchBaselineAssociation。如果没有匹配的修补程序组,则修补程序管理器会回退到操作系统帐户的当前默认修补程序基准。

如果找到多个修补程序基线,其中包含AWS-RunPatchBaselineAssociation文档中,修补程序管理器将返回一条错误消息,指示只能使用该键值对标记一个修补程序基线,以便继续执行该操作。

注意

在 Linux 实例上,每种实例类型的相应软件包管理器用于安装软件包:

  • Amazon Linux、Amazon Linux 2、CentOS、Oracle Linux、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 或更高版本。

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

注意

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

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

AWS-RunPatchBaseline 关联参数

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

参数名称: Operation

用量:必填项。

选项Scan|Install

Scan

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

安装

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

注意

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

参数名称: BaselineTags

用量:可选。

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

Key=tag-key,Values=tag-value

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

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

注意

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

参数名称: AssociationId

用量:必填项。

AssociationId是状态管理器中现有关联的 ID(AWS Systems Manager 的一种功能)。修补程序管理器使用它将合规性数据添加到指定的关联。通过将修补结果作为关联合规性数据而不是库存合规性数据发送,您的实例的现有库存合规性信息在修补操作后不会被覆盖,也不会覆盖其他关联 ID。如果还没有要使用的关联,可以通过运行创建关联命令。例如:

Linux & macOS
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 知识库 ID(例如 KB2736693)和 Microsoft 安全公告 ID(例如 MS17-023)指定补丁。

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

  • Linux

    id

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

    title

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

    YM/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 安装了新补丁,或者如果它在 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 也不会重启实例。如果您知道您的实例在应用修补程序后不需要重启,或者您的应用程序或进程在实例上运行,但不应因修补操作重启而中断,则此选项非常有用。当您希望更多地控制实例重启的时间(例如,使用维护时段)时,该选项也很有用。

修补程序安装跟踪文件:为了跟踪补丁安装,特别是自上次重启系统以来安装的补丁,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