Amazon EC2 Systems Manager
用户指南
AWS 服务或AWS文档中描述的功能,可能因地区/位置而异。点 击 Getting Started with Amazon AWS to see specific differences applicable to the China (Beijing) Region.

使用 Patch Manager

要使用 Patch Manager,请完成以下任务。此部分更详细地说明了这些任务。

  1. 验证默认补丁基准是否满足您的需求,或创建为您的实例定义一组标准补丁的补丁基准。

  2. 使用 Amazon EC2 标签将实例组织到补丁组中 (可选,但不建议)。

  3. 使用定义要修补的实例以及修补这些实例的时间的维护时段来计划修补。

  4. 监视修补以验证合规性和调查故障。

步骤 1:验证默认补丁基准或创建补丁基准

补丁基准定义批准在您的实例上安装的补丁。您可以单独指定批准或拒绝的补丁。您还可以创建自动批准规则,指定应自动批准的某些更新类型 (例如重要更新)。如果您将补丁显式标识为 rejected,即使它匹配自动批准规则中的所有条件,也不会被批准或安装。此外,即使补丁被批准用于某个实例,只有它适用于该实例上的软件时,才能安装补丁。

Patch Manager 为 Patch Manager 支持的每个操作系统预定义了补丁基准。下表介绍了每个预定义的补丁基准:

Name 支持的产品 详细信息

AWS-DefaultPatchBaseline

Windows (Windows Server 2008 – 2016)

在发布 7 天后批准分类为“重要更新”或“安全更新”且 MSRC 严重性为“关键”或“重要”的所有操作系统补丁。

AWS-AmazonLinuxDefaultPatchBaseline

Amazon Linux (2012.03 – 2017.09)

在发布 7 天后批准分类为“安全”且严重性为“关键”或“重要”的所有操作系统补丁。在发布 7 天后批准分类为“缺陷修正”的所有补丁

AWS-UbuntuDefaultPatchBaseline

Ubuntu (14.04/16.04)

在发布 7 天后批准优先级为“必需”或“重要”的所有操作系统安全相关补丁。

AWS-RedHatDefaultPatchBaseline

Redhat Enterprise Linux (6.5、6.6、6.7、6.8、6.9、7.0、7.1、7.2、7.3)

在发布 7 天后批准分类为“安全”且严重性为“关键”或“重要”的所有操作系统补丁。在发布 7 天后批准分类为“缺陷修正”的所有补丁。

您可以按照这些基准的当前配置使用这些基准 (您不能对其进行自定义),或者,如果您想更好地控制批准或拒绝将哪些补丁用于您的环境,则可创建自己的补丁基准。

如果您创建自己的补丁基准,则可使用以下类别选择自动批准哪些补丁。

  • 操作系统:Windows、Amazon Linux、Ubuntu 等。

  • 产品名称:例如,RHEL 6.5、Amazon Linux 2014.09、Windows Server 2012、Windows Server 2012 R2 等。

  • 分类:例如,关键更新、安全更新等

  • 严重性:例如,关键、重要等

对于您创建的每个自动批准规则,可指定自动批准延迟。此延迟是发布补丁后到自动批准补丁用于修补前等待的天数。例如,如果您使用关键更新分类创建一条规则并将其自动批准延迟配置为 7 天,则将在 1 月 14 日自动批准 1 月 7 日发布的新关键补丁。

注意

如果 Linux 存储库不提供程序包的发布日期信息,Systems Manager 会将自动批准延迟的值视为零。

您还可以指定合规性严重性级别。如果经批准的补丁报告为缺失,则 Compliance Level 是违反合规性的严重性。

通过使用多个带不同的自动批准延迟的补丁基准,您可以不同的速率将补丁部署到不同的实例。例如,您可以为开发环境和生产环境创建单独的补丁基准和自动批准延迟。这使您能够先在开发环境中测试补丁,然后再在生产环境中部署这些补丁。

创建补丁基准时,请记住以下信息:

  • Patch Manager 为每个受支持的操作系统提供默认补丁基准。您还可以创建自己的补丁基准并将其指定为相应操作系统的默认补丁基准。

  • 对于本地或非 Amazon EC2 实例,Patch Manager 将尝试使用您的自定义默认补丁基准。如果不存在自定义默认补丁基准,系统将使用相应操作系统的预定义补丁基准。

  • 如果某个补丁在相同的补丁基准中同时被列为已批准和已拒绝,则该补丁将被拒绝。

  • 一个实例只能定义一个补丁基准。

  • 在为 Amazon Linux 和 RHEL 创建补丁基准时,如果您指定 Approved Patches,注意 Systems Manager 支持 Bugzilla ID、CVE ID、Advisory ID 和软件包名称通配符。如果您指定 Rejected Patches,则 Systems Manager 仅支持软件包名称通配符。

