亚马逊AWS官方博客

使用 AWS Systems Manager Patch Manager 修补您的 Windows EC2 实例

Patch Manager 自动执行修补 Windows 和 Linux 托管实例的过程。 使用 AWS Systems Manager 的此功能扫描您的实例以查找缺失的补丁或扫描并安装缺失的补丁。 您可以使用 Amazon EC2 标签单独安装补丁或将补丁安装到大型实例组。

在本篇博文中,我将向您展示如何使用补丁基准来包含在补丁发布后几天内自动批准补丁的规则,以及查看已批准和拒绝的补丁列表。 我将演示如何利用补丁组来组织补丁实例。 例如,您可以为不同的环境/标记实例(例如开发、测试和生产)创建补丁组。 我将向您展示如何通过安排修补程序作为维护窗口任务运行来定期安装修补程序。 别担心,读完这篇博文,您将对下图中的内容有一个很好的理解。

在这篇博文中,我将向您展示如何在控制台中运行 Patch Manager,然后介绍如何使用 CLI 命令来执行相同的操作。 要使用 AWS Systems Manager 控制台,您需要一个 AWS 账户,以便您可以利用可用的 AWS 服务。

在 AWS 管理控制台中,通过选择顶部菜单 (1) 上的服务打开 AWS Systems Manager 控制台,然后开始在搜索栏(2)中键入所需的服务控制台。

使用补丁基准

补丁基准定义了哪些补丁应该和不应该安装在您的实例上。 您可以单独指定批准或拒绝的补丁程序,也可以使用自动批准规则来指定某些类型的更新(例如,关键更新)应自动批准进行修补。

Patch Manager 有一个预定义的补丁基准,用于批准所有归类为关键更新或严重性为“关键”或“重要”的安全更新的补丁。 这些补丁在 Microsoft 发布 7 天后自动获得此基准的批准。

创建补丁基准

您可以创建自己的自定义补丁基准,在这里您可以使用以下类别选择要自动批准的补丁。

  • 操作系统:Windows、Amazon Linux、Ubuntu Server 等。
  • 产品名称:例如RHEL 6.5、Amazon Linux 2014.09、Windows Server 2012、Windows Server 2012 R2等。
  • 分类:例如关键更新、安全更新等。
  • 严重性:例如,关键、重要等。

对于您创建的每个自动批准规则,您可以指定自动批准延迟。 此延迟是在补丁发布后等待的天数,在补丁被自动批准打补丁之前。 例如,如果您使用“关键更新”分类创建规则并将其配置为 5 天自动批准延迟,则 1 月 1 日发布的新关键补丁将在 1 月 6 日自动获得批准。

将基准设置为默认值

默认情况下,Patch Manager 附带的预定义补丁基准被指定为默认补丁基准。 但是,您可以将自己的补丁基准指定为默认值。

多补丁方法

通过使用具有不同自动批准延迟的多个补丁基准,您可以以不同的速率将补丁部署到不同的实例。 例如,您可以为开发和生产环境创建单独的补丁基准和自动批准延迟。 这使您能够在将补丁部署到生产环境之前在开发环境中对其进行测试。 使用以下 CLI 命令:

aws ssm create-patch-baseline 
--name "Prod-WindowsServer2016-Critical-5Day" 
--approval-rules "PatchRules=[{PatchFilterGroup={PatchFilters=[{Key=MSRC_SEVERITY,Values=[Critical]},{Key=CLASSIFICATION,Values=[CriticalUpdates]}]},ApproveAfterDays=5}]" 
--description "Baseline containing all updates approved for production systems, wait 5 days"

补丁组

补丁组是一种可选方法,用于定义应将哪个补丁基准用于哪些实例。 例如,您可以为开发、测试和生产等不同环境创建补丁组。 您还可以创建主要和辅助故障转移群集分组。 可以根据服务器功能创建补丁组,例如 Web 服务器和数据库。 补丁组可以帮助您避免将补丁部署到错误的实例集。

打开 AWS Systems Manager 控制台后,从左侧菜单中选择 Patch Manager。 必须使用标签键 Patch Group 定义补丁组。 在下面的示例中,我们要作为补丁组修补的实例已被标记为前端服务器。 可以使用这种方法修补具有这些标签的一组实例。

CLI 命令:

aws ssm register-patch-baseline-for-patch-group 
--baseline-id pb-0d7e05e5964ca987c 
--patch-group "Front-End Servers"

维护窗口

AWS Systems Manager 维护时段让您可以定义何时对您的实例执行潜在的破坏性操作,例如修补操作系统 (OS)、更新驱动程序或安装软件。 每个维护时段都有一个时间表、一个持续时间、一组注册目标和一组注册任务。 通常,您希望在对您的组织影响最小的时候应用补丁。

  1. 在 AWS Systems Manager 控制台中,转到创建维护时段页面以创建包含修补操作计划的维护时段。

