

本文属于机器翻译版本。若本译文内容与英语原文存在差异，则一律以英文原文为准。

# 使用 Amazon Inspector 扫描 Amazon EC2 实例
<a name="scanning-ec2"></a>

 Amazon Inspector Amazon EC2 扫描会从 EC2 实例提取元数据，然后再将这些元数据与从安全公告中收集的规则进行比较。Amazon Inspector 会扫描实例中是否存在程序包漏洞和网络可达性问题，然后生成[调查发现](https://docs.amazonaws.cn/inspector/latest/user/findings-types.html)。Amazon Inspector 每 12 小时执行一次网络可访问性扫描，并根据与 EC2 实例关联的扫描方法以可变的节奏进行软件包漏洞扫描。

 程序包漏洞扫描可以使用[基于代理](https://docs.amazonaws.cn/inspector/latest/user/scanning-ec2.html#agent-based)或[无代理](https://docs.amazonaws.cn/inspector/latest/user/scanning-ec2.html#agentless)的扫描方法执行。这两种扫描方法决定了 Amazon Inspector 如何以及何时从 EC2 实例收集软件清单来进行程序包漏洞扫描。基于代理的扫描使用 SSM Agent 收集软件清单，无代理扫描使用 Amazon EBS 快照收集软件清单。

 Amazon Inspector 使用您为账户激活的扫描方法。首次激活 Amazon Inspector 时，您的账户会自动注册混合扫描类型，同时使用这两种扫描方法。不过，您可以随时[更改此设置](https://docs.amazonaws.cn/inspector/latest/user/scanning-ec2.html#scan-mode)。有关如何激活扫描类型的信息，请参阅[激活扫描类型](https://docs.amazonaws.cn/inspector/latest/user/activate-scans.html)。本节提供了有关 Amazon EC2 扫描的信息。

**注意**  
 Amazon EC2 扫描不会扫描与虚拟环境相关的文件系统目录，即使这些目录是通过深度检查预调配的也是如此。例如，由于路径 `/var/lib/docker/` 通常用于容器运行时，因此不会对其进行扫描。

## 基于代理的扫描
<a name="agent-based"></a>

在所有符合条件的实例上，我们使用 SSM 代理持续执行基于代理的扫描。对于基于代理的扫描，Amazon Inspector 使用 SSM 关联以及通过这些关联安装的插件从实例收集软件清单。除了对操作系统程序包进行程序包漏洞扫描外，Amazon Inspector 基于代理的扫描还可以通过[基于 Linux 的 Amazon EC2 实例的 Amazon Inspector 深度检查](deep-inspection.md)，检测基于 Linux 的实例中的应用程序编程语言包是否存在程序包漏洞。

以下过程说明了 Amazon Inspector 如何使用 SSM 收集清单和执行基于代理的扫描：

1. Amazon Inspector 会在您的账户中创建 SSM 关联，以便从实例中收集清单。对于某些实例类型（Windows 和 Linux），这些关联会在单个实例上安装插件以收集清单。

1. Amazon Inspector 使用 SSM 从实例中提取程序包清单。

1. Amazon Inspector 会评估提取的清单，并针对检测到的任何漏洞生成调查发现。

**注意**  
 对于基于代理的扫描，Amazon EC2 实例必须由同一 Amazon Web Services 账户中的 SSM 进行管理。

### 符合条件的实例
<a name="agent-based-eligible"></a>

如果实例满足以下条件，Amazon Inspector 将使用基于代理的方法对其进行扫描：
+ 该实例具有支持的操作系统。有关支持的操作系统列表，请参阅[支持的操作系统：Amazon EC2 扫描](supported.md#supported-os-ec2)的**基于代理的扫描支持**列。
+ 未使用 Amazon Inspector EC2 排除标签将该实例排除在扫描范围之外。
+ 该实例由 SSM 托管。有关验证和配置该代理的说明，请参阅[配置 SSM 代理](#configure-ssm)。

### 基于代理的扫描行为
<a name="ec2-scan-behavior"></a>

使用基于代理的扫描方法时，在以下情况下，Amazon Inspector 会对 EC2 实例启动新的漏洞扫描：
+ 启动新 EC2 实例时。
+ 在现有 EC2 实例（Linux 和 Mac）上安装新软件时。
+ Amazon Inspector 在其数据库中添加新的常见漏洞和风险（CVE）项目，且该 CVE 与您的 EC2 实例（Linux 和 Mac）相关时。

初始扫描完成后，Amazon Inspector 会更新 EC2 实例的**上次扫描时间**字段。此后，当 Amazon Inspector 评估 SSM 清单时（默认为每 30 分钟一次），或者由于影响实例的新 CVE 被添加到 Amazon Inspector 数据库而需要重新扫描该实例时，**上次扫描时间**字段就会更新。

您可以通过**账户管理**页面的“实例”选项卡或通过使用 [https://docs.amazonaws.cn//inspector/v2/APIReference/API_ListCoverage.html](https://docs.amazonaws.cn//inspector/v2/APIReference/API_ListCoverage.html) 命令，来查看上次扫描 EC2 实例是否存在漏洞的时间。

### 配置 SSM 代理
<a name="configure-ssm"></a>

为了让 Amazon Inspector 检测到使用基于代理的扫描方法的 Amazon EC2 实例的软件漏洞，该实例必须是 Amazon EC2 Systems Manager（SSM）中的[托管实例](https://docs.amazonaws.cn//systems-manager/latest/userguide/managed_instances.html)。SSM 托管实例已安装并运行了 SSM 代理，SSM 有权管理该实例。如果您已经在使用 SSM 来管理实例，那么无需执行其他步骤，即可开始基于代理的扫描。

SSM 代理默认安装在根据某些 Amazon 系统映像 (AMIs) 创建的 EC2 实例上。有关更多信息，请参阅 *Amazon Systems Manager 用户指南*中的[关于 SSM 代理](https://docs.amazonaws.cn/systems-manager/latest/userguide/prereqs-ssm-agent.html)。但是，即使已经安装了 SSM 代理，您也可能需要手动激活 SSM 代理，并授予 SSM 管理实例的权限。

以下步骤介绍了如何使用 IAM 实例配置文件将 Amazon EC2 实例配置为托管实例。这些步骤还提供了指向 *Amazon Systems Manager 用户指南*中更多详细信息的链接。

附加实例配置文件时，建议使用 [https://docs.amazonaws.cn/aws-managed-policy/latest/reference/AmazonSSMManagedInstanceCore.html](https://docs.amazonaws.cn/aws-managed-policy/latest/reference/AmazonSSMManagedInstanceCore.html) 策略。该策略拥有 Amazon Inspector EC2 扫描所需的所有权限。

**注意**  
您还可以使用 SSM 默认主机管理配置，在不使用 IAM 实例配置文件的情况下自动管理所有 EC2 实例。有关更多信息，请参阅[默认主机管理配置](https://docs.amazonaws.cn/systems-manager/latest/userguide/managed-instances-default-host-management.html)。在实例上配置 IAM 实例配置文件时，Amazon Inspector 会使用该配置文件并忽略默认主机管理配置 (DHMC) 角色。

**为 Amazon EC2 实例配置 SSM**

1. 如果操作系统供应商未安装 SSM 代理，请先安装。有关更多信息，请参阅[使用 SSM 代理](https://docs.amazonaws.cn/systems-manager/latest/userguide/ssm-agent.html)。

1.  Amazon CLI 使用验证 SSM 代理是否正在运行。有关更多信息，请参阅[检查 SSM 代理状态并启动代理](https://docs.amazonaws.cn//systems-manager/latest/userguide/ssm-agent-status-and-restart.html)。

1. 向 SSM 授予管理实例的权限。您可以通过创建 IAM 实例配置文件并将其附加到实例来授予相应权限。我们建议使用 [https://docs.amazonaws.cn/aws-managed-policy/latest/reference/AmazonSSMManagedInstanceCore.html](https://docs.amazonaws.cn/aws-managed-policy/latest/reference/AmazonSSMManagedInstanceCore.html) 策略，因为该策略具有 Amazon Inspector 扫描所需的 SSM Distributor、SSM Inventory 和 SSM State Manager 权限。有关创建具有这些权限的实例配置文件并将其附加到实例的说明，请参阅[为 Systems Manager 配置实例权限](https://docs.amazonaws.cn/systems-manager/latest/userguide/setup-instance-permissions.html#instance-profile-add-permissions)。

1. （可选）激活 SSM 代理的自动更新。有关更多信息，请参阅[自动更新 SSM 代理](https://docs.amazonaws.cn/systems-manager/latest/userguide/ssm-agent-automatic-updates.html)。

1. （可选）将 Systems Manager 配置为使用 Amazon Virtual Private Cloud（Amazon VPC）端点。有关更多信息，请参阅[创建 Amazon VPC 端点](https://docs.amazonaws.cn/systems-manager/latest/userguide/setup-create-vpc.html)。

**重要**  
Amazon Inspector 需要您的账户中具有 Systems Manager State Manager 关联才能收集软件应用程序清单。如果不存在相应关联，Amazon Inspector 会自动创建一个名为 `InspectorInventoryCollection-do-not-delete` 的关联。  
Amazon Inspector 还需要资源数据同步，如果不存在相应同步，则会自动创建一个名为 `InspectorResourceDataSync-do-not-delete` 的同步。有关更多信息，请参阅 [Amazon Systems Manager 用户指南](https://docs.amazonaws.cn/systems-manager/latest/userguide/sysman-inventory-datasync.html)中的*配置清单的资源数据同步*。每个账户可在每个区域拥有一定数量的资源数据同步。有关更多信息，请参阅 [SSM 端点和](https://docs.amazonaws.cn/general/latest/gr/ssm.html#limits_ssm)配额中资源数据同步的最大数量（ Amazon Web Services 账户 每个区域）。

#### 为扫描创建的 SSM 资源
<a name="ssm-resources"></a>

 Amazon Inspector 需要您的账户中有大量 SSM 资源才能运行 Amazon EC2 扫描。以下资源是在您首次激活 Amazon Inspector EC2 扫描时创建的：

**注意**  
 如果仍在为您的账户激活 Amazon Inspector Amazon EC2 扫描时删除了其中任何 SSM 资源，Amazon Inspector 将在下一个扫描间隔尝试重新创建这些资源。

`InspectorInventoryCollection-do-not-delete`  
这是一个 Systems Manager State Manager (SSM) 关联，Amazon Inspector 使用它从您的 Amazon EC2 实例收集软件应用程序清单。如果您的账户已经有用于从 `InstanceIds*` 中收集清单的 SSM 关联，则 Amazon Inspector 将使用该关联而不是自己创建。

`InspectorResourceDataSync-do-not-delete`  
这是一个资源数据同步，Amazon Inspector 使用它将收集的清单数据从 Amazon EC2 实例发送到 Amazon Inspector 拥有的 Amazon S3 存储桶。有关更多信息，请参阅 [Amazon Systems Manager 用户指南](https://docs.amazonaws.cn/systems-manager/latest/userguide/sysman-inventory-datasync.html)中的*配置清单的资源数据同步*。

`InspectorDistributor-do-not-delete`  
这是 Amazon Inspector 用于扫描 Windows 实例的 SSM 关联。此关联会在 Windows 实例上安装 Amazon Inspector SSM 插件。如果插件文件被无意中删除，则此关联将在下一个关联间隔重新安装它。

`InvokeInspectorSsmPlugin-do-not-delete`  
这是 Amazon Inspector 用于扫描 Windows 实例的 SSM 关联。此关联使 Amazon Inspector 可以使用该插件启动扫描，您也可以使用它来设置扫描 Windows 实例的自定义间隔。有关更多信息，请参阅 [为 Windows 实例扫描设置自定义计划](windows-scanning.md#windows-scan-schedule)。

`InspectorLinuxDistributor-do-not-delete`  
 这是 Amazon Inspector 用于 Amazon EC2 Linux 深度检查的 SSM 关联。此关联会在 Linux 实例上安装 Amazon Inspector SSM 插件。

`InvokeInspectorLinuxSsmPlugin-do-not-delete`  
这是 Amazon Inspector 用于 Amazon EC2 Linux 深度检查的 SSM 关联。此关联使 Amazon Inspector 可以使用该插件启动扫描。

**注意**  
 停用 Amazon Inspector Amazon EC2 扫描或深度检查时，将不再调用 SSM 资源 `InvokeInspectorLinuxSsmPlugin-do-not-delete`。

## 无代理扫描
<a name="agentless"></a>

 当您的账户处于混合扫描模式时，Amazon Inspector 会对符合条件的实例使用无代理扫描方法。混合扫描模式包括基于代理的扫描和无代理扫描，当您激活 Amazon EC2 扫描时会自动启用。

 对于无代理扫描，Amazon Inspector 使用 EBS 快照从您的实例收集软件清单。无代理扫描会对实例进行扫描，看其是否存在操作系统程序包和应用程序编程语言程序包漏洞。

**注意**  
扫描 Linux 实例是否存在应用程序编程语言包漏洞时，无代理方法会扫描所有可用路径，而基于代理的扫描仅扫描默认路径和您在[基于 Linux 的 Amazon EC2 实例的 Amazon Inspector 深度检查](deep-inspection.md)中指定的其他路径。这可能会导致同一个实例有不同的调查发现，具体取决于它是使用基于代理的方法还是使用无代理方法进行扫描。

以下过程说明了 Amazon Inspector 如何使用 EBS 快照收集清单和执行无代理扫描：

1. Amazon Inspector 会为附加到实例的所有卷创建一个 EBS 快照。当 Amazon Inspector 使用它时，快照存储在您的账户中，会使用 `InspectorScan` 标签键进行标记，并使用唯一的扫描 ID 作为标签值。

1. Amazon Inspector 使用 [EBS Dire](https://docs.amazonaws.cn/AWSEC2/latest/UserGuide/ebs-accessing-snapshot.html) ct 从快照中检索数据， APIs并对快照进行漏洞评估。针对任何检测到的漏洞，都会生成调查发现。

1. Amazon Inspector 会删除它在您的账户中创建的 EBS 快照。

### 符合条件的实例
<a name="agentless-eligible"></a>

 如果实例满足以下条件，Amazon Inspector 将使用无代理方法对其进行扫描：
+  该实例具有支持的操作系统。有关更多信息，请参阅[支持的操作系统：Amazon EC2 扫描](supported.md#supported-os-ec2)的“基于代理的扫描支持”列。
+  该实例的状态为 `Unmanaged EC2 instance`、`Stale inventory` 或 `No inventory`。
+  该实例由 Amazon EBS 支持，具有以下文件系统格式之一：
  + `ext3`
  + `ext4`
  + `xfs`
+  未使用 Amazon EC2 排除标签将该实例排除在扫描范围之外。
+  连接到该实例的卷数量小于 8 个，其总大小小于或等于 1200 GB。

### 无代理扫描行为
<a name="agentless-ec2-scan-behavior"></a>

当您的账户配置为**混合扫描**时，Amazon Inspector 会每 24 小时对符合条件的实例执行一次无代理扫描。Amazon Inspector 每小时都会检测和扫描新的符合条件的实例，其中包括没有 SSM 代理的新实例，或者状态已更改为 `SSM_UNMANAGED` 的现有实例。

每当 Amazon Inspector 在无代理扫描后扫描从实例提取的快照时，都会更新 Amazon EC2 实例的**上次扫描时间**字段。

您可以通过“账户管理”页面的“实例”选项卡或通过使用 [https://docs.amazonaws.cn//inspector/v2/APIReference/API_ListCoverage.html](https://docs.amazonaws.cn//inspector/v2/APIReference/API_ListCoverage.html) 命令，来查看上次扫描 EC2 实例是否存在漏洞的时间。

## 管理扫描模式
<a name="scan-mode"></a>

EC2 扫描模式决定了 Amazon Inspector 在您的账户中执行 EC2 扫描时将使用哪些扫描方法。您可以在**常规设置**下的 EC2 扫描设置页面查看账户的扫描模式。独立账户或 Amazon Inspector 委派管理员可以更改扫描模式。当您将扫描模式设置为 Amazon Inspector 委派管理员时，系统会为您组织中的所有成员账户设置该扫描模式。Amazon Inspector 具有以下扫描模式：

**基于代理的扫描** – 在此扫描模式下，Amazon Inspector 在扫描程序包漏洞时将仅使用基于代理的扫描方法。此扫描模式仅扫描您账户中的 SSM 托管实例，但其好处是可以提供持续扫描，以响应新的 CVE 或对实例的更改。基于代理的扫描还可以为符合条件的实例提供 Amazon Inspector 深度检查。这是新激活账户的默认扫描模式。

**混合扫描** – 在此扫描模式下，Amazon Inspector 将结合使用基于代理和无代理的方法来扫描程序包漏洞。对于安装并配置了 SSM 代理的符合条件的 EC2 实例，Amazon Inspector 会使用基于代理的方法。对于不受 SSM 管理的符合条件的实例，Amazon Inspector 将对符合条件且由 EBS 支持的实例使用无代理方法。

**更改扫描模式**

1.  使用您的凭证登录，然后在 [https://console.aws.amazon.com/inspector/v2/](https://console.amazonaws.cn/inspector/v2/home) home 中打开 Amazon Inspector 控制台。

1. 使用页面右上角的选择 Amazon Web Services 区域 器，选择要更改 EC2 扫描模式的区域。

1. 在侧面导航面板的**常规设置**下，选择 **EC2 扫描设置**。

1. 在**扫描模式**下，选择**编辑**。

1. 选择一个扫描模式，然后选择**保存更改**。

## 从 Amazon Inspector 扫描中排除实例
<a name="exclude-ec2"></a>

 可以使用 `InspectorEc2Exclusion` 密钥为 Linux 和 Windows 实例添加标签，从而将其排除在 Amazon Inspector 扫描范围之外。标签密钥不区分大小写。包括标签值是可选的。有关添加标签的信息，请参阅[标记 Amazon EC2 资源](https://docs.amazonaws.cn/AWSEC2/latest/UserGuide/Using_Tags.html)。

 当为实例添加标签以将其排除在 Amazon Inspector 扫描范围之外时，Amazon Inspector 会将该实例标记为已排除，且不会为其创建调查发现。但是，Amazon Inspector SSM 插件将继续被调用。要防止调用该插件，必须[允许访问实例元数据中的标签](https://docs.amazonaws.cn/AWSEC2/latest/UserGuide/work-with-tags-in-IMDS.html#allow-access-to-tags-in-IMDS)。

**注意**  
 您无需为排除的实例付费。

 此外，您可以通过使用标签标记用于加密该卷的 Amazon KMS 密钥，将加密的 EBS 卷排除在无代理扫描之外。`InspectorEc2Exclusion`有关更多信息，请参阅[标记密钥](https://docs.amazonaws.cn/kms/latest/developerguide/tagging-keys)。

## 支持的操作系统
<a name="supported-instance"></a>

Amazon Inspector 会扫描支持的 Mac、Windows 和 Linux 实例中是否存在操作系统包中的漏洞。对于 Linux 实例，Amazon Inspector 可以使用 [基于 Linux 的 Amazon EC2 实例的 Amazon Inspector 深度检查](deep-inspection.md) 生成应用程序编程语言包的调查发现。对于 Mac 和 Windows 实例，仅扫描操作系统程序包。

有关支持的操作系统的信息，包括无需使用 SSM 代理即可扫描哪些操作系统，请参见[Amazon EC2 实例的状态值支持的操作系统：Amazon EC2 扫描](supported.md#supported-os-ec2)。