

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

# GuardDuty S3 的恶意软件防护
<a name="gdu-malware-protection-s3"></a>

S3 恶意软件防护通过扫描新上传到 Amazon Simple Storage Service（Amazon S3）存储桶的对象，来帮助检测可能存在的恶意软件。当 S3 对象或现有 S3 对象的新版本上传到您选择的存储桶时， GuardDuty 会自动启动恶意软件扫描。

[![AWS Videos](http://img.youtube.com/vi/https://www.youtube.com/embed/uweeumMAif4/0.jpg)](http://www.youtube.com/watch?v=https://www.youtube.com/embed/uweeumMAif4)


**启用 S3 恶意软件防护的两种方法**  
如果您启用了 S3 的恶意软件防护，并且将适用于 S3 的恶意软件防护作为整体 GuardDuty 体验的一部分，或者您想在不启用该 GuardDuty 服务的情况下单独使用适用于 S3 的恶意软件防护功能，则可以启用该 GuardDuty 服务。 AWS 账户 当您单独启用 S3 的恶意软件防护时， GuardDuty 文档将其称为使用 S3 的恶意软件防护作为一项独立功能。  

**独立使用 S3 恶意软件防护的注意事项**
+ GuardDuty 安全发现 — 探测器 ID 是与您在某个地区中的账户关联的唯一标识符。当您在账户的一个或多个区域 GuardDuty 中启用检测器时，系统会在您启用的每个区域中自动为该账户创建检测器 ID GuardDuty。有关更多信息，请参阅 [Amazon 中的概念和关键术语 GuardDuty](guardduty_concepts.md)文档中的*检测器*。

  在账户中单独启用 S3 恶意软件防护时，该账户将**没有**关联的检测器 ID。这会影响您可能使用的 GuardDuty 功能。例如，当 S3 恶意软件扫描检测到恶意软件的存在时， AWS 账户 由于所有 GuardDuty 发现都与检测器 ID 相关联，因此不会在您的系统中生成任何 GuardDuty 发现结果。
+ 检查扫描的对象是否为恶意对象-默认情况下，会将恶意软件扫描结果 GuardDuty 发布到您的默认 Amazon EventBridge 事件总线和 Amazon CloudWatch 命名空间。如果在为存储桶启用 S3 恶意软件防护时启用了标记，将为已扫描的 S3 对象分配一个提及扫描结果的标签。有关标记的更多信息，请参阅[根据扫描结果标记对象（可选）](how-malware-protection-for-s3-gdu-works.md#enable-optional-tagging-malware-protection-s3)。

**启用 S3 恶意软件防护的一般注意事项**  
无论您是单独使用适用于 S3 的恶意软件防护，还是作为 GuardDuty 体验的一部分，以下一般考虑因素都适用：  
+ 您可以为属于自己账户的 Amazon S3 存储桶启用 S3 恶意软件防护。作为委托 GuardDuty 管理员账户，您无法在属于成员账户的 Amazon S3 存储桶中启用此功能。
+ 您可以在属于当前在 GuardDuty 控制台中选择的同一区域的 S3 存储桶中启用此功能。 GuardDuty 不支持在跨区域 S3 存储桶中启用此功能。
+ 作为委托 GuardDuty 管理员账户，每当您的组织成员账户为该[查看和了解受保护的存储桶状态](malware-protection-s3-bucket-status-gdu.md)功能配置的 S3 存储桶发生变化时，您都会收到 Amazon EventBridge 通知。

**Topics**
+ [S3 恶意软件防护的定价和使用成本](pricing-malware-protection-for-s3-guardduty.md)
+ [S3 恶意软件防护的工作原理](how-malware-protection-for-s3-gdu-works.md)
+ [S3 恶意软件防护的功能](s3-malware-protection-capability.md)
+ [（可选）独立开始使用 S3 GuardDuty 恶意软件防护（仅限控制台）](malware-protection-s3-get-started-independent.md)
+ [为存储桶配置 S3 恶意软件防护](configuring-malware-protection-for-s3-guardduty.md)
+ [启用 S3 恶意软件防护后的步骤](malware-protection-s3-steps-after-enabling.md)
+ [按需 S3 恶意软件扫描 GuardDuty](malware-protection-s3-on-demand.md)
+ [将基于标签的访问控制（TBAC）与 S3 恶意软件防护结合使用](tag-based-access-s3-malware-protection.md)
+ [查看和了解受保护的存储桶状态](malware-protection-s3-bucket-status-gdu.md)
+ [在 S3 恶意软件防护中监控 S3 对象扫描](monitoring-malware-protection-s3-scans-gdu.md)
+ [问题排查](troubleshoot-s3-malware-protection.md)
+ [编辑受保护存储桶的恶意软件防护计划](edit-malware-protection-protected-s3-bucket.md)
+ [为受保护的存储桶禁用 S3 恶意软件防护](disable-malware-s3-protected-bucket.md)
+ [Amazon S3 功能支持](supported-s3-features-malware-protection-s3.md)
+ [S3 恶意软件防护中的配额](malware-protection-s3-quotas-guardduty.md)

# S3 恶意软件防护的定价和使用成本
<a name="pricing-malware-protection-for-s3-guardduty"></a>

S3 恶意软件防护的定价与中的其他保护计划不同 GuardDuty。虽然大多数 GuardDuty 保护计划都遵循30天的短期免费试用，但S3的恶意软件防护遵循12个月的免费套餐计划。 AWS有关 GuardDuty 定价的信息，请参阅[定价在 GuardDuty](guardduty-pricing.md)。

以下列表提供了与使用 S3 恶意软件防护相关的定价成本。

**免费套餐计划（扫描成本）**  
 AWS 账户 每个人都可获得 12 个月的免费套餐，其中包括每个地区每月不超过特定限额的使用量。每 AWS 账户 人每月可免费使用最多 1,000 个请求和扫描 1 GB 的数据。如果您的使用量超过规定的限制，则超限部分将开始产生使用成本。有关完整的定价详情，请参阅[GuardDuty 保护计划定价](https://aws.amazon.com/guardduty/pricing/#GuardDuty_protection_plans)。  
 免费套餐中不包括按需扫描。
有关启用 S3 恶意软件防护后的使用成本的信息，请参阅[检查 S3 恶意软件防护的使用成本检查使用成本](usage-cost-malware-protection-s3-gdu.md)。

**S3 对象标记使用成本**  
启用 S3 恶意软件防护时，您可以选择为已扫描的 S3 对象启用标记。当您选择启用 S3 对象标记时，会产生相关的使用成本。有关这些成本的更多信息，请参阅《Amazon S3 定价页面》上的 [Management & insights 选项卡](https://aws.amazon.com/s3/pricing/)**。  
免费套餐计划**不含** S3 对象标记使用成本。

**亚马逊 S3 APIs -GET 和PUT使用成本**  
在 APIs 基于 IAM 角色 GuardDuty 运行 Amazon S3 时，您将产生使用费用。例如，在担任 IAM 角色后， GuardDuty 运行 `PutObject` API 将测试对象添加到您选择的存储桶。这有助于 GuardDuty 评估该功能的启用状态。  
有关中调用 S3 API 的定价的信息 AWS 区域，请参阅 Ama *zon S3 定价*页面 “[存储和请求” 选项卡下的 “请求和数据检索](https://aws.amazon.com/s3/pricing/#aws-element-86cbc19a-da4c-4c04-bb4f-5c4d1a2de09e)”。

# 检查 S3 恶意软件防护的使用成本
<a name="usage-cost-malware-protection-s3-gdu"></a>

当您对 S3 恶意软件防护的使用超出免费套餐计划的特定限制时，或者您账户的 12 个月免费套餐计划到期时，您的账户就会开始产生使用成本。有关免费套餐计划的信息，请参阅 [S3 恶意软件防护的定价和使用成本](pricing-malware-protection-for-s3-guardduty.md)。请注意，免费套餐计划不适用于 S3 按需对象扫描的恶意软件防护。

 GuardDuty 控制台不支持查看恶意软件防护的 S3 使用成本。要查看使用成本，请在[https://console.aws.amazon.com/costmanagement/](https://console.aws.amazon.com/costmanagement/)控制台中导航到 C **ost Explorer**。有关 AWS 账户 计费的信息，请参阅《[AWS Billing 用户指南》](https://docs.aws.amazon.com/awsaccountbilling/latest/aboutv2/billing-what-is.html)。

有关中的估计使用成本的信息 GuardDuty，请参阅[监控使用情况并估算成本](monitoring_costs.md)。

# S3 恶意软件防护的工作原理
<a name="how-malware-protection-for-s3-gdu-works"></a>

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

## 概述
<a name="overview-how-malware-protection-s3-works"></a>

您可以为属于自己的 Amazon S3 存储桶启用 S3 的恶意软件防护 AWS 账户。 GuardDuty允许您灵活地为整个存储桶启用此功能，或者将恶意软件扫描的范围限制为特定的[对象前缀](https://docs.aws.amazon.com/AmazonS3/latest/userguide/using-prefixes.html)，其中 GuardDuty 扫描以选定前缀之一开头的每个上传对象。您最多可以添加 5 个前缀。为 S3 存储桶启用此功能时，该存储桶被称为**受保护的存储桶**。

## IAM 角色权限
<a name="passrole-iam-permissions-malware-protection-s3"></a>

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

您可以选择更新现有的 IAM 角色，也可以为此目的创建一个新角色。为多个存储桶启用 S3 恶意软件防护时，您可以根据需要通过更新现有的 IAM 角色来包含其他存储桶的名称。有关更多信息，请参阅 [创建或更新 IAM 角色策略](malware-protection-s3-iam-policy-prerequisite.md)。

## 根据扫描结果标记对象（可选）
<a name="enable-optional-tagging-malware-protection-s3"></a>

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

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

`GuardDutyMalwareScanStatus`:`Potential scan result`

可能的扫描结果标签值包括 `NO_THREATS_FOUND`、`THREATS_FOUND`、`UNSUPPORTED`、`ACCESS_DENIED` 和 `FAILED`。有关这些值的更多信息，请参阅 [可能的 S3 对象扫描状态和结果状态](monitoring-malware-protection-s3-scans-gdu.md#s3-object-scan-result-value-malware-protection)。

启用标记是了解 S3 对象扫描结果的诸多方法之一。您可以进一步使用这些标签来添加基于标签的访问控制（TBAC）S3 资源策略，以便对可能有恶意的对象执行操作。有关更多信息，请参阅 [在 S3 存储桶资源上添加 TBAC](tag-based-access-s3-malware-protection.md#apply-tbac-s3-malware-protection)。

我们建议您在为存储桶配置 S3 恶意软件防护时启用标记。如果您在上传对象后启用标记，并且扫描可能已启动，则 GuardDuty 将无法向扫描的对象添加标签。有关相关 S3 对象标记成本的信息，请参阅[S3 恶意软件防护的定价和使用成本](pricing-malware-protection-for-s3-guardduty.md)。

## 为存储桶启用 S3 恶意软件防护之后的流程
<a name="after-enabling-malware-protection-s3"></a>

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

### 如何 GuardDuty 处理您的数据-数据保护的护栏
<a name="guardduty-data-protection-guardrails-malware-protection-s3"></a>

适用于 S3 的恶意软件防护会监听 Amazon EventBridge 通知。将对象上传到选定的存储桶或其中一个前缀时，使用从 S3 存储桶 GuardDuty 下载该对象，[AWS PrivateLink](https://docs.aws.amazon.com/vpc/latest/privatelink/privatelink-share-your-services.html)然后在同一区域的隔离环境中对其进行读取、解密和扫描。扫描环境在无法访问互联网的锁定虚拟私有云（VPC）中运行。VPC 连接到 DNS 防火墙规则组，该规则组仅允许与所拥有的已列入许可名单的域进行通信。 AWS 在扫描期间，将下载的 S3 对象 GuardDuty 临时存储在使用 [AWS Key Management Service (AWS KMS)](https://docs.aws.amazon.com/kms/latest/developerguide/overview.html) 密钥加密的扫描环境中。

**注意**  
默认情况下，Amazon S3 *用户指南中 “[对象创建事件” 类型 APIs ](https://docs.aws.amazon.com/AmazonS3/latest/userguide/EventBridge.html)下列出的所有 Amazon S3* 都将启动 S3 扫描的恶意软件防护。  
这些*事件类型*包括 [PutObject](https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutObject.html)[POST 对象](https://docs.aws.amazon.com/AmazonS3/latest/API/RESTObjectPOST.html)和[CompleteMultipartUpload](https://docs.aws.amazon.com/AmazonS3/latest/API/API_CompleteMultipartUpload.html)。[CopyObject](https://docs.aws.amazon.com/AmazonS3/latest/API/API_CopyObject.html)

有关 GuardDuty 恶意软件检测方法及其使用的扫描引擎的信息，请参阅[GuardDuty 恶意软件检测扫描引擎](guardduty-malware-detection-scan-engine.md)。

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

GuardDuty 每次在新的扫描开始之前都会清理扫描环境。 GuardDuty 对操作员访问扫描环境使用临时授权，并且每个访问请求都经过审查、批准和审计。

### 检查 S3 对象扫描状态和结果
<a name="guardduty-publishing-s3-object-malware-scan-status"></a>

GuardDuty 将 S3 对象扫描结果事件发布到 Amazon EventBridge 默认事件总线。 GuardDuty 还将扫描指标（例如扫描的对象数量和扫描的字节数）发送到 Amazon CloudWatch。如果您启用了标记，则 GuardDuty 会将预定义的标签`GuardDutyMalwareScanStatus`和潜在的扫描结果添加为标签值。

**重要**  
GuardDuty 使用 at-least-once交付，这意味着您可能会收到同一对象的多个扫描结果。建议在设计应用程序时使其能够处理重复的结果。对于每个扫描对象，您只需支付一次费用。

有关更多信息，请参阅 [在 S3 恶意软件防护中监控 S3 对象扫描](monitoring-malware-protection-s3-scans-gdu.md)。

### 检查生成的调查发现
<a name="guardduty-malware-protection-s3-finding-detection"></a>

审查结果取决于您是否使用了 S3 恶意软件防护 GuardDuty。考虑以下场景：

**启用 GuardDuty 服务后对 S3 使用恶意软件防护（检测器 ID）**  
如果恶意软件扫描在 S3 对象中检测到潜在的恶意文件，则 GuardDuty 会生成相关的调查结果。您可以查看调查发现的详细信息，也可以使用建议的步骤来潜在修复该调查发现。根据您的[导出结果频率](https://docs.aws.amazon.com/guardduty/latest/ug/guardduty_exportfindings.html#guardduty_exportfindings-frequency)，生成的查找结果将导出到 S3 存储桶和 EventBridge事件总线。  
有关将生成的调查发现类型的信息，请参阅 [S3 恶意软件防护调查发现类型](gdu-malware-protection-s3-finding-types.md)。

**将 S3 恶意软件防护作为一项独立功能使用（无检测器 ID）**  
GuardDuty 将无法生成调查结果，因为没有相关的探测器 ID。要了解 S3 对象恶意软件扫描状态，您可以查看 GuardDuty自动发布到默认事件总线的扫描结果。您还可以查看 CloudWatch 指标以评估 GuardDuty 尝试扫描的对象和字节数。您可以设置 CloudWatch警报以获得有关扫描结果的通知。如果您启用了 S3 对象标记，则还可以通过检查 S3 对象的 `GuardDutyMalwareScanStatus` 标签键和扫描结果标签值来查看恶意软件扫描状态。  
有关 S3 对象扫描状态和结果的信息，请参阅[在 S3 恶意软件防护中监控 S3 对象扫描](monitoring-malware-protection-s3-scans-gdu.md)。

# S3 恶意软件防护的功能
<a name="s3-malware-protection-capability"></a>

以下列表概述了在为存储桶启用 S3 恶意软件防护后，预计将会发生的情况或者您可以执行的操作：
+ **选择要扫描的对象**：在将文件上传到与所选 S3 存储桶关联的所有或特定前缀（最多 5 个）时对其进行扫描。
+ **自动扫描上传的对象**-为存储桶启用 S3 恶意软件防护后， GuardDuty 将自动开始扫描，以检测新上传的对象中的潜在恶意软件。
+ **按需扫描**-您可以启动对现有对象的扫描或重新扫描以前扫描的对象。有关更多信息，请参阅 [按需 S3 恶意软件扫描 GuardDuty](malware-protection-s3-on-demand.md)。
+ **通过控制台启用、使用 API/AWS CLI或 CloudFormation** — 选择首选方法为 S3 启用恶意软件防护。

  您可以使用 *Terraform* 等基础设施即代码（IaC）平台启用 S3 恶意软件防护。有关更多信息，请参阅 [Resource: `aws_guardduty_malware_protection_plan`](https://registry.terraform.io/providers/hashicorp/aws/latest/docs/resources/guardduty_malware_protection_plan)。
+ **支持的文件格式、S3 恶意软件防护配额和 Amazon S3 功能**：S3 恶意软件防护支持您可以上传到 S3 存储桶的所有文件格式。如果上传的文件受密码保护，并且 GuardDuty 能够检测到上传文件类型是否存在密码保护，则 GuardDuty 将尝试使用常用密码扫描原始内容。如果密码失败，则会跳过扫描。 GuardDuty 无法检测到所有文件格式上是否存在密码保护。如果 GuardDuty 无法检测到密码保护的存在，则仍 GuardDuty 会扫描加密的内容。

  有关与对象大小、最大存档深度相关的配额信息以及其他详细信息，请参阅 [S3 恶意软件防护中的配额](malware-protection-s3-quotas-guardduty.md)。

  有关 Amazon S3 功能是否受支持的信息，请参阅 [Amazon S3 功能支持](supported-s3-features-malware-protection-s3.md)。
+ **支持标记已扫描的 S3 对象**-启用后[根据扫描结果标记对象（可选）](how-malware-protection-for-s3-gdu-works.md#enable-optional-tagging-malware-protection-s3)，每次恶意软件扫描后， GuardDuty 都会添加一个指示扫描状态的标签。您可以使用此标签，来为 S3 对象设置基于标签的访问控制（TBAC）。例如，您可以限制对标记为恶意且标签值为 `THREATS_FOUND` 的 S3 对象的访问权限。
+ **Amazon EventBridge 通知** — EventBridge 当恶意软件保护计划资源状态发生变化或对 S3 对象的恶意软件扫描完成时，向 Amazon GuardDuty 发送事件。这些事件会发送到默认事件总线。您可以使用 EventBridge 和这些事件来编写执行操作的规则，例如监控这些事件何时发生。有关更多信息，请参阅 [使用 Amazon 监控 S3 对象扫描 EventBridge](monitor-with-eventbridge-s3-malware-protection.md)。
+ **CloudWatch 指标**-查看 CloudWatch 指标以启用对特定恶意软件扫描状态的警报。有关更多信息，请参阅 [中的 S3 对象扫描状态指标 CloudWatch](monitor-cloudwatch-metrics-s3-malware-protection.md)。

# （可选）独立开始使用 S3 GuardDuty 恶意软件防护（仅限控制台）
<a name="malware-protection-s3-get-started-independent"></a>

如果您想开始使用 S3 威胁检测的恶意软件防护选项，请使用此可选步骤，而不受您的 GuardDuty 状态影响 AWS 账户。

如果您还想在中使用其他专用保护计划 GuardDuty，则必须开始使用 Amazon GuardDuty 服务。有关 GuardDuty 保护计划的信息，请参阅[的特点 GuardDuty](what-is-guardduty.md#features-of-guardduty)。如果您已经 GuardDuty 在账户中启用了功能，则可以跳过此步骤并继续[为存储桶配置 S3 恶意软件防护](configuring-malware-protection-for-s3-guardduty.md)。

**开始仅使用 S3 恶意软件防护威胁检测的步骤**

1. 登录 AWS 管理控制台 并打开 GuardDuty 控制台，网址为[https://console.aws.amazon.com/guardduty/](https://console.aws.amazon.com/guardduty/)。

1. 选择 “**仅适用于 S3 的GuardDuty 恶意软件防护**”。这有助您检测 Amazon Simple Storage Service（Amazon S3）存储桶中新上传的文件是否可能包含恶意软件。  
![\[选择 “仅适用于 S3 的GuardDuty 恶意软件防护” 选项，然后选择 “开始”。\]](http://docs.aws.amazon.com/zh_cn/guardduty/latest/ug/images/select-malware-protection-for-s3-console.png)

1. 选择**开始**。现在，您可以继续完成[为存储桶配置 S3 恶意软件防护](configuring-malware-protection-for-s3-guardduty.md)下的步骤。

# 为存储桶配置 S3 恶意软件防护
<a name="configuring-malware-protection-for-s3-guardduty"></a>

要让 S3 恶意软件防护扫描以及（可选）向 S3 对象添加标签，您可以使用具有必要权限的服务角色代表您执行恶意软件扫描操作。有关使用服务角色启用 S3 恶意软件防护的更多信息，请参阅[服务访问权限](https://docs.aws.amazon.com//guardduty/latest/ug/enable-malware-protection-s3-bucket.html#service-access-s3-malware-protection)。此角色不同于[GuardDuty 恶意软件防护服务相关角色](https://docs.aws.amazon.com//guardduty/latest/ug/using-service-linked-roles.html)。

如果您更喜欢使用 IAM 角色，则可以附加一个包含扫描所需权限的 IAM 角色，并且（可选）向 S3 对象添加标签。 GuardDuty 然后担任此 IAM 角色代表您执行这些操作。在为您的 Amazon S3 存储桶启用此防护计划时，您将需要此 IAM 角色名称。

如果您使用的是 IAM 角色，则每次想要保护 Amazon S3 存储桶时，都必须执行本节中列出的两个步骤。

要启用 S3 恶意软件防护，您需要 S3 存储桶名称、对象前缀（如果要将防护重点放在特定前缀上）以及具有所需权限的 IAM 角色名称等详细信息。

无论您是单独开始使用 S3 恶意软件防护，还是将其作为 GuardDuty 服务的一部分启用，步骤都保持不变。

**主题**

1. [创建或更新 IAM 角色策略](malware-protection-s3-iam-policy-prerequisite.md)

1. [为存储桶启用 S3 恶意软件防护](enable-malware-protection-s3-bucket.md) 

1. [对 IAM 角色权限错误进行问题排查](troubleshoot-malware-protection-s3-iam-role-permissions-error.md)

# 为存储桶启用 S3 恶意软件防护
<a name="enable-malware-protection-s3-bucket"></a>

本节介绍了有关如何为自己账户中的存储桶启用 S3 恶意软件防护的详细步骤。在继续之前，请查看以下考虑事项：
+ 使用 GuardDuty 控制台启用此保护计划时，它包括在 “**服务访问权限**” 部分下创建新角色或使用现有角色的步骤。
+ 使用 GuardDuty API 或 CLI 启用此保护计划时，必须[创建或更新 IAM 角色策略](malware-protection-s3-iam-policy-prerequisite.md)先继续操作。
+ 无论您如何启用此防护计划，您都必须具备所需的[创建恶意软件防护计划资源的权限](#malware-protection-s3-permissions-prerequisite)。

**考虑 Amazon S3 存储桶节流**  
S3 节流可能会限制数据传输到您的 Amazon S3 存储桶或从您的 Amazon S3 存储桶中传输数据的速率。这可能会延迟对新上传对象的恶意软件扫描。  
如果您预计 S3 存储桶会收到大量 `GET` 和 `PUT` 请求，请考虑实施措施防止节流。有关如何执行此操作的信息，请参阅《Amazon Athena 用户指南》**中的[防止 Amazon S3 节流](https://docs.aws.amazon.com/athena/latest/ug/performance-tuning-s3-throttling.html)。

**Topics**

## 创建恶意软件防护计划资源的权限
<a name="malware-protection-s3-permissions-prerequisite"></a>

当您为 Amazon S3 存储桶启用 S3 恶意软件防护时， GuardDuty 会创建一个用作存储段保护计划标识符的恶意软件保护计划资源。如果您尚未使用 [AWS 托管策略:AmazonGuardDutyFullAccess\$1v2（推荐）](security-iam-awsmanpol.md#security-iam-awsmanpol-AmazonGuardDutyFullAccess-v2)，则必须添加以下权限才能创建此资源：
+ `guardDuty:CreateMalwareProtectionPlan`
+  `iam:PassRole` 

您可以使用以下自定义策略示例，并将替换为*placeholder values*适合您账户的值：

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "iam:PassRole"
            ],
            "Resource": "arn:aws:iam::111122223333:role/role-name",
            "Condition": {
                "StringEquals": {
                    "iam:PassedToService": "malware-protection-plan.guardduty.amazonaws.com"
                }
            }
        },
        {
            "Effect": "Allow",
            "Action": [
                "guardduty:CreateMalwareProtectionPlan"
            ],
            "Resource": "*"
        }
    ]
}
```

------

## 使用 GuardDuty 控制台为 S3 启用恶意软件防护
<a name="enabling-malware-protection-s3-guardduty-console"></a>

以下各节提供了您将在 GuardDuty 控制台中体验到的 step-by-step演练。

**使用 GuardDuty 控制台为 S3 启用恶意软件防护**

### 输入 S3 存储桶详细信息
<a name="enter-s3-bucket-details-malware-protection"></a>

按照以下步骤提供 Amazon S3 存储桶的详细信息：

1. 登录 AWS 管理控制台 并打开 GuardDuty 控制台，网址为[https://console.aws.amazon.com/guardduty/](https://console.aws.amazon.com/guardduty/)。

1. 使用页面右上角的 AWS 区域 选择器，选择要为 S3 启用恶意软件防护的区域。

1. 在导航窗格中，选择 **S3 恶意软件防护**。

1. 在**受保护的存储桶**部分中，选择**启用**，从而为属于您自己 AWS 账户的 S3 存储桶启用 S3 恶意软件防护。

1. 在**输入 S3 存储桶详细信息**下，输入 **Amazon S3 存储桶**的名称。此外也可以选择**浏览 S3** 来选择 S3 存储桶。

   S3 存储桶和为 S3 启用恶意软件防护的 AWS 账户 位置必须相同。 AWS 区域 例如，假设您的账户属于 `us-east-1` 区域，则您的 Amazon S3 存储桶所在的区域也必须为 `us-east-1`。

1. 在**前缀**下，您可以选择**此 S3 存储桶中的所有对象**或**以特定前缀开头的对象**。
   + 如果您想 GuardDuty 扫描选定**存储桶中所有新上传的对象**，请选择 S3 存储桶中的所有对象。
   + 如果要扫描属于特定前缀的新上传对象，请选择**以特定前缀开头的对象**。此选项有助您将恶意软件扫描的范围仅集中在选定的对象前缀上。有关使用前缀的更多信息，请参阅《Amazon S3 用户指南》中的[使用文件夹在 Amazon S3 控制台中整理对象](https://docs.aws.amazon.com/AmazonS3/latest/userguide/using-folders.html)**。

     选择**添加前缀**，然后输入前缀。您最多可以添加 5 个前缀。

### 为已扫描对象启用标记
<a name="tag-scanned-objects-s3-malware-protection"></a>

此为**可选**步骤。当您在对象上传到存储桶之前启用标记选项时，在完成扫描后， GuardDuty将添加一个预定义的标签，键为`GuardDutyMalwareScanStatus`，值为扫描结果。为发挥 S3 恶意软件防护的最佳效用，我们建议在扫描结束后再启用向 S3 对象添加标签的选项。使用此功能会产生标准的 S3 对象标记成本。有关更多信息，请参阅 [S3 恶意软件防护的定价和使用成本](pricing-malware-protection-for-s3-guardduty.md)。

**为什么应启用标记？**  
+ 启用标记是了解恶意软件扫描结果的诸多方法之一。有关 S3 恶意软件扫描结果的信息，请参阅[在 S3 恶意软件防护中监控 S3 对象扫描](monitoring-malware-protection-s3-scans-gdu.md)。
+ 在包含可能恶意对象的 S3 存储桶上设置基于标签的访问控制（TBAC）策略。有关注意事项以及如何实现基于标签的访问控制（TBAC），请参阅[将基于标签的访问控制（TBAC）与 S3 恶意软件防护结合使用](tag-based-access-s3-malware-protection.md)。

** GuardDuty 向 S3 对象添加标签的注意事项：**
+ 默认情况下，您最多可以将 10 个标签关联到一个对象。有关更多信息，请参阅《Amazon S3 用户指南》中的[使用标签对存储进行分类](https://docs.aws.amazon.com/AmazonS3/latest/userguide/object-tagging.html)**。

  如果所有 10 个标签都已在使用中，则 GuardDuty 无法将预定义的标签添加到扫描的对象。 GuardDuty 还会将扫描结果发布到您的默认 EventBridge 事件总线。有关更多信息，请参阅 [使用 Amazon 监控 S3 对象扫描 EventBridge](monitor-with-eventbridge-s3-malware-protection.md)。
+ 当所选的 IAM 角色不包括标记 S3 对象的权限时，即使为受保护的存储桶启用了标记， GuardDuty 也无法向扫描的 S3 对象添加标签。 GuardDuty 有关标记所需 IAM 角色权限的更多信息，请参阅[创建或更新 IAM 角色策略](malware-protection-s3-iam-policy-prerequisite.md)。

  GuardDuty 还会将扫描结果发布到您的默认 EventBridge 事件总线。有关更多信息，请参阅 [使用 Amazon 监控 S3 对象扫描 EventBridge](monitor-with-eventbridge-s3-malware-protection.md)。

**在**标记已扫描对象**下选择一个选项**
+ 如果** GuardDuty 要**为扫描的 S3 对象添加标签，请选择**标记对象**。
+ 如果您**不 GuardDuty 想**为扫描的 S3 对象添加标签，请选择**不标记对象**。

### 服务访问
<a name="service-access-s3-malware-protection"></a>

按照以下步骤选择一个现有的服务角色或创建一个新的服务角色，该服务角色应具有代表您执行恶意软件扫描操作的必要权限。这些操作可能包括扫描新上传的 S3 对象以及（可选）向这些对象添加标签。有关该角色将拥有的权限的信息，请参阅[创建或更新 IAM 角色策略](malware-protection-s3-iam-policy-prerequisite.md)。

在**服务访问权限**部分中，您可以执行以下操作之一：

1. **创建并使用新的服务角色**：您可以创建并使用具有执行恶意软件扫描所需权限的新服务角色。

   在**角色名称**下，您可以选择使用预先填充的名称， GuardDuty 也可以输入您选择的有意义的名称来标识角色。例如 `GuardDutyS3MalwareScanRole`。角色名称的长度必须为 1 到 64 个字符。有效字符为 a-z、A-Z、0-9 以及“\$1=,.@-\$1”。

1. **使用现有的服务角色**：您可以从**服务角色名称**列表中选择一个现有的服务角色。

   1. 您可以在**策略模板**下查看 S3 存储桶的策略。务必要在**输入 S3 存储桶详细信息**部分中输入或选择一个 S3 存储桶。

   1. 在**服务角色名称**下，从服务角色列表中选择一个服务角色。

您可以根据自己的需求对该策略进行更改。有关如何创建或更新 IAM 角色的更多详细信息，请参阅[创建或更新 IAM 角色策略](https://docs.aws.amazon.com//guardduty/latest/ug/malware-protection-s3-iam-policy-prerequisite.html)。

有关 IAM 角色权限的问题，请参阅[对 IAM 角色权限错误进行问题排查](troubleshoot-malware-protection-s3-iam-role-permissions-error.md)。

### （可选）标记恶意软件防护计划 ID
<a name="tag-malware-protection-policy-id-resource-gdu"></a>

这是一个可选步骤，有助您向将为 S3 存储桶资源创建的恶意软件防护计划资源添加标签。

每个标签都由两个部分组成：标签键和可选的标签值。有关标记及其优势的更多信息，请参阅为资源[添加标签。 AWS](https://docs.aws.amazon.com/tag-editor/latest/userguide/tagging.html)

**向恶意软件防护计划资源添加标签**

1. 输入标签**键**和可选的标签**值**。标签键和标签值都区分大小写。有关标签键和标签值名称的信息，请参阅 [Tag naming limits and requirements](https://docs.aws.amazon.com/tag-editor/latest/userguide/tagging.html#tag-conventions)。

1. 要向恶意软件防护计划资源添加其他标签，请选择**添加新标签**并重复上一步的操作。您最多可以为每个 资源添加 50 个标签。

1. 请选择**启用**。

## 使用 API/CLI 启用 S3 恶意软件防护
<a name="enabling-malware-protection-s3-guardduty-api-cli"></a>

本节包括您希望在您的 AWS 环境中以编程方式为 S3 启用恶意软件防护的步骤。这将需要您在 [创建或更新 IAM 角色策略](malware-protection-s3-iam-policy-prerequisite.md) 步骤中创建的 IAM 角色的 Amazon 资源名称（ARN）。

**使用 API/CLI 以编程方式启用 S3 恶意软件防护**
+ **通过使用 API**

  运行，[CreateMalwareProtectionPlan](https://docs.aws.amazon.com/guardduty/latest/APIReference/API_CreateMalwareProtectionPlan.html)为属于您自己账户的存储桶启用 S3 的恶意软件防护。
+ **通过使用 AWS CLI**

  根据您希望如何为 S3 启用恶意软件防护，以下列表提供了特定用例的 AWS CLI 示例命令。运行这些命令时，将*placeholder examples shown in red*、替换为适合您账户的值。

**AWS CLI 命令示例**
  + 使用以下 AWS CLI 命令为未标记已扫描的 S3 对象的存储桶启用 S3 恶意软件防护：

    ```
    aws guardduty create-malware-protection-plan --role "arn:aws:iam::111122223333:role/role-name" --protected-resource "S3Bucket"={"BucketName"="amzn-s3-demo-bucket1"}
    ```
  + 使用以下 AWS CLI 命令为具有特定对象前缀且未标记已扫描的 S3 对象的存储桶启用恶意软件防护：

    ```
    aws guardduty create-malware-protection-plan --role "arn:aws:iam::111122223333:role/role-name" --protected-resource '{"S3Bucket":{"BucketName":"amzn-s3-demo-bucket1", "ObjectPrefixes": ["Object1","Object1"]}}'
    ```
  + 使用以下 AWS CLI 命令为启用了已扫描 S3 对象标记的存储桶启用 S3 的恶意软件防护：

    ```
    aws guardduty create-malware-protection-plan --role "arn:aws:iam::111122223333:role/role-name" --protected-resource "S3Bucket"={"BucketName"="amzn-s3-demo-bucket1"} --actions "Tagging"={"Status"="ENABLED"}
    ```

  成功运行这些命令后，将会生成一个唯一的恶意软件防护计划 ID。要执行诸如更新或禁用存储桶防护计划之类的操作，您需要此恶意软件防护计划 ID。

有关 IAM 角色权限的问题，请参阅[对 IAM 角色权限错误进行问题排查](troubleshoot-malware-protection-s3-iam-role-permissions-error.md)。

# 创建或更新 IAM 角色策略
<a name="malware-protection-s3-iam-policy-prerequisite"></a>

要让 S3 恶意软件防护扫描以及（可选）向 S3 对象添加标签，您可以使用具有必要权限的服务角色代表您执行恶意软件扫描操作。有关使用服务角色启用 S3 恶意软件防护的更多信息，请参阅[服务访问权限](https://docs.aws.amazon.com//guardduty/latest/ug/enable-malware-protection-s3-bucket.html#service-access-s3-malware-protection)。此角色不同于[GuardDuty 恶意软件防护服务相关角色](https://docs.aws.amazon.com//guardduty/latest/ug/using-service-linked-roles.html)。

如果您倾向于使用 IAM 角色，则可以附加一个包含扫描所需权限的 IAM 角色，并（可选）向 S3 对象添加标签。您必须创建一个 IAM 角色或更新现有角色来包含这些权限。由于您启用 S3 恶意软件防护的每个 Amazon S3 存储桶都需要这些权限，因此您需要对要保护的每个 Amazon S3 存储桶执行此步骤。

以下列表说明了某些权限如何帮助您代表您 GuardDuty 执行恶意软件扫描：
+ 允许 Amazon EventBridge 操作创建和管理 EventBridge 托管规则，以便 S3 恶意软件防护可以监听您的 S3 对象通知。

  有关更多信息，请参阅《[亚马逊* EventBridge 用户指南》中的亚马逊 EventBridge *托管规则](https://docs.aws.amazon.com/eventbridge/latest/userguide/eb-rules.html#eb-rules-managed)。
+ 允许 Amazon S3 和 EventBridge 操作向发送此 EventBridge 存储桶中所有事件的通知

  有关更多信息，请参阅 [Amazon S3 用户指南 EventBridge中的启用](https://docs.aws.amazon.com/AmazonS3/latest/userguide/enable-event-notifications-eventbridge.html)*亚马逊*。
+ 允许访问上传的 S3 对象，并向已扫描的 S3 对象添加预定义标签 `GuardDutyMalwareScanStatus` 的 Amazon S3 操作。使用对象前缀时，请仅在目标前缀上添加 `s3:prefix` 条件。这样可以 GuardDuty 防止访问存储桶中的所有 S3 对象。
+ 在扫描使用支持的 DSSE-KMS 和 SSE-KMS 加密的存储桶并将测试对象放入该存储桶前，允许访问该对象的 KMS 密钥操作。

**注意**  
每次为账户中的存储桶启用 S3 恶意软件防护时，都需要执行此步骤。如果您已有一个 IAM 角色，则可以更新该现有角色的策略，以包含其他 Amazon S3 存储桶资源的详细信息。[添加 IAM 策略权限](#attach-iam-policy-s3-malware-protection) 主题提供了有关如何执行此操作的示例。

使用以下策略创建或更新 IAM 角色。

**Topics**
+ [添加 IAM 策略权限](#attach-iam-policy-s3-malware-protection)
+ [添加信任关系策略](#add-iam-trust-policy-s3-malware-protection)

## 添加 IAM 策略权限
<a name="attach-iam-policy-s3-malware-protection"></a>

您可以选择更新现有 IAM 角色的内联策略，也可以创建新的 IAM 角色。有关相关操作步骤的信息，请参阅《IAM 用户指南》中的[创建 IAM 角色](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_create_for-user.html)或[修改角色权限策略](https://docs.aws.amazon.com/IAM/latest/UserGuide/roles-managingrole-editing-console.html#roles-modify_permissions-policy)**。

向您首选的 IAM 角色添加以下权限模板。将以下占位符值替换为与您的账户相关的相应值：
+ 对于*amzn-s3-demo-bucket*，请替换为您的 Amazon S3 存储桶名称。

  要对多个 S3 存储桶资源使用相同的 IAM 角色，请更新现有策略，如以下示例所演示：

  ```
                      ...
                      ...
                      "Resource": [
                          "arn:aws:s3:::amzn-s3-demo-bucket/*",
                          "arn:aws:s3:::amzn-s3-demo-bucket2/*"
                      ],
                      ...
                      ...
  ```

  在添加与 S3 存储桶关联的新 ARN 之前，请务必添加逗号 (,)。无论您在策略模板中的任何位置引用 S3 存储桶 `Resource`，都要执行此操作。
+ 对于*111122223333*，请用您的 AWS 账户 身份证替换。
+ 对于*us-east-1*，请替换为你的 AWS 区域。
+ 将 *APKAEIBAERJR2EXAMPLE* 替换为客户托管密钥 ID。如果您的 S3 存储桶是使用 AWS KMS 密钥加密的，那么如果您在为存储桶配置恶意软件防护时选择 “[创建新角色](https://docs.aws.amazon.com//guardduty/latest/ug/enable-malware-protection-s3-bucket.html)” 选项，我们会添加相关权限。

  ```
  "Resource": "arn:aws:kms:us-east-1:111122223333:key/*"
  ```

**IAM 角色策略模板**

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [{
            "Sid": "AllowManagedRuleToSendS3EventsToGuardDuty",
            "Effect": "Allow",
            "Action": [
                "events:PutRule",
                "events:DeleteRule",
                "events:PutTargets",
                "events:RemoveTargets"
            ],
            "Resource": [
                "arn:aws:events:us-east-1:111122223333:rule/DO-NOT-DELETE-AmazonGuardDutyMalwareProtectionS3*"
            ],
            "Condition": {
                "StringLike": {
                    "events:ManagedBy": "malware-protection-plan.guardduty.amazonaws.com"
                }
            }
        },
        {
            "Sid": "AllowGuardDutyToMonitorEventBridgeManagedRule",
            "Effect": "Allow",
            "Action": [
                "events:DescribeRule",
                "events:ListTargetsByRule"
            ],
            "Resource": [
                "arn:aws:events:us-east-1:111122223333:rule/DO-NOT-DELETE-AmazonGuardDutyMalwareProtectionS3*"
            ]
        },
        {
            "Sid": "AllowPostScanTag",
            "Effect": "Allow",
            "Action": [
                "s3:PutObjectTagging",
                "s3:GetObjectTagging",
                "s3:PutObjectVersionTagging",
                "s3:GetObjectVersionTagging"
            ],
            "Resource": [
                "arn:aws:s3:::amzn-s3-demo-bucket/*"
            ]
        },
        {
            "Sid": "AllowEnableS3EventBridgeEvents",
            "Effect": "Allow",
            "Action": [
                "s3:PutBucketNotification",
                "s3:GetBucketNotification"
            ],
            "Resource": [
                "arn:aws:s3:::amzn-s3-demo-bucket"
            ]
        },
        {
            "Sid": "AllowPutValidationObject",
            "Effect": "Allow",
            "Action": [
                "s3:PutObject"
            ],
            "Resource": [
                "arn:aws:s3:::amzn-s3-demo-bucket/malware-protection-resource-validation-object"
            ]
        },
        {
            "Sid": "AllowCheckBucketOwnership",
            "Effect": "Allow",
            "Action": [
                "s3:ListBucket"
            ],
            "Resource": [
                "arn:aws:s3:::amzn-s3-demo-bucket"
            ]
        },
        {
           "Sid": "AllowMalwareScan",
            "Effect": "Allow",
            "Action": [
                "s3:GetObject",
                "s3:GetObjectVersion"
            ],
            "Resource": [
                "arn:aws:s3:::amzn-s3-demo-bucket/*"
            ]
        },
        {
            "Sid": "AllowDecryptForMalwareScan",
            "Effect": "Allow",
            "Action": [
                "kms:GenerateDataKey",
                "kms:Decrypt"
            ],
            "Resource": "arn:aws:kms:us-east-1:111122223333:key/APKAEIBAERJR2EXAMPLE",
            "Condition": {
                "StringLike": {
                    "kms:ViaService": "s3.us-east-1.amazonaws.com"
                }
            }
        }
    ]
}
```

------

## 添加信任关系策略
<a name="add-iam-trust-policy-s3-malware-protection"></a>

将以下信任策略附加到您的 IAM 角色。有关相关操作步骤的信息，请参阅[修改角色信任策略](https://docs.aws.amazon.com/IAM/latest/UserGuide/roles-managingrole-editing-console.html#roles-managingrole_edit-trust-policy)。

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Principal": {
        "Service": "malware-protection-plan.guardduty.amazonaws.com"
      },
      "Action": "sts:AssumeRole"
    }
  ]
}
```

------

# 对 IAM 角色权限错误进行问题排查
<a name="troubleshoot-malware-protection-s3-iam-role-permissions-error"></a>

为 S3 启用恶意软件防护时， GuardDuty 会检查您的 IAM 服务角色是否具有验证 Amazon S3 存储桶所有权的必要权限。如果这些权限缺失或配置错误，您可能会收到以下消息：

```
"message": "The request was rejected because provided IAM role does not have the required permissions to validate S3 bucket ownership."
"type": "InvalidInputException"
```

以下场景可帮助您对此错误进行问题排查：

**缺少 IAM 角色权限**  
+ IAM 角色必须具有所需权限才能允许 S3 恶意软件防护代入该角色。
+ GuardDuty 使用`"s3:ListBucket"`权限验证存储桶所有权。您使用的 IAM 角色必须具有此权限。
有关权限的信息，请参阅[创建或更新 IAM 角色策略](malware-protection-s3-iam-policy-prerequisite.md)。

**IAM 角色可用性**  
+ 创建新的 IAM 角色时，请等待几分钟让更改达到最终一致性，然后再启用 S3 恶意软件防护。如果在创建角色后立即尝试启用防护计划，验证可能会失败。
+ 对于基础设施即代码 (IaC) 部署， GuardDuty 建议声明资源依赖关系，以确保 IAM 角色达到最终一致性。

  有关如何执行此操作的示例模板，请参阅[GuardDuty GitHub存储库](https://github.com/aws-samples/guardduty-malware-protection/tree/main/cdk)。

**跨区域启用**  
确保您的 Amazon S3 存储桶位于您为 S3 启用恶意软件防护的同一区域 GuardDuty。

# 启用 S3 恶意软件防护后的步骤
<a name="malware-protection-s3-steps-after-enabling"></a>

本节列出了为存储桶启用 S3 恶意软件防护后可以完成的步骤。以下步骤按顺序列出，有助您完成后续步骤：

**为存储桶启用 S3 恶意软件防护后的操作**

1. **添加基于标签的访问控制（TBAC）资源策略**：启用标记时，务必要首先将 TBAC 策略添加到 S3 存储桶资源，然后再将对象上传到所选存储桶。有关更多信息，请参阅 [在 S3 存储桶资源上添加 TBAC](tag-based-access-s3-malware-protection.md#apply-tbac-s3-malware-protection)。

1. **监控恶意软件防护计划状态**：监控每个受保护存储桶的**状态**列。有关可能状态及其含义的信息，请参阅[查看和了解受保护的存储桶状态](malware-protection-s3-bucket-status-gdu.md)。

1. 通过选择以下选项之一@@ **开始扫描**：
   + **上传对象**：

     1. 打开 Amazon S3 控制台，网址为 [https://console.aws.amazon.com/s3/](https://console.aws.amazon.com/s3/)。

     1. 将文件上传到您启用了此功能的 S3 存储桶或对象前缀。有关上传文件的步骤，请参阅《Amazon S3 用户指南》中的[将对象上传到存储桶](https://docs.aws.amazon.com/AmazonS3/latest/userguide/uploading-an-object-bucket.html)**。
   + **启动按需扫描**：[按需 S3 恶意软件扫描 GuardDuty](malware-protection-s3-on-demand.md)

1. **监控 S3 对象扫描状态和扫描结果**：此步骤包括有关如何检查 S3 对象恶意软件扫描状态的信息。    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/guardduty/latest/ug/malware-protection-s3-steps-after-enabling.html)

# 按需 S3 恶意软件扫描 GuardDuty
<a name="malware-protection-s3-on-demand"></a>

GuardDuty 适用于 S3 的恶意软件防护会持续监控新的 S3 上传。对于在启用保护之前存在的对象，或者要重新扫描以前扫描的对象，您可以在为存储桶启用恶意软件保护计划后启动按需 S3 GuardDuty 恶意软件扫描。

 按需恶意软件扫描使用恶意软件保护计划的 IAM 角色进行对象访问和应用配置。扫描将覆盖存储桶的恶意软件保护计划中配置的所有前缀。

**注意**  
S3 恶意软件防护配额适用于按需恶意软件扫描。有关更多信息，请参阅[S3 恶意软件防护中的配额](malware-protection-s3-quotas-guardduty.md)。  
有关定价的更多信息，请参阅[S3 恶意软件防护的定价和使用成本](pricing-malware-protection-for-s3-guardduty.md)。

## 先决条件
<a name="prerequisites-malware-protection-s3-on-demand"></a>

在开始按需恶意软件扫描之前，您的帐户必须满足以下先决条件：
+ 已在目标存储桶上启用了 S3 的恶意软件防护。请参阅[为存储桶配置 S3 恶意软件防护](configuring-malware-protection-for-s3-guardduty.md)了解更多信息。
+ 该[AWS 托管策略:AmazonGuardDutyFullAccess\$1v2（推荐）](security-iam-awsmanpol.md#security-iam-awsmanpol-AmazonGuardDutyFullAccess-v2)策略附加到调用 API 的 IAM 用户或 IAM 角色。

## 开始按需恶意软件扫描
<a name="malware-protection-initiate-malware-protection-s3-on-demand"></a>

使用 [SendObjectMalwareScan](https://docs.aws.amazon.com/guardduty/latest/APIReference/API_SendObjectMalwareScan.html)API 操作，它需要 S3 对象路径作为输入。

------
#### [ API/CLI ]

您可以扫描对象的最新版本，也可以指定要扫描的特定版本。

要扫描对象的特定版本，请执行以下操作：

```
aws guardduty send-object-malware-scan --s3-object '{"Bucket": "amzn-s3-demo-bucket", "Key": "APKAEIBAERJR2EXAMPLE", "VersionId": "d41d8cd98f00b204e9800998eEXAMPLE"}'
```

要扫描对象的最新版本，请执行以下操作：

```
aws guardduty send-object-malware-scan --s3-object '{"Bucket": "amzn-s3-demo-bucket", "Key": "APKAEIBAERJR2EXAMPLE"}'
```

------

**重要**  
成功的 API 调用确认扫描请求已被接受。但是，重要的是要监控扫描结果，以确保成功完成扫描并发现任何问题，例如访问对象时出错。有关更多信息，请参阅 [在 S3 恶意软件防护中监控 S3 对象扫描](monitoring-malware-protection-s3-scans-gdu.md)。

# 将基于标签的访问控制（TBAC）与 S3 恶意软件防护结合使用
<a name="tag-based-access-s3-malware-protection"></a>

为存储桶启用 S3 恶意软件防护时，您可以选择启用标记（可选）。尝试扫描选定存储桶中新上传的 S3 对象后，向扫描的对象 GuardDuty 添加标签以提供恶意软件扫描状态。启用标记时会产生直接使用成本。有关更多信息，请参阅 [S3 恶意软件防护的定价和使用成本](pricing-malware-protection-for-s3-guardduty.md)。

GuardDuty 使用预定义的标签，密钥为`GuardDutyMalwareScanStatus`，值作为恶意软件扫描状态之一。有关这些值的更多信息，请参阅 [可能的 S3 对象扫描状态和结果状态](monitoring-malware-protection-s3-scans-gdu.md#s3-object-scan-result-value-malware-protection)。

** GuardDuty 向 S3 对象添加标签的注意事项：**
+ 默认情况下，您最多可以将 10 个标签关联到一个对象。有关更多信息，请参阅《Amazon S3 用户指南》中的[使用标签对存储进行分类](https://docs.aws.amazon.com/AmazonS3/latest/userguide/object-tagging.html)**。

  如果所有 10 个标签都已在使用中，则 GuardDuty 无法将预定义的标签添加到扫描的对象。 GuardDuty 还会将扫描结果发布到您的默认 EventBridge 事件总线。有关更多信息，请参阅 [使用 Amazon 监控 S3 对象扫描 EventBridge](monitor-with-eventbridge-s3-malware-protection.md)。
+ 当所选的 IAM 角色不包括标记 S3 对象的权限时，即使为受保护的存储桶启用了标记， GuardDuty 也无法向扫描的 S3 对象添加标签。 GuardDuty 有关标记所需 IAM 角色权限的更多信息，请参阅[创建或更新 IAM 角色策略](malware-protection-s3-iam-policy-prerequisite.md)。

  GuardDuty 还会将扫描结果发布到您的默认 EventBridge 事件总线。有关更多信息，请参阅 [使用 Amazon 监控 S3 对象扫描 EventBridge](monitor-with-eventbridge-s3-malware-protection.md)。

## 在 S3 存储桶资源上添加 TBAC
<a name="apply-tbac-s3-malware-protection"></a>

您可以使用 S3 存储桶资源策略来为 S3 对象管理基于标签的访问控制（TBAC）。您可以向特定用户提供访问和读取 S3 对象的权限。如果您的组织是通过使用创建的 AWS Organizations，则必须强制任何人都不能修改由添加的标签 GuardDuty。有关更多信息，请参阅《AWS Organizations 用户指南》**中的 [Preventing tags from being modified except by authorized principals](https://docs.aws.amazon.com/organizations/latest/userguide/orgs_manage_policies_scps_examples_tagging.html#example-require-restrict-tag-mods-to-admin)。链接主题中使用的示例提到的是 `ec2`。使用此示例时，请*ec2*替换为`s3`。

以下列表说明了 TBAC 的可能用途：
+ 除 S3 恶意软件防护服务主体之外，阻止所有用户读取尚未使用以下标签键值对标记的 S3 对象：

  `GuardDutyMalwareScanStatus`:`Potential key value`
+ 仅允许 GuardDuty 向扫描的 S3 对象添加`GuardDutyMalwareScanStatus`以值作为扫描结果的标签键。以下策略模板可能允许具有访问权限的特定用户潜在覆盖标签键值对。

**S3 存储桶资源策略示例：**

替换示例策略中的以下占位符值：
+ *IAM-role-name*-提供用于在存储桶中为 S3 配置恶意软件防护的 IAM 角色。
+ *555555555555*-提供与受保护存储桶 AWS 账户 关联的。
+ *amzn-s3-demo-bucket*-提供受保护的存储桶名称。

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [{
            "Sid": "NoReadUnlessClean",
            "Effect": "Deny",
            "NotPrincipal": {
                "AWS": [
                "arn:aws:sts::555555555555:assumed-role/IAM-role-name/GuardDutyMalwareProtection",
                "arn:aws:iam::555555555555:role/IAM-role-name"
                ]
            },
            "Action": [
                "s3:GetObject",
                "s3:GetObjectVersion"
            ],
            "Resource": "arn:aws:s3:::amzn-s3-demo-bucket/*",
            "Condition": {
                "StringNotEquals": {
                    "s3:ExistingObjectTag/GuardDutyMalwareScanStatus": "NO_THREATS_FOUND"
                }
            }
        },
        {
            "Sid": "OnlyGuardDutyCanTagScanStatus",
            "Effect": "Deny",
            "NotPrincipal": {
                "AWS": [
                    "arn:aws:sts::555555555555:assumed-role/IAM-role-name/GuardDutyMalwareProtection",
                    "arn:aws:iam::555555555555:role/IAM-role-name"
                ]
            },
            "Action": "s3:PutObjectTagging",
            "Resource": "arn:aws:s3:::amzn-s3-demo-bucket/*",
            "Condition": {
                "ForAnyValue:StringEquals": {
                    "s3:RequestObjectTagKeys": "GuardDutyMalwareScanStatus"
                }
            }
        }
    ]
}
```

------

有关标记 S3 资源的更多信息，请参阅[标记和访问控制策略](https://docs.aws.amazon.com/AmazonS3/latest/userguide/tagging-and-policies.html)。

# 查看和了解受保护的存储桶状态
<a name="malware-protection-s3-bucket-status-gdu"></a>

为存储桶启用 S3 恶意软件防护后，状态将指示该功能是否已配置并按预期运行。此状态与唯一的恶意软件防护计划标识符 (ID) 相关联。 GuardDuty 在启用该功能时创建此 ID。

使用以下过程查看受保护存储桶的状态：

1. 登录 AWS 管理控制台 并打开 GuardDuty 控制台，网址为[https://console.aws.amazon.com/guardduty/](https://console.aws.amazon.com/guardduty/)。

1. 在导航窗格中，选择 **S3 恶意软件防护**。

1. 在**受保护存储桶**表中，查看 **S3 存储桶**的相应**状态**列。

下表列出并描述了与恶意软件防护计划资源关联的状态值。通过了解这些状态对您的受保护存储桶意味着什么，您可以更好地确保在上传对象时 GuardDuty 启动自动恶意软件扫描。


| Status | 说明 | 
| --- | --- | 
|  活跃  |  您的 S3 存储桶已成功配置了 S3 恶意软件防护。 当状态为*活动*时，对 IAM 角色的更改（删除或权限修改）不会将状态更新为*警告*或*错误*。建议使用[监控 S3 对象扫描](monitoring-malware-protection-s3-scans-gdu.md)中描述的任一方法持续监控扫描状态。  | 
|  警告**[*](#fix-protection-status-s3-malware)**  |  根据 S3 恶意软件防护的设计，出现警告时不会受到影响。当 GuardDuty 注意到新的 S3 对象时，它将启动恶意软件扫描。成功启动扫描后，**状态**列的值可能需要几分钟才会变为**活动**。在 “**状态**” 列值更新后，您将收到 EventBridge 通知。  | 
|  错误**[*](#fix-protection-status-s3-malware)**  |  您的存储桶未受保护。与此 S3 存储桶相关的所有恶意软件扫描都不会完成。可能有一个或多个可能的根本原因。  | 

**\$1** 有关潜在问题以及相关问题解决步骤的信息，请参阅[恶意软件防护计划状态故障排除](troubleshoot-s3-malware-protection-status-errors.md)。

# 在 S3 恶意软件防护中监控 S3 对象扫描
<a name="monitoring-malware-protection-s3-scans-gdu"></a>

使用带有 GuardDuty 检测器 ID 的 S3 恶意软件防护时，如果您的 Amazon S3 对象可能是恶意的，则 GuardDuty 会生成[S3 恶意软件防护调查发现类型](gdu-malware-protection-s3-finding-types.md)。使用 GuardDuty 控制台和 APIs，您可以查看生成的调查结果。有关有助了解此调查发现类型的信息，请参阅[调查发现详细信息](guardduty_findings-summary.md)。

在未启用 GuardDuty （无检测器 ID）的情况下对 S3 使用恶意软件防护时，即使扫描的 Amazon S3 对象可能是恶意的，也 GuardDuty 无法生成任何发现。

**Topics**
+ [可能的 S3 对象扫描状态和结果状态](#s3-object-scan-result-value-malware-protection)
+ [使用 Amazon 监控 S3 对象扫描 EventBridge](monitor-with-eventbridge-s3-malware-protection.md)
+ [使用 GuardDuty 托管标签监控 S3 对象扫描](monitor-enable-s3-object-tagging-malware-protection.md)
+ [中的 S3 对象扫描状态指标 CloudWatch](monitor-cloudwatch-metrics-s3-malware-protection.md)

## 可能的 S3 对象扫描状态和结果状态
<a name="s3-object-scan-result-value-malware-protection"></a>

本节介绍可能的 S3 对象扫描状态值和扫描结果值。

S3 对象扫描状态指示恶意软件扫描的状态，例如已完成、已跳过或失败。

S3 对象恶意软件扫描结果状态根据扫描状态值指示扫描结果。每个恶意软件扫描结果状态值都映射一个扫描状态。

以下列表提供了可能的 S3 对象扫描结果值。如果您启用了标记，则可以通过[使用 S3 对象标签](monitor-enable-s3-object-tagging-malware-protection.md)来监控扫描结果。扫描后，标签值将具有以下扫描结果值之一。

**S3 对象潜在恶意软件扫描结果状态值**
+ `NO_THREATS_FOUND`— 未 GuardDuty 检测到与扫描对象相关的潜在威胁。
+ `THREATS_FOUND`— GuardDuty 检测到与扫描对象相关的潜在威胁。
+ `UNSUPPORTED`：S3 恶意软件防护会因几个原因跳过扫描。可能的原因包括文件受密码保护、归档文件压缩率极高、[S3 恶意软件防护配额](malware-protection-s3-quotas-guardduty.md)，以及可能不支持某些 Amazon S3 功能。有关更多信息，请参阅 [S3 恶意软件防护的功能](s3-malware-protection-capability.md)。
+ `ACCESS_DENIED`— GuardDuty 无法访问此对象进行扫描。检查与此存储桶关联的 IAM 角色权限。有关更多信息，请参阅 [创建或更新 IAM 角色策略](malware-protection-s3-iam-policy-prerequisite.md)。

  如果您启用了扫描后 S3 对象标记，请参阅[对 S3 对象扫描后标记失败问题进行故障排除](troubleshoot-s3-post-scan-tag-failures.md)。
+ `FAILED`— 由于内部错误， GuardDuty 无法对此对象执行恶意软件扫描。

以下列表提供了可能的 S3 对象扫描状态值及其与 S3 对象扫描结果的映射。

**可能的 S3 对象扫描状态值**
+ **已完成**：扫描已成功完成并指示 S3 对象是否存在恶意软件。在此场景中，可能的 S3 对象扫描结果值或为 `THREATS_FOUND` 或 `NO_THREATS_FOUND`。
+ **已跳过** — GuardDuty 如果扫描此 S3 对象不受 S3 恶意软件防护支持，或者 GuardDuty无法访问选定存储桶中上传的 S3 对象，则跳过恶意软件扫描。

  在此场景中，可能的 S3 对象扫描结果值或为 `UNSUPPORTED` 或 `ACCESS_DENIED`。

  GuardDuty 如果所需的 IAM 角色被删除，也会跳过扫描。
+ **失败** — 与 S3 对象扫描结果值类似`FAILED`，此扫描状态表示 GuardDuty 由于内部错误而无法对 S3 对象执行恶意软件扫描。

# 使用 Amazon 监控 S3 对象扫描 EventBridge
<a name="monitor-with-eventbridge-s3-malware-protection"></a>

*Amazon EventBridge* 是一项无服务器事件总线服务，可以轻松地将您的应用程序与来自各种来源的数据连接起来。 EventBridge 提供来自您自己的应用程序、 Software-as-a-Service (SaaS) 应用程序和 AWS 服务的实时数据流，并将这些数据路由到 Lambda 等目标。这使您能够监控服务中发生的事件，并构建事件驱动的架构。有关更多信息，请参阅 [Amazon EventBridge 用户指南](https://docs.aws.amazon.com/eventbridge/latest/userguide/)。

作为受 S3 恶意软件防护保护的 S3 存储桶的所有者账户，在以下情况下向默认事件总线 GuardDuty 发布 EventBridge 通知：
+ 任何受保护存储桶的**恶意软件防护计划资源状态**会发生变化。有关不同状态的更多信息，请参阅[查看和了解受保护的存储桶状态](malware-protection-s3-bucket-status-gdu.md)。

  要为资源状态设置 Amazon EventBridge (EventBridge) 规则，请参阅[恶意软件防护计划资源状态](#resource-status-malware-protection-s3-ev)。
+ S **3 对象扫描结果**将发布到您的默认 EventBridge 事件总线。

  `s3Throttled` 字段指示在 Amazon S3 存储桶中上传或检索存储时是否出现延迟。`true` 值指示存在延迟，`false` 指示没有延迟。

  如果扫描结果的 `s3Throttled` 为 `true`，则 Amazon S3 会提供有关前缀设置方式的建议，以帮助您减少每个前缀的每秒事务处理量（TPS）。有关更多信息，请参阅《Amazon S3 用户指南》中的[最佳实践设计模式：优化 Amazon S3 性能](https://docs.aws.amazon.com/AmazonS3/latest/userguide/optimizing-performance.html)**。

  有关为 S3 对象扫描结果设置 Amazon EventBridge (EventBridge) 规则的信息，请参阅[S3 对象扫描结果](#s3-object-scan-status-malware-protection-s3-ev)。
+ 由于以下原因，出现**扫描后标记失败事件**：
  + IAM 角色缺少标记对象的权限。

    该[添加 IAM 策略权限](malware-protection-s3-iam-policy-prerequisite.md#attach-iam-policy-s3-malware-protection)模板包括为对象 GuardDuty 添加标签的权限。
  + IAM 角色中指定的存储桶资源或对象已不再存在。
  + 关联的 S3 对象已达到最大标签限制。有关标签限制的更多信息，请参阅《Amazon S3 用户指南》中的[使用标签对存储进行分类](https://docs.aws.amazon.com/AmazonS3/latest/userguide/object-tagging.html)**。

  要为扫描后标签失败事件设置 Amazon EventBridge (EventBridge) 规则，请参阅[扫描后标记失败事件](#post-tag-failure-malware-protection-s3-ev)。

## 设置 EventBridge 规则
<a name="set-up-malware-protection-s3-eventbridge-rules"></a>

您可以在账户中设置 EventBridge 规则，将资源状态、扫描后标签失败事件或 S3 对象扫描结果发送给其他 AWS 服务人。作为委托 GuardDuty 管理员帐户，当恶意软件防护计划资源状态发生变化时，您将收到恶意软件防护计划资源状态通知。

将适用标准 EventBridge 定价。有关更多信息，请参阅 [Amazon EventBridge 定价](https://aws.amazon.com/eventbridge/pricing/)。

在该示例中，显示的所有值*red*均为占位符。这些值将根据您账户中的值以及是否检测到恶意软件而改变。

**Topics**
+ [恶意软件防护计划资源状态](#resource-status-malware-protection-s3-ev)
+ [S3 对象扫描结果](#s3-object-scan-status-malware-protection-s3-ev)
+ [扫描后标记失败事件](#post-tag-failure-malware-protection-s3-ev)

### 恶意软件防护计划资源状态
<a name="resource-status-malware-protection-s3-ev"></a>

您可以根据以下场景创建 EventBridge 事件模式：

**可能的 `detail-type` 值**
+ `"GuardDuty Malware Protection Resource Status Active"`
+ `"GuardDuty Malware Protection Resource Status Warning"`
+ `"GuardDuty Malware Protection Resource Status Error"`

**事件模式**

```
{
      "detail-type": ["potential detail-type"],
      "source": ["aws.guardduty"]
}
```

**`GuardDuty Malware Protection Resource Status Active` 示例通知架构**：

```
{
    "version": "0",
    "id": "6a7e8feb-b491-4cf7-a9f1-bf3703467718",
    "detail-type": "GuardDuty Malware Protection Resource Status Active",
    "source": "aws.guardduty",
    "account": "111122223333",
    "time": "2017-12-22T18:43:48Z",
    "region": "us-east-1",
    "resources": ["arn:aws:guardduty:us-east-1:111122223333:malware-protection-plan/b4c7f464ab3a4EXAMPLE"],
    "detail": {
        "schemaVersion": "1.0",
        "eventTime": "2024-02-28T01:01:01Z",
        "s3BucketDetails": {
            "bucketName": "amzn-s3-demo-bucket"
        },
        "resourceStatus": "ACTIVE"
    }
}
```

**`GuardDuty Malware Protection Resource Status Warning` 示例通知架构**：

```
{
    "version": "0",
    "id": "6a7e8feb-b491-4cf7-a9f1-bf3703467718",
    "detail-type": "GuardDuty Malware Protection Resource Status warning",
    "source": "aws.guardduty",
    "account": "111122223333",
    "time": "2017-12-22T18:43:48Z",
    "region": "us-east-1",
    "resources": ["arn:aws:guardduty:us-east-1:111122223333:malware-protection-plan/b4c7f464ab3a4EXAMPLE"],
    "detail": {
        "schemaVersion": "1.0",
        "eventTime": "2024-02-28T01:01:01Z",
        "s3BucketDetails": {
            "bucketName": "amzn-s3-demo-bucket"
        },
        "resourceStatus": "WARNING",
        "statusReasons": [
         {
            "code": "INSUFFICIENT_TEST_OBJECT_PERMISSIONS"
         }
        ]
    }
}
```

**`GuardDuty Malware Protection Resource Status Error` 示例通知架构**：

```
{
    "version": "0",
    "id": "fc7a35b7-83bd-3c1f-ecfa-1b8de9e7f7d2",
    "detail-type": "GuardDuty Malware Protection Resource Status Error",
    "source": "aws.guardduty",
    "account": "111122223333",
    "time": "2017-12-22T18:43:48Z",
    "region": "us-east-1",
    "resources": ["arn:aws:guardduty:us-east-1:111122223333:malware-protection-plan/b4c7f464ab3a4EXAMPLE"],
    "detail": {
        "schemaVersion": "1.0",
        "eventTime": "2024-02-28T01:01:01Z",
        "s3BucketDetails": {
            "bucketName": "amzn-s3-demo-bucket"
        },
        "resourceStatus": "ERROR",
        "statusReasons": [
        {
            "code": "EVENTBRIDGE_MANAGED_EVENTS_DELIVERY_DISABLED"
        }
       ]
    }
}
```

`statusReasons` 值将根据 `resourceStatus` `ERROR` 背后的原因填充。

有关以下警告和错误的故障排除步骤的信息，请参阅[恶意软件防护计划状态故障排除](troubleshoot-s3-malware-protection-status-errors.md)。

### S3 对象扫描结果
<a name="s3-object-scan-status-malware-protection-s3-ev"></a>

```
{
  "detail-type": ["GuardDuty Malware Protection Object Scan Result"],
  "source": ["aws.guardduty"]
}
```

**`NO_THREATS_FOUND` 示例通知架构**：

```
{
    "version": "0",
    "id": "72c7d362-737a-6dce-fc78-9e27a0171419",
    "detail-type": "GuardDuty Malware Protection Object Scan Result",
    "source": "aws.guardduty",
    "account": "111122223333",
    "time": "2024-02-28T01:01:01Z",
    "region": "us-east-1",
    "resources": ["arn:aws:guardduty:us-east-1:111122223333:malware-protection-plan/b4c7f464ab3a4EXAMPLE"],
    "detail": {
        "schemaVersion": "1.0",
        "scanStatus": "COMPLETED",
        "resourceType": "S3_OBJECT",
        "s3ObjectDetails": {
            "bucketName": "amzn-s3-demo-bucket",
            "objectKey": "APKAEIBAERJR2EXAMPLE",
            "eTag": "ASIAI44QH8DHBEXAMPLE",
            "versionId" : "d41d8cd98f00b204e9800998eEXAMPLE",
            "s3Throttled": false
        },
        "scanResultDetails": {
            "scanResultStatus": "NO_THREATS_FOUND",
            "threats": null
        }
    }
}
```

**`THREATS_FOUND` 示例通知架构**：

```
{
    "version": "0",
    "id": "72c7d362-737a-6dce-fc78-9e27a0171419",
    "detail-type": "GuardDuty Malware Protection Object Scan Result",
    "source": "aws.guardduty",
    "account": "111122223333",
    "time": "2024-02-28T01:01:01Z",
    "region": "us-east-1",
    "resources": ["arn:aws:guardduty:us-east-1:111122223333:malware-protection-plan/b4c7f464ab3a4EXAMPLE"],
    "detail": {
        "schemaVersion": "1.0",
        "scanStatus": "COMPLETED",
        "resourceType": "S3_OBJECT",
        "s3ObjectDetails": {
            "bucketName": "amzn-s3-demo-bucket",
            "objectKey": "APKAEIBAERJR2EXAMPLE",
            "eTag": "ASIAI44QH8DHBEXAMPLE",
            "versionId" : "d41d8cd98f00b204e9800998eEXAMPLE",
            "s3Throttled": false
        },
        "scanResultDetails": {
            "scanResultStatus": "THREATS_FOUND",
            "threats": [
                {
                    "name": "EICAR-Test-File (not a virus)"
                }
            ]
        }
    }
}
```

**注意**  
`scanResultDetails.Threats` 字段仅包含一种威胁。默认情况下，S3 恶意软件防护扫描会报告第一个检测到的威胁。此后，`scanStatus` 将设置为 `COMPLETED`。

**`UNSUPPORTED` 扫描结果状态的示例通知架构（已跳过）**：

```
{
    "version": "0",
    "id": "72c7d362-737a-6dce-fc78-9e27a0EXAMPLE",
    "detail-type": "GuardDuty Malware Protection Object Scan Result",
    "source": "aws.guardduty",
    "account": "111122223333",
    "time": "2024-02-28T01:01:01Z",
    "region": "us-east-1",
    "resources": ["arn:aws:guardduty:us-east-1:111122223333:malware-protection-plan/b4c7f464ab3a4EXAMPLE"],
    "detail": {
        "schemaVersion": "1.0",
        "scanStatus": "SKIPPED",
        "resourceType": "S3_OBJECT",
        "s3ObjectDetails": {
            "bucketName": "amzn-s3-demo-bucket",
            "objectKey": "APKAEIBAERJR2EXAMPLE",
            "eTag": "ASIAI44QH8DHBEXAMPLE",
            "versionId" : "d41d8cd98f00b204e9800998eEXAMPLE",
            "s3Throttled": false
        },
        "scanResultDetails": {
            "scanResultStatus": "UNSUPPORTED",
            "threats": null
        }
    }
}
```

**`ACCESS_DENIED` 扫描结果状态的示例通知架构（已跳过）**：

```
{
    "version": "0",
    "id": "72c7d362-737a-6dce-fc78-9e27a0EXAMPLE",
    "detail-type": "GuardDuty Malware Protection Object Scan Result",
    "source": "aws.guardduty",
    "account": "111122223333",
    "time": "2024-02-28T01:01:01Z",
    "region": "us-east-1",
    "resources": ["arn:aws:guardduty:us-east-1:111122223333:malware-protection-plan/b4c7f464ab3a4EXAMPLE"],
    "detail": {
        "schemaVersion": "1.0",
        "scanStatus": "SKIPPED",
        "resourceType": "S3_OBJECT",
        "s3ObjectDetails": {
            "bucketName": "amzn-s3-demo-bucket",
            "objectKey": "APKAEIBAERJR2EXAMPLE",
            "eTag": "ASIAI44QH8DHBEXAMPLE",
            "versionId" : "d41d8cd98f00b204e9800998eEXAMPLE",
            "s3Throttled": false
        },
        "scanResultDetails": {
            "scanResultStatus": "ACCESS_DENIED",
            "threats": null
        }
    }
}
```

**`FAILED` 扫描结果状态的示例通知架构**：

```
{
    "version": "0",
    "id": "72c7d362-737a-6dce-fc78-9e27a0EXAMPLE",
    "detail-type": "GuardDuty Malware Protection Object Scan Result",
    "source": "aws.guardduty",
    "account": "111122223333",
    "time": "2024-02-28T01:01:01Z",
    "region": "us-east-1",
    "resources": ["arn:aws:guardduty:us-east-1:111122223333:malware-protection-plan/b4c7f464ab3a4EXAMPLE"],
    "detail": {
        "schemaVersion": "1.0",
        "scanStatus": "FAILED",
        "resourceType": "S3_OBJECT",
        "s3ObjectDetails": {
            "bucketName": "amzn-s3-demo-bucket",
            "objectKey": "APKAEIBAERJR2EXAMPLE",
            "eTag": "ASIAI44QH8DHBEXAMPLE",
            "versionId" : "d41d8cd98f00b204e9800998eEXAMPLE",
            "s3Throttled": false
        },
        "scanResultDetails": {
            "scanResultStatus": "FAILED",
            "threats": null
        }
    }
}
```

### 扫描后标记失败事件
<a name="post-tag-failure-malware-protection-s3-ev"></a>

**事件模式**：

```
{
      "detail-type": "GuardDuty Malware Protection Post Scan Action Failed",
      "source": "aws.guardduty"
 }
```

**`ACCESS_DENIED` 示例通知架构**：

```
{
    "version": "0",
    "id": "746acd83-d75c-5b84-91d2-dad5f13ba0d7",
    "detail-type": "GuardDuty Malware Protection Post Scan Action Failed",
    "source": "aws.guardduty",
    "account": "111122223333",
    "time": "2024-06-10T16:16:08Z",
    "region": "us-east-1",
    "resources": ["arn:aws:guardduty:us-east-1:111122223333:malware-protection-plan/b4c7f464ab3a4EXAMPLE"],
    "detail": {
        "schemaVersion": "1.0",
        "eventTime": "2024-06-10T16:16:08Z",
        "s3ObjectDetails": {
            "bucketName": "amzn-s3-demo-bucket",
            "objectKey": "2024-03-10-16-16-00-7D723DE8DBE9Y2E0",
            "eTag": "0e9eeec810ad8b61d69112c15c2a5hb6",
            "versionId" : "d41d8cd98f00b204e9800998eEXAMPLE",
            "s3Throttled": false
        },
        "postScanActions": [{
            "actionType": "TAGGING",
            "failureReason": "ACCESS_DENIED"
        }]
    }
}
```

**`MAX_TAG_LIMIT_EXCEEDED` 示例通知架构**：

```
{
    "version": "0",
    "id": "746acd83-d75c-5b84-91d2-dad5f13ba0d7",
    "detail-type": "GuardDuty Malware Protection Post Scan Action Failed",
    "source": "aws.guardduty",
    "account": "111122223333",
    "time": "2024-06-10T16:16:08Z",
    "region": "us-east-1",
    "resources": ["arn:aws:guardduty:us-east-1:111122223333:malware-protection-plan/b4c7f464ab3a4EXAMPLE"],
    "detail": {
        "schemaVersion": "1.0",
        "eventTime": "2024-06-10T16:16:08Z",
        "s3ObjectDetails": {
            "bucketName": "amzn-s3-demo-bucket",
            "objectKey": "2024-03-10-16-16-00-7D723DE8DBE9Y2E0",
            "eTag": "0e9eeec810ad8b61d69112c15c2a5hb6",
            "versionId" : "d41d8cd98f00b204e9800998eEXAMPLE",
            "s3Throttled": false
        },
        "postScanActions": [{
            "actionType": "TAGGING",
            "failureReason": "MAX_TAG_LIMIT_EXCEEDED"
        }]
    }
}
```

要对这些失败原因进行故障排除，请参阅[对 S3 对象扫描后标记失败问题进行故障排除](troubleshoot-s3-post-scan-tag-failures.md)。

# 使用 GuardDuty 托管标签监控 S3 对象扫描
<a name="monitor-enable-s3-object-tagging-malware-protection"></a>

使用启用标记选项， GuardDuty 以便在完成恶意软件扫描后向您的 Amazon S3 对象添加标签。

**启用标记的注意事项**
+  GuardDuty 标记您的 S3 对象时会产生相关的使用成本。有关更多信息，请参阅 [S3 恶意软件防护的定价和使用成本](pricing-malware-protection-for-s3-guardduty.md)。
+ 您必须保留与该存储桶关联的首选 IAM 角色所需的标签权限；否则，将 GuardDuty 无法向扫描的对象添加标签。该 IAM 角色已经包含向已扫描对象添加标签的权限。有关更多信息，请参阅 [创建或更新 IAM 角色策略](malware-protection-s3-iam-policy-prerequisite.md)。
+ 默认情况下，您最多可以将 10 个标签关联到一个 S3 对象。有关更多信息，请参阅 [使用基于标签的访问控制（TBAC）](tag-based-access-s3-malware-protection.md)。

为 S3 存储桶或特定前缀启用标记后，任何新上传的已扫描对象都将具有以下键值对格式的关联标签：

`GuardDutyMalwareScanStatus`:`Scan-Result-Status`

有关可能的标签值的信息，请参阅 [可能的 S3 对象扫描状态和结果状态](monitoring-malware-protection-s3-scans-gdu.md#s3-object-scan-result-value-malware-protection)。

# 对 S3 恶意软件防护中的 S3 对象扫描后标记失败问题进行故障排除
<a name="troubleshoot-s3-post-scan-tag-failures"></a>

仅当您在受保护的存储桶中[为已扫描对象启用标记](enable-malware-protection-s3-bucket.md#tag-scanned-objects-s3-malware-protection)时，本部分的内容才适用于您。

 GuardDuty 尝试向扫描的 S3 对象添加标签时，标记操作可能会导致失败。存储桶发生这种情况的可能原因为 `ACCESS_DENIED` 和 `MAX_TAG_LIMIT_EXCEEDED`。使用以下主题来了解这些扫描后标记失败的可能原因并对其进行故障排除。

**ACCESS\$1DENIED**  
以下列表提供了可能导致此问题的可能原因：  
+ 用于此受保护的 S3 存储桶的 IAM 角色缺少**AllowPostScanTag**权限。验证关联的 IAM 角色是否使用的是此存储桶策略。有关更多信息，请参阅 [创建或更新 IAM 角色策略](malware-protection-s3-iam-policy-prerequisite.md)。
+ 受保护的 S3 存储桶策略不允许 GuardDuty 向此对象添加标签。
+ 已扫描的 S3 对象已不再存在。

**MAX\$1TAG\$1LIMIT\$1EXCEEDED**  
默认情况下，您最多可以将 10 个标签关联到一个 S3 对象。有关更多信息，请参阅下的 “ GuardDuty 向 S3 对象添加标签的注意事项” [为已扫描对象启用标记](enable-malware-protection-s3-bucket.md#tag-scanned-objects-s3-malware-protection)。

# 中的 S3 对象扫描状态指标 CloudWatch
<a name="monitor-cloudwatch-metrics-s3-malware-protection"></a>

您可以使用 GuardDuty 进行监控 CloudWatch，它收集原始数据并将其处理为可读的近乎实时的指标。这些统计数据会保留 15 个月，以便您可以访问历史信息，并更好地了解 S3 恶意软件防护的执行情况。还可以设置特定阈值监视警报，在达到对应阈值时发送通知或采取行动。有关更多信息，请参阅 [Amazon CloudWatch 用户指南](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/)。

S3 恶意软件防护 CloudWatch 指标可在资源级别获得。您可以分别查询每个受保护资源的此类指标。此类指标在 `AWS/GuardDuty/MalwareProtection` 命名空间中报告。您可以在特定资源上设置警报来监控安全状况。


| 
| 
| **恶意软件扫描状态指标**  | 
| --- |
|  **指标**  |  **描述**  | 
|  `CompletedScanCount`  |  在给定时间范围内完成的 S3 对象恶意软件扫描次数。 有效维度：   `Malware Protection Plan Id` `Resource Name`   单位：计数  | 
|  `FailedScanCount`  |  在给定时间范围内失败的 S3 对象恶意软件扫描次数。 **有效维度**：   `Malware Protection Plan Id` `Resource Name`   单位：计数  | 
|  `SkippedScanCount`  |  在给定时间范围内跳过的 S3 对象恶意软件扫描次数。 **有效维度**：   `Malware Protection Plan Id` `Resource Name` `Skipped Reason`  可能的 值  `Unsupported`   `MissingPermissions`     单位：计数  | 
| **恶意软件扫描结果指标**  | 
| --- |
|  `InfectedScanCount`  |  在给定时间范围内检测到可能恶意对象的 S3 对象恶意软件扫描次数。 有效维度：   `Malware Protection Plan Id` `Resource Name`   单位：计数  | 
|  `CompletedScanBytes`  |  在给定时间范围内扫描的 S3 对象字节数。 有效维度：   `Malware Protection Plan Id` `Resource Name`   单位：计数  | 

**注意**  
默认情况下， CloudWatch 指标中的统计数据为 AVG。

S3 恶意软件防护指标支持以下维度。


| 
| 
| **维度** | **描述** | 
| --- |--- |
|  Malware Protection Plan Id  |  与为您的受保护资源 GuardDuty 创建的恶意软件防护计划资源关联的唯一标识符。  | 
|  Resource Name  |  受保护资源的名称。  | 
|  Skipped Reason  |  跳过 S3 对象恶意软件扫描的原因。  可能的 值  `Unsupported`   `MissingPermissions`    | 

有关访问和查询这些指标的信息，请参阅[亚马逊* CloudWatch 用户指南中的使用亚马逊 CloudWatch *指标](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/working_with_metrics.html)。

有关设置警报的信息，请参阅[亚马逊* CloudWatch 用户指南中的使用亚马逊 CloudWatch *警报](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/AlarmThatSendsEmail.html)。

# 问题排查
<a name="troubleshoot-s3-malware-protection"></a>

**Topics**
+ [恶意软件防护计划状态故障排除](troubleshoot-s3-malware-protection-status-errors.md)
+ [按需恶意软件扫描故障排除](troubleshoot-s3-malware-protection-on-demand.md)

# 恶意软件防护计划状态故障排除
<a name="troubleshoot-s3-malware-protection-status-errors"></a>

对于任何受保护的存储桶，都会根据排名 GuardDuty 显示**状态**。例如，如果受保护的存储桶在 “**错误**” 和 “**警告**” 类别下都存在问题，则 GuardDuty 将首先显示与**错误**状态相关的问题。

以下列表包括有关恶意软件防护计划状态的错误和警告。

**错误**  
+ [EventBridge 此 S3 存储桶的通知已禁用](#eventbridge-notification-disabled-malware-protection-s3-error)
+ [EventBridge 缺少用于接收 S3 存储桶事件的托管规则](#eventbridge-managed-rule-missing-malware-protection-s3-error)
+ [S3 存储桶已不再存在](#bucket-no-longer-exists-malware-protection-s3-error)

**警告**  
[无法放置测试对象](#unable-put-test-object-malware-protection-s3-warning)

## EventBridge 此 S3 存储桶的通知已禁用
<a name="eventbridge-notification-disabled-malware-protection-s3-error"></a>

相关状态原因代码是 `EVENTBRIDGE_MANAGED_EVENTS_DELIVERY_DISABLED`。

**状态详细信息**  
GuardDuty 用于 EventBridge 在将新对象上传到此 S3 存储桶时收到通知。您的 IAM 角色中缺少此权限。

**故障排除步骤**  
**选项 1：将以下权限语句添加到您的 IAM 角色中：**  

```
{
          "Sid": "AllowEnableS3EventBridgeEvents",
          "Effect": "Allow",
          "Action": [
             "s3:PutBucketNotification",
             "s3:GetBucketNotification"
             ],
          "Resource": [
             "arn:aws:s3:::amzn-s3-demo-bucket"
            ]
}
```
将 *amzn-s3-demo-bucket* 替换为您的 Amazon S3 桶名称。  

**选项 2：使用 Amazon S3 控制台启用 EventBridge 通知**

1. 打开 Amazon S3 控制台，网址为 [https://console.aws.amazon.com/s3/](https://console.aws.amazon.com/s3/)。

1. 在**存储桶**页面的**通用存储桶**选项卡下，选择与此错误关联的存储桶名称。

1. 在此存储桶的页面上，选择**属性**选项卡。

1. 在 “**亚马逊 EventBridge**” 部分下，选择 “**编辑”**。

1. 在 **“编辑亚马逊 EventBridge**” 页面上，在 “**向亚马逊 EventBridge 发送此存储桶中所有事件的通知” 中**，选择 “**开**”。

1. 选择**保存更改**。
**状态**列的值可能需要几分钟时间才会变为**活动**。

## EventBridge 缺少用于接收 S3 存储桶事件的托管规则
<a name="eventbridge-managed-rule-missing-malware-protection-s3-error"></a>

相关状态原因代码是 `EVENTBRIDGE_MANAGED_RULE_DISABLED`。

 **状态详细信息**   
缺少 EventBridge 管理规则设置的托管 EventBridge 规则权限。

**故障排除步骤**  
将以下权限语句添加到您的 IAM 角色中：  

```
{
         "Sid": "AllowManagedRuleToSendS3EventsToGuardDuty",
        "Effect": "Allow",
        "Action": [
                "events:PutRule",
                "events:DeleteRule",
                "events:PutTargets",
                "events:RemoveTargets"
            ],
        "Resource": [
           "arn:aws:events:*:*:rule/DO-NOT-DELETE-AmazonGuardDutyMalwareProtectionS3*"
           ],
        "Condition": {
           "StringEquals": {
              "events:ManagedBy": "malware-protection-plan.guardduty.amazonaws.com"
              }
           }
}
```
**状态**列的值可能需要几分钟时间才会变为**活动**。

## S3 存储桶已不再存在
<a name="bucket-no-longer-exists-malware-protection-s3-error"></a>

相关状态原因代码是 `PROTECTED_RESOURCE_DELETED`。

 **状态详细信息**   
此 S3 存储桶已从您的账户中删除，不复存在。

 **故障排除步骤**   
如果 S3 存储桶的删除并非有意，则可以使用 Amazon S3 控制台创建新的存储桶。  
成功创建存储桶后，按照[为存储桶配置 S3 恶意软件防护](configuring-malware-protection-for-s3-guardduty.md)页面下方的步骤启用 S3 恶意软件防护。

## 无法放置测试对象
<a name="unable-put-test-object-malware-protection-s3-warning"></a>

相关状态原因代码是 `INSUFFICIENT_TEST_OBJECT_PERMISSIONS`。

**注意**  
添加测试对象的权限是可选的。您的 IAM 角色缺少此权限并不妨碍 S3 恶意软件防护对新上传的对象启动恶意软件扫描。成功启动扫描后，恶意软件防护计划的**状态**可能需要几分钟时间才会从**警告**变为 **活动**。  
如果 IAM 角色已经包含此权限，则此警告表示存在限制性的 Amazon S3 存储桶策略，不允许将测试对象放入此 S3 存储桶中的 IAM 访问权限。

**状态详细信息**  
要验证所选存储桶的设置，请在存储桶中 GuardDuty 放置一个测试对象。

**故障排除步骤**  
您可以选择更新该 IAM 角色以包含缺失的权限。向选定的 IAM 角色添加以下权限，以便 GuardDuty 可以将测试对象放入所选资源：  

```
{
         "Sid": "AllowPutValidationObject",
         "Effect": "Allow",
         "Action": [
           "s3:PutObject"
           ],
         "Resource": [
           "arn:aws:s3:::amzn-s3-demo-bucket/malware-protection-resource-validation-object"
           ]
}
```
将 *amzn-s3-demo-bucket* 替换为您的 Amazon S3 桶名称。有关 IAM 角色权限的信息，请参阅[创建或更新 IAM 角色策略](malware-protection-s3-iam-policy-prerequisite.md)。  
**状态**列的值可能需要几分钟时间才会变为**活动**。

# 按需恶意软件扫描故障排除
<a name="troubleshoot-s3-malware-protection-on-demand"></a>

## 无法开始扫描。
<a name="w2aac23c33b7b3"></a>

请确保扫描请求包含有效输入，并且已为存储桶启用恶意软件保护计划。

# 编辑受保护存储桶的恶意软件防护计划
<a name="edit-malware-protection-protected-s3-bucket"></a>

您可能需要编辑首选 IAM 权限策略，启用或禁用已扫描 S3 对象的标记，或者添加或移除 S3 对象前缀。例如，在为存储桶启用 S3 的恶意软件防护时，您决定不启用使用扫描结果标记已扫描 S3 对象的功能。但是，现在您需要 GuardDuty 添加预定义的标签和扫描结果作为标签值。

选择一种您偏好的访问方法，为受保护的 S3 存储桶更新恶意软件防护计划。

------
#### [ Console ]

**编辑恶意软件防护计划**

1. 登录 AWS 管理控制台 并打开 GuardDuty 控制台，网址为[https://console.aws.amazon.com/guardduty/](https://console.aws.amazon.com/guardduty/)。

1. 在导航窗格中，选择 **S3 恶意软件防护**。

1. 在**受保护的存储桶**下，选择要为其编辑现有配置的存储桶。

1. 选择**编辑**。

1. 更新存储桶的现有配置和设置，然后确认更改。有关每个部分的说明和步骤信息，请参阅[为存储桶启用 S3 恶意软件防护](enable-malware-protection-s3-bucket.md)。

   监控此受保护存储桶的**状态**列。如果显示为**警告**或**错误**，请参阅[恶意软件防护计划状态故障排除](troubleshoot-s3-malware-protection-status-errors.md)。

------
#### [ API/CLI ]

**使用 API 编辑恶意软件防护计划或 AWS CLI**
+ **通过使用 API**

  使用与此计划资源关联的恶意软件防护计划 ID 运行 [UpdateMalwareProtectionPlan](https://docs.aws.amazon.com/guardduty/latest/APIReference/API_UpdateMalwareProtectionPlan.html)API。

  要检索特定区域的恶意软件防护计划 ID，可以在该区域运行 [ListMalwareProtectionPlans](https://docs.aws.amazon.com/guardduty/latest/APIReference/API_ListMalwareProtectionPlans.html)API。
+ **通过使用 AWS CLI**

  以下列表提供了更新恶意软件防护计划资源的 AWS CLI 示例命令。您将需要与 S3 存储桶关联的恶意软件防护计划 ID。

**AWS CLI 命令示例**
  + 使用以下 AWS CLI 命令**启用或禁用**与您的 S3 存储桶关联的恶意软件防护计划资源的标记：

    ```
    aws guardduty update-malware-protection-plan --malware-protection-plan-id 4cc8bf26c4d75EXAMPLE --actions "Tagging"={"Status"="ENABLED|DISABLED"}
    ```
  + 使用以下 AWS CLI 命令向与 S3 存储桶关联的恶意软件防护计划资源**添加对象前缀**：

    ```
    aws guardduty update-malware-protection-plan --malware-protection-plan-id 4cc8bf26c4d75EXAMPLE --protected-resource "S3Bucket"={"ObjectPrefixes"=["amzn-s3-demo-1", "amzn-s3-demo-2"]}
    ```

    确保在此命令中包含现有的对象前缀；否则， GuardDuty 将在编辑恶意软件防护计划资源时删除这些前缀。
  + 使用以下 AWS CLI 命令从与您的 S3 存储桶关联的恶意软件防护计划资源中**删除对象前缀**：

    ```
    aws guardduty update-malware-protection-plan --malware-protection-plan-id 4cc8bf26c4d75EXAMPLE --protected-resource "S3Bucket"={"ObjectPrefixes"=[""]}
    ```

  如果您还没有此资源的恶意软件防护计划 ID，则可以运行以下 AWS CLI 命令并*us-east-1*替换为要列出恶意软件防护计划的区域 IDs。

  ```
  aws guardduty list-malware-protection-plans --region us-east-1
  ```

------

# 为受保护的存储桶禁用 S3 恶意软件防护
<a name="disable-malware-s3-protected-bucket"></a>

当您为受保护存储桶禁用 S3 的恶意软件防护时， GuardDuty 会删除与该存储桶关联的恶意软件防护计划 ID。 GuardDuty 当新对象上传到此存储桶或其中一个选定的对象前缀时，将不再启动恶意软件扫描。

如果您已启用 GuardDuty 但现在想要暂停或禁用 GuardDuty，请参阅[暂停或禁用 GuardDuty](guardduty_suspend-disable.md)。由于 S3 恶意软件防护中没有探测器 ID 的概念，因此禁用或暂停 GuardDuty **不会**影响您账户中受保护存储桶的状态。您可以继续按相关标准定价独立使用 S3 恶意软件防护功能。有关更多信息，请参阅 [检查 S3 恶意软件防护的使用成本检查使用成本](usage-cost-malware-protection-s3-gdu.md)。要停止使用 S3 恶意软件防护，您需要为账户中的所有受保护存储桶禁用此功能。如果您想继续使用 GuardDuty 并仅对存储桶禁用 S3 的恶意软件防护，则以下步骤不会影响该 GuardDuty 服务的配置以及您可能已启用的其他保护计划。

选择一种您偏好的访问方法，在受保护的 S3 存储桶中禁用 S3 恶意软件防护。

------
#### [ Console ]

**使用 GuardDuty 控制台禁用 S3 的恶意软件防护**

1. 登录 AWS 管理控制台 并打开 GuardDuty 控制台，网址为[https://console.aws.amazon.com/guardduty/](https://console.aws.amazon.com/guardduty/)。

1. 在导航窗格中，选择 **S3 恶意软件防护**。

1. 在**受保护的存储桶**下，选择要为其禁用 S3 恶意软件防护的存储桶。

   一次只能选择一个受保护的存储桶。要为多个存储桶禁用 S3 恶意软件防护，请为其他 S3 存储桶再次执行这些步骤。

1. 选择**禁用**以确认选择。

------
#### [ API/CLI ]

**使用 API 禁用 S3 的恶意软件防护，或 AWS CLI**
+ **通过使用 API**

  使用与此计划资源关联的恶意软件防护计划 ID 运行 [DeleteMalwareProtectionPlan](https://docs.aws.amazon.com/guardduty/latest/APIReference/API_DeleteMalwareProtectionPlan.html)API。

  要检索恶意软件防护计划 ID，您可以运行 [ListMalwareProtectionPlans](https://docs.aws.amazon.com/guardduty/latest/APIReference/API_ListMalwareProtectionPlans.html)API。
+ **通过使用 AWS CLI**

  或者，您可以运行以下 AWS CLI 命令来禁用 S3 的恶意软件防护，方法是将其替换为*4cc8bf26c4d75EXAMPLE*与此 S3 存储桶关联的恶意软件保护计划 ID：

  ```
  aws guardduty delete-malware-protection-plan --malware-protection-plan-id 4cc8bf26c4d75EXAMPLE
  ```

  如果您还没有此 S3 存储桶的恶意软件防护计划 ID，则可以运行以下 AWS CLI 命令并*us-east-1*替换为要列出恶意软件防护计划的区域 IDs。

  ```
  aws guardduty list-malware-protection-plans --region us-east-1
  ```

------

# Amazon S3 功能支持
<a name="supported-s3-features-malware-protection-s3"></a>

下表说明了 S3 恶意软件防护是否支持所列 Amazon S3 功能。


| S3 功能名称 | 是否提供支持？ | 说明 | 
| --- | --- | --- | 
|  S3 存储类 – S3 Standard S3 存储类 – S3 Standard-Infrequent Access S3 存储类 – S3 One Zone-Infrequent Access S3 存储类 – S3 Glacier Instant Retrieval  |  是  |  无需不异步还原即可检索 S3 对象。  | 
|  S3 存储类 – S3 Intelligent-Tiering  |  有条件  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/guardduty/latest/ug/supported-s3-features-malware-protection-s3.html)  | 
|  S3 存储类 – S3 Express One Zone（目录存储桶）  |  否  |  GuardDuty 仅支持 S3 恶意软件防护的通用存储桶。  | 
|  S3 存储类 – S3 Glacier Flexible Retrieval S3 存储类 – S3 Glacier Deep Archive  |  否  |  必须首先还原 S3 对象，然后才能访问这些对象。  | 
|  Amazon S3 on Outposts  |  否  |  Outposts 上不支持 S3 恶意软件防护。  | 
|  S3 版本控制  |  是  |  所有上传的 S3 对象都经过恶意软件扫描。如果您上传了文件版本 v1 的对象，并立即上传了另一个版本替换为 v2，则 GuardDuty 将同时扫描目标文件版本 v1 和 v2。但是，扫描开始的时间顺序可能不同。  | 
|  S3 复制 – 扫描复制的对象  |  是  |  如果目标存储桶是受保护的资源，则 GuardDuty 将扫描所有复制到受保护和监控的前缀的 S3 对象。  | 
|  S3 复制：基于扫描结果标签复制  |  否  |  您无法定义基于扫描结果标签的复制规则。Amazon S3 不支持复制标签，但在创建时除外。  | 
|  数据加密 – S3-SSE 数据加密 – SSE-KMS 数据加密 – DSSE-KMS AWS KMS -客户管理的密钥  |  是  |  GuardDuty 支持对使用托管密钥和客户托管密钥加密的 S3 对象进行恶意软件扫描。确保 IAM 角色包含使用该密钥的权限。有关更多信息，请参阅 [添加 IAM 策略权限](malware-protection-s3-iam-policy-prerequisite.md#attach-iam-policy-s3-malware-protection)。  | 
|  数据加密 – SSE-C  |  否  |  S3 恶意软件防护不支持扫描使用不可访问的密钥加密的 S3 对象。  | 
|  客户端加密  |  否  |  当 Amazon S3 对象使用 Amazon S3 加密客户端加密时，您的对象不会暴露给任何第三方，包括 AWS。要了解不支持此功能的原因，请参阅 [Protecting data by using client-side encryption](https://docs.aws.amazon.com/AmazonS3/latest/userguide/UsingClientSideEncryption.html)。  CSE-KMS 加密对象作为无法确定加密的加密 blob 接收。因此，在收到加密的 blob 时对其进行 GuardDuty处理，并将加密的 blob 作为常规文件进行扫描。 GuardDuty 不会返回此类对象的`UNSUPPORTED`扫描状态，除非其中任何一个[S3 恶意软件防护中的配额](malware-protection-s3-quotas-guardduty.md)超出范围。   | 
|  S3 对象锁定和诉讼保全  |  是  |  锁定的 S3 对象是基于 WORM（一次写入多次读取）技术锁定的。S3 恶意软件防护可以访问和扫描对象。  | 
|  申请方付款  |  是  |  S3 恶意软件防护可以扫描使用*申请方付款*设置的存储桶。申请方负责支付 S3 调用费用。有关更多信息，请参阅《*Amazon S3 用户指南*》中的[使用申请方付款存储桶进行存储传输和使用](https://docs.aws.amazon.com/AmazonS3/latest/userguide/RequesterPaysBuckets.html)。  | 
|  S3：存储生命周期  |  是  |  您可以定义基于扫描结果标签的生命周期策略。例如，自动删除恶意对象。有关生命周期配置的更多信息，请参阅《Amazon S3 用户指南》中的[管理存储生命周期](https://docs.aws.amazon.com/AmazonS3/latest/userguide/object-lifecycle-mgmt.html)**。  | 
|  S3：基于标签的访问控制（TBAC）  |  是  |  您可以定义基于 S3 对象扫描结果标签的存储桶资源策略。例如，阻止访问尚未扫描的 S3 对象或 GuardDuty 检测到的威胁。有关更多信息，请参阅 [将基于标签的访问控制（TBAC）与 S3 恶意软件防护结合使用](tag-based-access-s3-malware-protection.md)。  | 

# S3 恶意软件防护中的配额
<a name="malware-protection-s3-quotas-guardduty"></a>

本节介绍了默认限额，通常称为限制。除非另行说明，否则每个配额都基于区域。要查看特定于使用基础 GuardDuty 服务的默认配额，请参阅[亚马逊 GuardDuty 配额](guardduty_limits.md)。

下表列举了适用于您的 AWS 账户的多个配额。


| 限额名称 | AWS 默认配额值 | 是否可以调整？ | 说明 | 
| --- | --- | --- | --- | 
|  最大 S3 对象大小  |  100 GB  |  否  |  尝试扫描恶意软件的最大 S3 对象大小。 GuardDuty  尽管此配额不可调整，但如果您需要扫描较大的对象，请联系 AWS 支持 以确定是否 GuardDuty 可以为您的用例增加配额。  | 
|  提取的存档字节  |  100 GB  |  否  |   GuardDuty 可以从存档文件中提取和分析的最大数据量。 GuardDuty 将跳过解压缩到 100 GB 以上的存档文件。  | 
|  提取的存档文件  |  10000  |  否  |  存档文件中 GuardDuty 可以提取和分析的最大文件数。如果存档包含的文件超过 10,000 个， GuardDuty 则必须跳过存档文件。  复合文件类型可能受这些限制的约束。文件类型包括但不限于多用途 Internet 邮件扩展 (MIME) 编码的电子邮件、编译的 Python (PYC) 文件、已编译的 HTML 帮助 (CHM) 文件、所有安装程序和 OpenDocument 格式 (ODF) 文档。   | 
|  最大归档深度  |  5  |  否  |   GuardDuty 可以提取的最大嵌套存档级别。如果存档中包含嵌套超出此值的文件，则 GuardDuty 将跳过这些嵌套文件。  | 
|  最大受保护存储桶数  |  25  |  否  |  您可以为其启用 S3 恶意软件防护的最大 S3 存储桶数。此配额限制按每账户每区域适用。  | 