

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

# 为存储桶启用 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)。