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_FOUND、THREATS_FOUND、UNSUPPORTED、ACCESS_DENIED 和 FAILED。有关这些值的更多信息,请参阅 可能的 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 恶意软件防护扫描。
这些事件类型包括 PutObject、POST Object、CopyObject 和 CompleteMultipartUpload。
有关 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 对象扫描。