为什么我的实例在 Systems Manager 合规性控制面板中显示为不合规?

上次更新日期:2021 年 6 月 8 日

我的 Amazon Elastic Compute Cloud (Amazon EC2) 实例在 AWS Systems Manager 合规性控制面板中显示为不合规。此问题是什么原因导致的?

简短描述

Systems Manager 合规性功能为托管实例队列提供合规性数据。将托管实例的合规性状态确定为合规还是不合规,主要基于以下因素:

  • 补丁管理器补丁安装的状态
  • 状态管理器关联的状态
  • 自定义合规项目的状态(如果适用)

可以通过查看配置合规性报告,来确定实例的合规性状态。查看合规性报告时,请确定每个不合规实例的合规性类型。

  • 合规性类型补丁表示由于补丁管理器补丁安装,实例不合规。
  • 合规性类型关联表示由于状态管理器关联,实例不合规。

注意:在 Systems Manager 合规性开始报告合规性数据之前,必须满足开始使用合规性的先决条件

解决方法

基于补丁管理器补丁安装状态的不合规性

实例可能会因为补丁管理器补丁安装显示为不合规,原因如下:

AWS-RunPatchBaseline 文档未在实例上运行

根据实例补丁基准文档设置批准使用补丁后,使用 Install (安装) 操作的 AWS-RunPatchBaseline 文档未在实例上运行。请按照以下步骤解决问题:

  1. 查看配置合规性报告。选择 Patch (补丁) 选项卡,然后查看 Patch Summary (补丁摘要)。如果 Updates Needed (所需更新) 不是 0,则您的实例不合规,因为必须安装一个或多个已批准的补丁。
  2. 要确定必须安装的补丁,请向下滚动,选择搜索栏,然后查找状态设置为 Missing (缺失) 的补丁。
    注意:托管实例中的每个补丁都会分配到一个合规性状态值。该值决定了该实例的合规性状态。
  3. 在不合规实例上,运行使用 Install (安装) 操作的 AWS-RunPatchBaseline 文档。您可以使用补丁管理器控制台中的 Patch now (立即安装补丁) 选项,启动补丁安装操作。或者,您可以使用 Run Command 或作为维护时段的一部分运行 AWS-RunPatchBaseline 文档 。

AWS-RunPatchBaseline 文档已运行,但是一些已批准的补丁无法安装

在实例上运行使用 Install (安装) 操作的 AWS-RunPatchBaseline 文档。但是,由于实例的特定原因,某些已批准的补丁未能在实例上安装。请按照以下步骤确定特定于实例的问题:

  1. 查看配置合规性报告。选择 Patch (补丁) 选项卡,向下滚动,选择搜索栏,然后查找状态设置为 Failed (失败) 的补丁。
  2. 记下状态失败的补丁,然后使用 SSH 或会话管理器登录到实例。
  3. 查看实例中的 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。请按照以下步骤解决问题:

  1. 查看配置合规性报告。选择 Patch (补丁) 选项卡,向下滚动,选择搜索栏,然后查找状态设置为 InstalledPendingReboot 的补丁。
    注意:InstalledPendingReboot 状态使实例处于不合规状态,除非重启和扫描实例。
  2. 重启实例
  3. 扫描实例并验证实例在 Systems Manager 合规性控制面板中是否显示为合规。

AWS-RunPatchBaseline 文档已运行,但实例上存在一些被拒绝的补丁

在实例上运行使用 Install (安装) 操作的 AWS-RunPatchBaseline 文档,并且所有已批准的补丁都已成功安装。但是,实例上也存在一些被拒绝的补丁。请按照以下步骤解决问题:

  1. 查看配置合规性报告。请记下与不合规关联类型对应的关联 ID ,以备后用。
  2. 选择 Patch (补丁) 选项卡,向下滚动,选择搜索栏,然后查找状态设置为 InstalledRejected 的补丁。
    注意:InstalledRejected 状态表示在添加到被拒绝补丁列表之前,已安装该补丁。
  3. 记下被拒绝的补丁,然后使用 SSH 或会话管理器登录到实例。
  4. 删除所有被拒绝的补丁。

基于状态管理器关联的不合规

创建 Systems Manager 状态管理器关联后,将为实例定义配置状态。如果未保持该状态,则 Systems Manager 合规性控制面板会将实例报告为不合规。请按照以下步骤解决问题:

  1. 查看配置合规性报告。 请记下与不合规关联类型对应的关联 ID,以备后用。
  2. 在 Systems Manager 控制台中,查看关联历史记录
  3. 查看输出,了解关联失败的原因。有关更多信息,请参阅如何对失败或卡在待处理状态的 State Manager 关联进行故障排除?

AWS-GatherSoftwareInventory 文档问题

如果您的实例由于运行 AWS-GatherSoftwareInventory 文档出现问题而导致不合规,请对 Systems Manager 清单的常见问题进行故障排除


这篇文章对您有帮助吗?


您是否需要账单或技术支持?