

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

# 创建或更新 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"
    }
  ]
}
```

------