为什么我的实例在 Systems Manager 合规性控制面板中显示为不合规?
上次更新日期:2021 年 6 月 8 日
我的 Amazon Elastic Compute Cloud (Amazon EC2) 实例在 AWS Systems Manager 合规性控制面板中显示为不合规。此问题是什么原因导致的?
简短描述
Systems Manager 合规性功能为托管实例队列提供合规性数据。将托管实例的合规性状态确定为合规还是不合规,主要基于以下因素:
- 补丁管理器补丁安装的状态
- 状态管理器关联的状态
- 自定义合规项目的状态(如果适用)
可以通过查看配置合规性报告,来确定实例的合规性状态。查看合规性报告时,请确定每个不合规实例的合规性类型。
- 合规性类型补丁表示由于补丁管理器补丁安装,实例不合规。
- 合规性类型关联表示由于状态管理器关联,实例不合规。
注意:在 Systems Manager 合规性开始报告合规性数据之前,必须满足开始使用合规性的先决条件。
解决方法
基于补丁管理器补丁安装状态的不合规性
实例可能会因为补丁管理器补丁安装显示为不合规,原因如下:
AWS-RunPatchBaseline 文档未在实例上运行
根据实例补丁基准文档设置批准使用补丁后,使用 Install (安装) 操作的 AWS-RunPatchBaseline 文档未在实例上运行。请按照以下步骤解决问题:
- 查看配置合规性报告。选择 Patch (补丁) 选项卡,然后查看 Patch Summary (补丁摘要)。如果 Updates Needed (所需更新) 不是 0,则您的实例不合规,因为必须安装一个或多个已批准的补丁。
- 要确定必须安装的补丁,请向下滚动,选择搜索栏,然后查找状态设置为 Missing (缺失) 的补丁。
注意:托管实例中的每个补丁都会分配到一个合规性状态值。该值决定了该实例的合规性状态。 - 在不合规实例上,运行使用 Install (安装) 操作的 AWS-RunPatchBaseline 文档。您可以使用补丁管理器控制台中的 Patch now (立即安装补丁) 选项,启动补丁安装操作。或者,您可以使用 Run Command 或作为维护时段的一部分运行 AWS-RunPatchBaseline 文档 。
AWS-RunPatchBaseline 文档已运行,但是一些已批准的补丁无法安装
在实例上运行使用 Install (安装) 操作的 AWS-RunPatchBaseline 文档。但是,由于实例的特定原因,某些已批准的补丁未能在实例上安装。请按照以下步骤确定特定于实例的问题:
- 查看配置合规性报告。选择 Patch (补丁) 选项卡,向下滚动,选择搜索栏,然后查找状态设置为 Failed (失败) 的补丁。
- 记下状态失败的补丁,然后使用 SSH 或会话管理器登录到实例。
- 查看实例中的 SSM Agen 日志和特定操作日志,确定任何特定于实例的问题。
基于 Linux 的实例:
/var/log/amazon/ssm/amazon-ssm-agent.log
/var/lib/amazon/ssm/InstanceID/document/orchestration/CommandID
基于 Windows 的实例:
%PROGRAMDATA%\Amazon\SSM\Logs\amazon-ssm-agent.log
%PROGRAMDATA%\Amazon\PatchBaselineOperations
注意:查找名为 Install-PatchBaselineOperation-date 的日志文件
注意:补丁管理器不提供补丁。补丁管理器通过使用适当的内置机制为每个操作系统 (OS) 协调补丁安装,以便在实例上安装更新。例如,补丁管理器通过 Windows Update 在运行 Microsoft Windows 的实例上安装补丁。同样,补丁管理器通过 yum 在运行 Amazon Linux 2 的实例上安装补丁。
AWS-RunPatchBaseline 文档已运行,但将 RebootOption 参数设置为 NoReboot
在实例上运行使用 Install (安装) 操作的 AWS-RunPatchBaseline 文档,并且所有已批准的补丁都已成功安装。但是,AWS-RunPatchBaseline 文档中的 RebootOption 参数设置为 NoReboot。请按照以下步骤解决问题:
- 查看配置合规性报告。选择 Patch (补丁) 选项卡,向下滚动,选择搜索栏,然后查找状态设置为 InstalledPendingReboot 的补丁。
注意:InstalledPendingReboot 状态使实例处于不合规状态,除非重启和扫描实例。 - 重启实例。
- 扫描实例并验证实例在 Systems Manager 合规性控制面板中是否显示为合规。
AWS-RunPatchBaseline 文档已运行,但实例上存在一些被拒绝的补丁
在实例上运行使用 Install (安装) 操作的 AWS-RunPatchBaseline 文档,并且所有已批准的补丁都已成功安装。但是,实例上也存在一些被拒绝的补丁。请按照以下步骤解决问题:
- 查看配置合规性报告。请记下与不合规关联类型对应的关联 ID ,以备后用。
- 选择 Patch (补丁) 选项卡,向下滚动,选择搜索栏,然后查找状态设置为 InstalledRejected 的补丁。
注意:InstalledRejected 状态表示在添加到被拒绝补丁列表之前,已安装该补丁。 - 记下被拒绝的补丁,然后使用 SSH 或会话管理器登录到实例。
- 删除所有被拒绝的补丁。
基于状态管理器关联的不合规
创建 Systems Manager 状态管理器关联后,将为实例定义配置状态。如果未保持该状态,则 Systems Manager 合规性控制面板会将实例报告为不合规。请按照以下步骤解决问题:
- 查看配置合规性报告。 请记下与不合规关联类型对应的关联 ID,以备后用。
- 在 Systems Manager 控制台中,查看关联历史记录。
- 查看输出,了解关联失败的原因。有关更多信息,请参阅如何对失败或卡在待处理状态的 State Manager 关联进行故障排除?
AWS-GatherSoftwareInventory 文档问题
如果您的实例由于运行 AWS-GatherSoftwareInventory 文档出现问题而导致不合规,请对 Systems Manager 清单的常见问题进行故障排除。