要查看如何使用 Amazon EC2 控制台或 AWS CLI 创建补丁基准的示例,请参阅 Systems Manager Patch Manager 演练

Windows 和 Linux 修补之间的重要区别

下表介绍了 Windows 和 Linux 修补之间的重要区别。

区别 详细信息

补丁评估

Patch Manager 使用不同的流程评估应该在 Windows 托管实例和 Linux 托管实例上出现的补丁。对于 Windows 修补,Systems Manager 直接在服务中评估补丁基准规则以及批准和拒绝的补丁列表。它可以执行此操作是因为 Windows 补丁从单个存储库 (Windows 更新) 拉取。

对于 Linux 修补,Systems Manager 在每个托管实例中评估补丁基准规则以及批准和拒绝的补丁列表。Systems Manager 必须在每个实例上评估修补,因为该服务从实例上配置的存储库检索已知补丁和更新列表。

不适用的补丁

由于 Linux 操作系统有大量可用的软件包,因此 Systems Manager 不报告处于不适用状态的补丁的详细信息。例如,当实例未安装 Apache 时,Apache 软件的补丁就是不适用的补丁。Systems Manager 会在摘要中报告不适用的补丁数量,但是如果您调用实例的 DescribeInstancePatches API,则返回的数据不包括处于不适用状态的补丁。这一行为不同于 Windows。

注意

另请注意 Linux 修补的以下更改和要求:

  • 要修补 Linux 实例,您的实例必须运行 SSM 代理 2.0.834.0 版或更高版本。有关更新此代理的信息,请参阅 从 EC2 控制台执行命令 中标题为示例:更新 SSM 代理的部分。

  • AWS-ApplyPatchBaseline SSM 文档将替换为 AWS-RunPatchBaseline 文档。

步骤 2:将实例组织到补丁组中

补丁组 是一种组织实例以进行修补的可选方法。例如,您可以为不同操作系统 (Linux 或 Windows)、不同环境 (开发、测试和生产) 或不同服务器功能 (Web 服务器、文件服务器、数据库) 创建补丁组。补丁组可以帮助您避免将补丁部署到一组错误的实例。它们还可帮助您避免过早地部署补丁 (在对补丁进行充分测试之前)。

您可以使用 Amazon EC2 标签创建补丁组。与其他跨 Systems Manager 的标记方案不同,必须使用此标签键定义补丁组:补丁组。请注意,此键区分大小写。您可以指定任何值,例如“Web 服务器”,但键必须为补丁组

注意

一个实例只能在一个补丁组中。

创建补丁组和标记实例后,可以将补丁组注册到补丁基准。通过将补丁组注册到补丁基准,您可以确保在修补执行期间安装正确的补丁。

当系统执行将补丁基准应用于实例的任务时,服务将检查以了解是否为该实例定义了补丁组。如果该实例已分配给一个补丁组,则系统将检查以了解已将哪个补丁基准注册到该组。如果找到了该组的补丁基准,则系统将应用此补丁基准。如果没有为补丁组配置实例,系统将自动使用当前配置的默认补丁基准。

例如,假设使用键“补丁组”和值“前端服务器”标记了一个实例。当 Patch Manager 在该实例上执行 AWS-AWS-RunPatchBaseline 任务时,此服务将检查以了解哪个补丁基准已注册到前端服务器。如果找到一个补丁基准,系统将使用该基准。如果未为前端服务器注册补丁基准,系统将使用默认补丁基准。

要查看如何使用 AWS CLI 创建补丁基准和补丁组的示例,请参阅Systems Manager Patch Manager 演练。有关 Amazon EC2 标签的更多信息,请参阅 Amazon EC2 用户指南 中的标记 Amazon EC2 资源

步骤 3:使用维护时段计划补丁更新

配置补丁基准 (可以选择补丁组) 后,您可以使用维护时段将补丁应用于您的实例。维护时段通过让您指定在不中断业务运营的时间执行修补流程,可以减少对服务器可用性的影响。维护时段的操作如下:

  1. 创建带修补操作计划的维护时段。

  2. 通过为标签名称指定补丁组标签并指定已定义 Amazon EC2 标签的任意值 (例如,“生产服务器”),来选择维护时段的目标。

  3. 创建新的维护时段任务,并指定 AWS-RunPatchBaseline 文档。

在配置任务时,可以选择扫描实例或扫描并修补实例。如果选择扫描实例,则 Patch Manager 将扫描每个实例并生成缺失补丁的列表以供您审查。

如果选择扫描并修补实例,则 Patch Manager 将扫描每个实例并将已安装补丁的列表与基准中已批准补丁的列表进行比较。Patch Manager 将标识缺失的补丁,然后下载并安装所有缺失的补丁和已批准的补丁。