1)    持续时间:维护时段的持续时间(以小时为单位)。

2)   停止初始化任务(截止):在维护时段结束前,Systems Manager 停止调度新任务以执行的小时数。

CLI 命令:

aws ssm create-maintenance-window 
--name "Patch_Front-End-Servers" 
--schedule "cron(0 16 ? * TUE *)" 
--duration 4 
--cutoff 1 
  1. 在控制台的注册目标页面上,通过为标签名称指定补丁组标签以及您为其定义了 EC2 标签的任何值(在我们的示例中为前端服务器),为您的维护窗口创建注册目标。 您不必按补丁组定位,而是可以使用为您的实例定义的任何标签,完全独立于补丁组标签。 一个常见的用例是,您可能有一个可公开访问的 Web 服务器的补丁基准,用于所有面向 Internet 的 Web 服务器,但是您有许多不同的应用程序,因此您可能希望为其中一个应用程序的 Web 服务器创建一个目标。

CLI 命令:

aws ssm register-target-with-maintenance-window 
--window-id mw-0c66948c711a3b5bd 
--targets "Key=tag:Patch Group,Values=Front-End Servers" 
--owner-information "Production servers" 
--resource-type "INSTANCE"
  1. 在控制台的注册任务窗格中,执行以下任务。

1)       维护时段任务详细信息:添加、名称和描述。

2)      此任务的运行命令文档是 AWS-RunPatchBaseline。 您可以选择扫描实例或扫描并修补实例。 如果您选择扫描实例,则 Patch Manager 会扫描每个实例并生成缺失补丁列表供您查看。 请注意,AWS-RunPatchBaseline 是跨平台的,适用于 Windows 和 Linux。

3)      当注册多个任务时,填写要使用的文档版本和确定任务运行顺序的任务优先级。

4)     Windows 目标 ID 是前面定义的补丁组。

5)     对于速率控制:

  1.  并发:允许并行运行此任务的最大目标数。 您可以指定一个数字,例如 10,或一个百分比,例如 10%。 默认值为 10。
  2. .错误阈值:在系统停止在其他目标上运行自动化之前允许的错误数。 您可以指定错误的绝对数量,例如 10,也可以指定目标集的百分比,例如 10%。

6)     附加了 AmazonSSMMaintenanceWindowRole 策略的 IAM 角色,用于对注册的目标执行修补。 有关如何为维护时段配置角色的指南,请参阅以下链接

7)     输入参数:这些是在步骤 2 中传递给所选运行命令文档的参数。

CLI 命令:

aws ssm register-task-with-maintenance-window 
--window-id mw-0c66948c711a3b5bd 
--targets "Key=tag:Patch Group,Values=Front-End Servers"
--task-arn "AWS-RunPatchBaseline" 
--service-role-arn "arn:aws:iam::12345678:role/MW-Role" 
--task-type "RUN_COMMAND" 
--max-concurrency 2 
--max-errors 1 
--priority 1 
--task-parameters '{\"Operation\":{\"Values\":[\"Scan\"]}}'

监控补丁合规性

您可以通过选择清单选项卡并按 AWS:PatchSummary 和 AWS:PatchCompliance 进行筛选,在托管实例页面上查看结果和补丁合规性详细信息。 请注意,配置合规性部分提供了补丁合规性的汇总高级视图,您可以从中深入了解合规性细节。 您还可以通过选择实例然后选择补丁选项卡来查看特定实例。

 

总结

在本篇博文中,我介绍了使用 AWS Systems Manager Patch Manager 的一些关键内容。 我首先向您展示了如何创建一个补丁基准,该基准定义应该和不应该在您的实例上安装哪些补丁。 在您定义基准后,我向您展示了如何控制这些基线部署到不同环境(例如开发、测试和生产)的补丁组。 最后,我向您展示了如何通过使用维护窗口和安排补丁的推出来最大限度地减少对您的组织的影响。

我强烈建议您使用您在此处学到的知识,并考虑在您自己的组织中利用 AWS Systems Manager 资源。 您可以首先在组织的一小部分中使用 Patch Manager 来向您的同行展示概念证明。我期待聆听您的意见或问题。

 

本篇作者

Stefan Minhas

Stefan Minhas 是 Amazon Web Services 的高级顾问。 他是全球 Microsoft 专业实践领域的主题专家,致力于在更广泛的专业服务社区中为专业技能的发展和成长提供指导和技术援助。

校译作者

Jerry Yuen

亚马逊云科技解决方案架构师,负责基于亚马逊云科技的方案咨询,设计和架构评估。在运维,DevOps方面有丰富的经验,目前侧重于运管理和治理。