我的 Amazon Elastic Compute Cloud(Amazon EC2)实例在 AWS Systems Manager 合规性控制面板中显示为不合规。
简短描述
Systems Manager 合规性功能提供托管实例集的合规性数据。托管实例的合规性状态根据以下因素确定为合规或不合规:
- 补丁管理器修补的状态
- 状态管理器关联的状态
- 自定义合规性项目的状态(如适用)
若要确定实例的合规性状态,可以查看配置合规性报告。在查看合规性报告时,确定每个不合规实例的合规性类型。
- 合规性类型补丁表示,由于补丁管理器修补操作,该实例处于不合规状态。
- 合规性类型关联表示,由于状态管理器关联,该实例处于不合规状态。
注意: 在 Systems Manager 合规性开始报告合规性数据之前,必须满足开始合规性报告的先决条件。
运行支持合规性的修补文档时,会更新实例的补丁合规性状态。以下 SSM 修补文档支持更新合规性状态:
可以使用快速设置功能或补丁管理器配置修补操作。
解决方法
基于补丁管理器修补状态的不合规
根据补丁管理器的修补操作,实例可能显示为不合规,原因如下:
修补文档未在实例上运行
根据实例补丁基准文档设置,补丁获得批准后,使用安装操作的补丁文档未在实例上运行。请按照以下步骤解决问题:
- 查看配置合规性报告。选择补丁选项卡,然后查看补丁摘要。如果需要的更新的值不是 0,则表明实例不合规,因为必须安装要一个或多个经批准的补丁。
- 若要确定必须安装的补丁,请向下滚动,选择搜索栏,然后寻找状态设置为缺失的补丁。
注意: 托管实例中的每个补丁都分配有一个合规性状态值。该值决定了该实例的合规性状态。
- 在不合规的实例上使用安装操作运行 AWS-RunPatchBaseline 文档。可以使用补丁管理器控制台中的立即修补选项开始修补操作。或者,也可以使用 Run Command 或在维护时段运行 AWS-RunPatchBaseline 文档。
**注意:**AWS-RunPatchBaseline 的默认设置会将自补丁发布之日起之后的 7 天设置为自动批准。您也可以为 Windows、macOS 和 Linux 创建自定义补丁基准。有关详细信息,请参阅使用自定义补丁基准。
补丁文档已运行,但某些已批准的补丁安装失败
在实例上运行了使用安装操作的 AWS-RunPatchBaseline 文档。但是,由于实例方面的原因,一些已批准的补丁在实例上安装失败。请按照以下步骤确定实例方面的问题:
- 查看配置合规性报告。选择补丁选项卡,向下滚动,选择搜索栏,然后寻找状态设置为失败的补丁。
- 记下失败的补丁,然后使用 SSH 或会话管理器登录实例。
- 查看实例中的 SSM Agent 日志和特定操作日志,以确定实例方面的问题。
基于 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 更新在运行 Microsoft Windows 的实例上安装补丁。同样,补丁管理器依靠 yum 来管理运行 Amazon Linux 2 的实例。
补丁文档已运行,但 RebootOption 参数设置为 NoReboot
使用安装操作的补丁文档在实例上运行了,所有已批准的补丁均已成功安装。但是,AWS-RunPatchBaseline 文档中的 RebootOption 参数设置为 NoReboot。请按照以下步骤解决问题:
- 查看配置合规性报告。选择补丁选项卡,向下滚动,选择搜索栏,然后寻找状态设置为 InstalledPendingReboot 的补丁。
注意: InstalledPendingReboot 状态会使实例处于不合规状态,直到实例被重启和扫描。
- 重启实例。
- 扫描实例并验证该实例在 Systems Manager 合规性控制面板中是否显示为合规。
补丁文档已运行,但实例上存在一些被拒绝的补丁
使用安装操作的补丁文档在实例上运行了,所有已批准的补丁均已成功安装。但是,实例上还存在一些被拒绝的补丁。请按照以下步骤解决问题:
- 查看配置合规性报告。记下与不合规关联类型对应的关联 ID 以供稍后使用。
- 选择补丁选项卡,向下滚动,选择搜索栏,然后寻找状态设置为 InstalledRejected 的补丁。
注意: InstalledRejected 状态表示补丁在被添加到被拒绝的补丁列表之前已经安装了。
- 记下被拒绝的补丁,然后使用 SSH 或会话管理器登录实例。
- 删除所有被拒绝的补丁。
补丁文档已运行,但失败了
补丁文档在实例上启动,但未能成功运行。如果补丁进程未在实例上成功运行,则该实例的合规性状态不会更新。
有关详细信息,请参阅在 Linux 上运行 AWS-RunPatchBaseline 时的错误和在 Windows Server 上运行 AWS-RunPatchBaseline 时的错误。
基于状态管理器关联状态的不合规
创建 Systems Manager 状态管理器关联时,会为该实例定义配置状态。如果未保持该状态,则 Systems Manager 合规性控制面板会将该实例报告为不合规。请按照以下步骤解决问题:
- 查看配置合规性报告。记下与不合规关联类型对应的关联 ID 以供稍后使用。
- 在 Systems Manager 控制台中,查看关联历史记录。
- 查看输出以了解关联失败的原因。有关详细信息,请参阅如何对处于“失败”或“待处理”状态的状态管理器关联进行故障排除?
AWS-GatherSoftwareInventory 文档问题
如果由于运行 AWS-GatherSoftwareInventory 文档时出现问题而导致实例不合规,请使用 Systems Manager 清单进行故障排除。
使用 AWS CloudTrail 监控合规性事件
在为自定义合规性对象或关联添加新的合规性信息时,会进行 PutComplianceItems API 调用。PutInventory API 调用会添加或更新清单项目(如果不存在)。
有关详细信息,请参阅使用 CloudTrail 记录 Systems Manager API 调用。