如果您希望执行一次性扫描或安装来解决问题,可以使用 Run Command 直接调用 AWS-RunPatchBaseline 文档。

重要

在安装补丁后,Systems Manager 重启每个实例。需要重启才能确保正确安装补丁,并确保系统不会使实例处于潜在的不良状态。

要查看如何创建补丁基准、补丁组和维护时段的示例,请参阅 Systems Manager Patch Manager 演练。有关维护时段的更多信息,请参阅Systems Manager 维护时段

步骤 4:监视补丁合规性

完成维护时段任务后,您可以在 Amazon EC2 控制台中或使用 Systems Manager API 查看结果和补丁合规性详细信息。您可以查看每个实例的合规性详细信息的聚合。此聚合视图包括总体合规性状态、上次扫描日期、安装的补丁数和缺失的补丁数等详细信息。您可以基于每个实例查看此信息,以查看有关特定补丁的详细信息。每个补丁的结果将显示下列状态之一。

  • Installed:补丁已安装,或者在实例上运行 AWS-RunPatchBaseline 文档时 Patch Manager 安装了补丁。

  • Installed_Other:补丁不在基准中,但已安装在实例上。某人可能已手动安装补丁。

  • Missing:基准中已批准补丁,但实例上未安装补丁。如果将 AWS-RunPatchBaseline 文档任务配置为扫描 (而不是安装),系统将为扫描期间找到但未安装的补丁报告此状态。

  • Not_Applicable:基准中已批准补丁,但实例上未安装使用补丁的服务或功能。例如,如果基准中已批准 Web 服务器服务的补丁,但实例上未安装该 Web 服务,则补丁将显示“Not_Applicable”。

  • Failed:基准中已批准补丁,但无法安装补丁。要解决此问题,请查看命令输出中是否有可帮助您理解此问题的信息。

您可以在 Managed Instances 页面上的 Amazon EC2 控制台中查看补丁合规性详细信息。在筛选栏中,使用 AWS: PatchSummaryAWS: PatchCompliance 筛选器。您还可以在 Managed Instances 页面中选择一个特定实例,然后选择 Patch 选项卡来查看此实例。您也可以使用 DescribePatchGroupStateDescribeInstancePatchStatesForPatchGroup API 来查看合规性详细信息。

DescribePatchGroupState 将返回补丁组的高级聚合补丁合规性信息,如以下示例所示。

Copy
{ "InstancesWithNotApplicablePatches":0, "InstancesWithMissingPatches":0, "InstancesWithFailedPatches":1, "InstancesWithInstalledOtherPatches":4, "Instances":4, "InstancesWithInstalledPatches":3 }

DescribeInstancePatchStatesForPatchGroup 将返回指定补丁组中的实例的高级补丁状态,如以下示例所示。

Copy
{ "InstancePatchStates":[ { "OperationStartTime":1481259600.0, "FailedCount":0, "InstanceId":"i-08ee91c0b17045407", "OwnerInformation":"", "NotApplicableCount":2077, "OperationEndTime":1481259757.0, "PatchGroup":"Production", "InstalledOtherCount":186, "MissingCount":7, "SnapshotId":"b0e65479-79be-4288-9f88-81c96bc3ed5e", "Operation":"Scan", "InstalledCount":72 }, { "OperationStartTime":1481259602.0, "FailedCount":0, "InstanceId":"i-0fff3aab684d01b23", "OwnerInformation":"", "NotApplicableCount":2692, "OperationEndTime":1481259613.0, "PatchGroup":"Production", "InstalledOtherCount":3, "MissingCount":1, "SnapshotId":"b0e65479-79be-4288-9f88-81c96bc3ed5e", "Operation":"Scan", "InstalledCount":1 }, { "OperationStartTime":1481259547.0, "FailedCount":0, "InstanceId":"i-0a00def7faa94f1dc", "OwnerInformation":"", "NotApplicableCount":1859, "OperationEndTime":1481259592.0, "PatchGroup":"Production", "InstalledOtherCount":116, "MissingCount":1, "SnapshotId":"b0e65479-79be-4288-9f88-81c96bc3ed5e", "Operation":"Scan", "InstalledCount":110 }, { "OperationStartTime":1481259549.0, "FailedCount":0, "InstanceId":"i-09a618aec652973a9", "OwnerInformation":"", "NotApplicableCount":1637, "OperationEndTime":1481259837.0, "PatchGroup":"Production", "InstalledOtherCount":388, "MissingCount":2, "SnapshotId":"b0e65479-79be-4288-9f88-81c96bc3ed5e", "Operation":"Scan", "InstalledCount":141 } ] }

要查看如何使用 AWS CLI 查看补丁合规性详细信息的示例,请参阅Systems Manager Patch Manager 演练