S3 恶意软件防护的工作原理 - Amazon GuardDuty
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

S3 恶意软件防护的工作原理

本节介绍 S3 恶意软件防护的组件、为 S3 存储桶启用此功能后的工作原理,以及如何检查恶意软件扫描状态和结果。

概览

您可以为属于自己 Amazon Web Services 账户的 Amazon S3 存储桶启用 S3 恶意软件防护。GuardDuty 让您能够灵活地选择为整个存储桶启用此功能,或者将恶意软件扫描的范围限定为特定的对象前缀,从而让 GuardDuty 扫描每个以所选前缀开头的上传对象。您最多可以添加 5 个前缀。为 S3 存储桶启用此功能时,该存储桶被称为受保护的存储桶

IAM 角色权限

S3 恶意软件防护会使用一个允许 GuardDuty 代表您执行恶意软件扫描操作的 IAM 角色。这些操作包括接收所选存储桶中新上传对象的通知、对这些对象进行扫描以及(可选)向已扫描对象添加标签等。这是使用此功能配置 S3 存储桶的一个先决条件。

您可以选择更新现有的 IAM 角色,也可以为此目的创建一个新角色。为多个存储桶启用 S3 恶意软件防护时,您可以根据需要通过更新现有的 IAM 角色来包含其他存储桶的名称。有关更多信息,请参阅 创建或更新 IAM 角色策略

根据扫描结果标记对象(可选)

在为存储桶启用 S3 恶意软件防护时,您可以通过一个可选步骤来标记已扫描的 S3 对象。该 IAM 角色已经包含在扫描后向对象添加标签的权限。但是,仅当您在设置时启用了此选项时,GuardDuty 才会添加标签。

您必须在上传对象之前启用此选项。扫描结束后,GuardDuty 会使用以下键值对向已扫描的 S3 对象添加预定义的标签:

GuardDutyMalwareScanStatus:Potential scan result

可能的扫描结果标签值包括 NO_THREATS_FOUNDTHREATS_FOUNDUNSUPPORTEDACCESS_DENIEDFAILED。有关这些值的更多信息,请参阅 可能的 S3 对象扫描状态和结果状态

启用标记是了解 S3 对象扫描结果的诸多方法之一。您可以进一步使用这些标签来添加基于标签的访问控制(TBAC)S3 资源策略,以便对可能有恶意的对象执行操作。有关更多信息,请参阅 在 S3 存储桶资源上添加 TBAC

我们建议您在为存储桶配置 S3 恶意软件防护时启用标记。如果您在上传对象并且扫描可能已经启动后启用标记,GuardDuty 将无法向以扫描的对象添加标签。有关相关 S3 对象标记成本的信息,请参阅S3 恶意软件防护的定价和使用成本

为存储桶启用 S3 恶意软件防护之后的流程

启用 S3 恶意软件防护后,将专门为选定的 S3 存储桶创建恶意软件防护计划资源。此资源与恶意软件防护计划 ID 相关联,后者是受保护资源的唯一标识符。然后 GuardDuty 会通过使用其中一个 IAM 权限,创建并管理一条名为 DO-NOT-DELETE-AmazonGuardDutyMalwareProtectionS3* 的 EventBridge 托管式规则。

GuardDuty 如何处理数据(数据保护的护栏)

S3 恶意软件防护会侦听 Amazon EventBridge 通知。将对象上传到选定存储桶或其中的一个前缀时,GuardDuty 会使用 Amazon PrivateLink 从 S3 存储桶下载该对象,然后在位于同一区域的隔离环境中读取、解密和扫描该对象。扫描环境在无法访问互联网的锁定虚拟私有云(VPC)中运行。该 VPC 会连接到一个 DNS 防火墙规则组,该规则组仅允许与 Amazon 拥有的允许名单内的域进行通信。在扫描期间,GuardDuty 会将下载的 S3 对象临时存储在使用 Amazon Key Management Service(Amazon KMS)密钥加密的扫描环境中。

注意

默认情况下,《Amazon S3 用户指南》中对象创建事件类型下列出的所有 Amazon S3 API 都将启动 S3 恶意软件防护扫描

这些事件类型包括 PutObjectPOST ObjectCopyObjectCompleteMultipartUpload

有关 GuardDuty 恶意软件检测方法及其使用的扫描引擎的信息,请参阅 GuardDuty 恶意软件检测扫描引擎

恶意软件扫描完成后,GuardDuty 会使用扫描状态处理扫描元数据,然后删除已下载的对象副本。

每次开始新的扫描之前,GuardDuty 都会清理扫描环境。GuardDuty 使用应急授权来授予操作人员访问扫描环境的权限,并且会对每个访问请求进行审查、批准和审计。

检查 S3 对象扫描状态和结果

GuardDuty 会将 S3 对象扫描结果事件发布到 Amazon EventBridge 的默认事件总线。GuardDuty 还会将扫描指标(例如已扫描对象数量和已扫描字节数等)发送到 Amazon CloudWatch。如果您启用了标记,则 GuardDuty 会添加预定义的标签 GuardDutyMalwareScanStatus 并将可能的扫描结果添加为标签值。

重要

GuardDuty 使用“至少传递一次”模式,这表示您可能会收到同一对象的多个扫描结果。建议在设计应用程序时使其能够处理重复的结果。对于每个扫描对象,您只需支付一次费用。

有关更多信息,请参阅 在 S3 恶意软件防护中监控 S3 对象扫描

检查生成的调查发现

对调查发现的检查取决于您是否是在启用 GuardDuty 的情况下使用 S3 恶意软件防护。考虑以下场景:

在启用 GuardDuty 服务对情况下使用 S3 恶意软件防护(有检测器 ID)

如果恶意软件扫描在 S3 对象中检测到可能有恶意的文件,GuardDuty 将生成相关的调查发现。您可以查看调查发现的详细信息,也可以使用建议的步骤来潜在修复该调查发现。根据导出调查发现的频率,生成的调查发现将导出到 S3 存储桶和 EventBridge 事件总线。

有关将生成的调查发现类型的信息,请参阅 S3 恶意软件防护调查发现类型

将 S3 恶意软件防护作为一项独立功能使用(无检测器 ID)

由于没有关联的检测器 ID,GuardDuty 将无法生成调查发现。要了解 S3 对象恶意软件扫描状态,您可以查看 GuardDuty 自动发布到默认事件总线的扫描结果。您还可以通过查看 CloudWatch 指标来评估 GuardDuty 尝试扫描的对象数和字节数。您可以设置 CloudWatch 警报来获得有关扫描结果的通知。如果您启用了 S3 对象标记,则还可以通过检查 S3 对象的 GuardDutyMalwareScanStatus 标签键和扫描结果标签值来查看恶意软件扫描状态。

有关 S3 对象扫描状态和结果的信息,请参阅在 S3 恶意软件防护中监控 S3 对象扫描