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

2 分钟阅读
0

我的 Amazon Elastic Compute Cloud(Amazon EC2)实例在 AWS Systems Manager 合规性控制面板中显示为不合规。

简短描述

Systems Manager 合规性功能提供托管实例集的合规性数据。托管实例的合规性状态根据以下因素确定为合规或不合规:

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

若要确定实例的合规性状态,可以查看配置合规性报告。在查看合规性报告时,确定每个不合规实例的合规性类型。

  • 合规性类型补丁表示,由于补丁管理器修补操作,该实例处于不合规状态。
  • 合规性类型关联表示,由于状态管理器关联,该实例处于不合规状态。

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

运行支持合规性的修补文档时,会更新实例的补丁合规性状态。以下 SSM 修补文档支持更新合规性状态:

可以使用快速设置功能补丁管理器配置修补操作。

解决方法

基于补丁管理器修补状态的不合规

根据补丁管理器的修补操作,实例可能显示为不合规,原因如下:

修补文档未在实例上运行

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

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

**注意:**AWS-RunPatchBaseline 的默认设置会将自补丁发布之日起之后的 7 天设置为自动批准。您也可以为 WindowsmacOSLinux 创建自定义补丁基准。有关详细信息,请参阅使用自定义补丁基准

补丁文档已运行,但某些已批准的补丁安装失败

在实例上运行了使用安装操作的 AWS-RunPatchBaseline 文档。但是,由于实例方面的原因,一些已批准的补丁在实例上安装失败。请按照以下步骤确定实例方面的问题:

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

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

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

使用安装操作的补丁文档在实例上运行了,所有已批准的补丁均已成功安装。但是,实例上还存在一些被拒绝的补丁。请按照以下步骤解决问题:

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

补丁文档已运行,但失败了

补丁文档在实例上启动,但未能成功运行。如果补丁进程未在实例上成功运行,则该实例的合规性状态不会更新。

有关详细信息,请参阅在 Linux 上运行 AWS-RunPatchBaseline 时的错误在 Windows Server 上运行 AWS-RunPatchBaseline 时的错误

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

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

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

AWS-GatherSoftwareInventory 文档问题

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

使用 AWS CloudTrail 监控合规性事件

在为自定义合规性对象或关联添加新的合规性信息时,会进行 PutComplianceItems API 调用。PutInventory API 调用会添加或更新清单项目(如果不存在)。

有关详细信息,请参阅使用 CloudTrail 记录 Systems Manager API 调用

AWS 官方
AWS 官方已更新 1 年前