用于修补的 SSM 命令文档:AWS-RunPatchBaseline
Amazon Systems Manager 支持 AWS-RunPatchBaseline,这是Patch Manager(Amazon Systems Manager 中的一项工具)的 Systems Manager 文档(SSM 文档)。此 SSM 文档在托管式节点上为安全性相关更新和其他类型的更新执行修补操作。运行文档时,如果未指定补丁组,则使用为操作系统类型指定的“默认”的补丁基准。否则,它将使用与补丁组关联的补丁基准。有关补丁组的信息,请参阅 补丁组。
您可以使用文档 AWS-RunPatchBaseline 为操作系统和应用程序应用补丁。(在 Windows Server 上,应用程序支持仅限于更新 Microsoft 发布的应用程序。)
本文档支持 Linux、macOS和 Windows Server 托管式节点。此文档将为每个平台执行适当的操作。
注意
Patch Manager 还支持传统 SSM 文档 AWS-ApplyPatchBaseline。但是,此文档仅支持在 Windows 托管式节点上进行修补。建议改用 AWS-RunPatchBaseline,因为其同时支持在 Linux、macOS 和 Windows Server 托管式节点上进行修补。要使用 AWS-RunPatchBaseline 文档,需要版本 2.0.834.0 或 SSM Agent 的更高版本。
每个快照都专用于一个 Amazon Web Services 账户、补丁组、操作系统和快照 ID。快照通过预签名的 Amazon Simple Storage Service (Amazon S3) URL 传送,该 URL 在快照创建 24 小时后过期。但是,在 URL 过期后,如果要将相同的快照内容应用于其他托管式节点,您可以在创建快照后最久 3 天内生成新的预签名 Amazon S3 URL。为此,请使用 get-deployable-patch-snapshot-for-instance 命令。
安装完所有已批准和适用的更新后,根据需要执行重启,然后在托管式节点上生成补丁合规性信息,并向 Patch Manager 报告。
注意
如果在 AWS-RunPatchBaseline 文档中将 RebootOption 参数设置为 NoReboot,在 Patch Manager 运行后不会重启托管式节点。有关更多信息,请参阅 参数名称: RebootOption。
有关查看补丁合规性数据的信息,请参阅 关于补丁合规性。
AWS-RunPatchBaseline 参数
AWS-RunPatchBaseline 支持六个参数。Operation 参数是必需的。InstallOverrideList 、 BaselineOverride 和 RebootOption 参数是可选的。从技术上讲,Snapshot-ID 是可选的,但我们建议在维护时段之外运行 AWS-RunPatchBaseline 时为其提供一个自定义值,而在维护时段操作中运行此文档时,让 Patch Manager 自动提供该值。
参数
参数名称: Operation
用法:必需。
选项:Scan | Install。
- Scan
-
选择
Scan选项时,AWS-RunPatchBaseline确定托管式节点的补丁合规性状态并向 Patch Manager 报告此信息。Scan不提示要安装的更新或要重启的托管式节点。相反,该操作会标识哪些地方缺少已批准并且适用于节点的更新。 - 安装
-
选择
Install选项时,AWS-RunPatchBaseline会尝试安装托管式节点中缺失并已批准的适用更新。在Install操作中生成的补丁合规性信息不会列出任何缺失的更新。但是,如果更新的安装因任何原因失败,它会报告处于失败状态的更新。一旦在托管式节点上安装了更新,就一定会重启节点,以确保正常安装和激活更新。(例外:如果将AWS-RunPatchBaseline文档中的RebootOption参数设置为NoReboot,则在 Patch Manager 运行后不会重启托管式节点。有关更多信息,请参阅 参数名称: RebootOption。)注意
如果在 Patch Manager 更新托管式节点之前安装了基准规则指定的补丁,则系统可能无法按预期重启。当补丁是由用户手动安装或由其他程序(例如
unattended-upgrades上的 Ubuntu Server 程序包)自动安装时,可能会发生这种情况。
参数名称: AssociationId
用法:可选。
AssociationId 是State Manager(Amazon Systems Manager 中的一项工具)中现有关联的 ID。Patch Manager 使用它来将合规性数据添加到指定的关联上。此关联与在 Quick Setup 的补丁策略中设置的修补操作有关。
注意
使用 AWS-RunPatchBaseline 时,如果在补丁策略基准覆盖的同时提供了一个 AssociationId 值,系统将以 PatchPolicy 操作来完成修补,AWS:ComplianceItem 中报告的 ExecutionType 值也是 PatchPolicy。如果未提供任何 AssociationId 值,系统将以 Command 操作来完成修补,提交的 AWS:ComplianceItem 中报告的 ExecutionType 值也是 Command。
如果您还没有要使用的关联,可以通过运行 create-association 命令来创建关联。
参数名称: Snapshot ID
用法:可选。
Snapshot ID 是 Patch Manager 使用的唯一 ID (GUID),用于确保在单一操作中修补的一组托管式节点均具有完全相同的一组已批准补丁。尽管它定义为可选参数,根据是否在维护时段中运行 AWS-RunPatchBaseline,我们还是提供了不同的最佳实践建议,如下表所述。
| Mode | 最佳实践 | 详细信息 |
|---|---|---|
正在维护时段内运行 AWS-RunPatchBaseline |
不要提供快照 ID,Patch Manager 将为您提供。 |
如果使用维护时段运行 如果在这种情况下您指定值,请注意,补丁基准的快照最多保留 3 天。之后,即使您在快照到期后指定相同的 ID,也将生成新的快照。 |
正在在维护时段以外运行 AWS-RunPatchBaseline |
为快照 ID¹ 生成和指定自定义 GUID 值。 |
如果您不使用维护时段运行 例如,假设您正在直接通过 Run Command(Amazon Systems Manager 中的一项工具)运行 |
|
¹ 您可以使用任何能够生成 GUID 的工具为快照 ID 参数生成值。例如,在 PowerShell 中,可以使用 |
||
参数名称: InstallOverrideList
用法:可选。
使用 InstallOverrideList,可以指定一个到要安装的补丁列表的 https URL 或 Amazon S3 路径样式 URL。此补丁安装列表(以 YAML 格式维护)会覆盖当前的默认补丁基准指定的补丁。这样,您可以更精细地控制在托管式节点上安装哪些补丁。
重要
InstallOverrideList 文件名不能包含以下字符:反引号 (`)、单引号 (')、双引号 (") 和美元符号 ($)。
使用 InstallOverrideList 参数时的修补操作行为在 Linux 和 macOS 托管式节点以及 Windows Server 托管式节点之间有所不同。在 Linux 和 macOS 上,Patch Manager 尝试应用 InstallOverrideList 补丁列表中包含的补丁(存在于节点上启用的任何存储库中),无论补丁是否符合补丁基准规则。不过,在 Windows Server 节点上,只有当 InstallOverrideList 补丁列表中的补丁也符合补丁基准规则时,才会应用补丁列表中的补丁。
请注意,合规性根据补丁基准中指定的内容而不是您在补丁的 InstallOverrideList 列表中指定的内容反映补丁状态。也就是说,Scan 操作会忽略 InstallOverrideList 参数。这是为了确保合规性报告根据策略而不是针对特定修补操作批准的内容持续反映补丁状态。
注意
当您修补仅使用 IPv6 的节点时,请确保提供的 URL 可从该节点访问。如果将 SSM Agent 配置选项 UseDualStackEndpoint 设置为 true,则在提供 S3 URL 时将使用双堆栈 S3 客户端。有关将代理配置为使用双堆栈的更多信息,请参阅 教程:在仅支持 IPv6 的环境中修补服务器。
有关如何使用 InstallOverrideList 参数按不同维护时段计划将不同类型的补丁应用到目标组,同时仍使用单个补丁基准的说明,请参阅 在 AWS-RunPatchBaseline 或 AWS-RunPatchBaselineAssociation 中使用 InstallOverrideList 参数的示例场景。
有效的 URL 格式
注意
如果您的文件存储在公开可用的存储桶中,您可以指定 https URL 格式或 Amazon S3 路径样式的 URL。如果您的文件存储在私有存储桶中,则必须指定 Amazon S3 路径样式的 URL。
-
https URL 格式:
https://s3.aws-api-domain/amzn-s3-demo-bucket/my-windows-override-list.yaml -
Amazon S3 路径样式 URL:
s3://amzn-s3-demo-bucket/my-windows-override-list.yaml
有效的 YAML 内容格式
用于在列表中指定补丁的格式取决于托管式节点的操作系统。但是,一般格式如下所示:
patches: - id: '{patch-d}' title: '{patch-title}' {additional-fields}:{values}
尽管可以在 YAML 中提供额外字段,但是补丁操作会将其忽略。
此外,建议在 S3 存储桶中添加或更新列表之前验证 YAML 文件格式是否有效。有关 YAML 格式的更多信息,请参阅 yaml.org
示例补丁列表
-
Amazon Linux 2
patches: - id: 'kernel.x86_64' - id: 'bind*.x86_64' title: '39.11.4-26.P2.amzn2.5.2' id: 'glibc*' - id: 'dhclient*' title: '*4.2.5-58.amzn2' - id: 'dhcp*' title: '*4.2.5-77.amzn2' -
Debian 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' -
macOS
patches: - id: 'XProtectPlistConfigData' - id: 'MRTConfigData.1.61' - id: 'Command Line Tools for Xcode.11.5' - id: 'Gatekeeper Configuration Data' -
Oracle Linux
patches: - id: 'audit-libs.x86_64' title: '*2.8.5-4.el7' - id: 'curl.x86_64' title: '*.el7' - id: 'grub2.x86_64' title: 'grub2.x86_64:1:2.02-0.81.0.1.el7' - id: 'grub2.x86_64' title: 'grub2.x86_64:1:*-0.81.0.1.el7' -
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。务必为应用场景选择正确的选项。例如,如果您的托管式节点必须立即重启才能完成配置过程,请选择 RebootIfNeeded。或者,如果您需要在计划的重启时间之前保持托管式节点可用,请选择 NoReboot。
重要
我们不建议使用 Patch Manager 在 Amazon EMR(原 Amazon Elastic MapReduce)中修补集群实例。特别是,不要为 RebootOption 参数选择 RebootIfNeeded 选项。(此选项在 SSM 命令文档中可用,用于修补 AWS-RunPatchBaseline、AWS-RunPatchBaselineAssociation 和 AWS-RunPatchBaselineWithHooks。)
使用 Patch Manager 进行修补的底层命令使用 yum 和 dnf 命令。因此,由于软件包的安装方式,这些操作会导致不兼容。有关在 Amazon EMR 集群上更新软件的首选方法的信息,请参阅《Amazon EMR Management Guide》中的 Using the default AMI for Amazon EMR。
- RebootIfNeeded
-
选择
RebootIfNeeded选项时,托管式节点将在以下任一情况下重启:-
Patch Manager 已安装一个或多个补丁。
Patch Manager 不评估补丁是否必需重启。即使补丁不需要重启,系统也会重启。
-
Patch Manager 检测
Install操作期间的一个或多个状态为INSTALLED_PENDING_REBOOT的补丁。INSTALLED_PENDING_REBOOT状态可能表示在上次运行Install操作时选择了选项NoReboot,或者是自上次重新启动托管式节点以来在 Patch Manager 外部安装了补丁。
在这两种情况下重启托管式节点,可确保从内存中刷新更新的软件包,并在所有操作系统中保持修补和重启行为一致。
-
- NoReboot
-
选择
NoReboot选项时,即使托管式节点在Install操作期间安装了补丁,Patch Manager 也不会重启托管式节点。如果您知道托管式节点在应用补丁后不需要重启,或者应用程序或进程在节点上运行,但不应因修补操作重启而中断,则此选项有用。当您希望更多地控制托管式节点的重启时间(例如,使用维护时段来控制)时,该选项也很有用。如果选择
NoReboot选项并安装了补丁,则会为该补丁分配状态InstalledPendingReboot。但托管式节点本身将被标记为Non-Compliant。重启并运行Scan操作后,托管式节点状态将更新为Compliant。重要
NoReboot选项仅阻止操作系统级别的重启,服务级别的重启仍可作为修补过程的一部分进行。例如,当 Docker 更新时,即使启用了NoReboot,Amazon Elastic Container Service 等依赖服务也可能会自动重启。要使关键服务不被中断,可考虑采取其他措施,例如暂时将实例从服务中删除或在维护时段内安排修补。
补丁安装跟踪文件:为跟踪补丁安装,特别是自上次系统重启以来安装的补丁,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
-
参数名称: BaselineOverride
用法:可选。
您可以在运行时使用 BaselineOverride 参数来定义修补首选项。此基准覆盖在 S3 存储桶中以 JSON 对象的形式进行维护。它确保修补操作使用的所提供的基准与主机的操作系统相匹配,而不是应用默认补丁基准中的规则
重要
BaselineOverride 文件名不能包含以下字符:反引号 (`)、单引号 (')、双引号 (") 和美元符号 ($)。
有关如何使用 BaselineOverride 参数的更多信息,请参阅 使用基准覆盖参数。
参数名称: StepTimeoutSeconds
用法:必需。
命令在被视为失败前将会运行的时间(以秒为单位),介于 1 至 36000 秒(10 小时)之间。