

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

# 修复可能失陷的 S3 存储桶
<a name="compromised-s3"></a>

 GuardDuty 生成时[GuardDuty S3 保护查找类型](guardduty_finding-types-s3.md)，它表示您的 Amazon S3 存储桶已被盗用。如果导致该调查发现的行为是环境中的预期行为，则可以考虑创建[抑制规则](findings_suppression-rule.md)。如果预计不会出现这种情况，请按照以下建议步骤修复 AWS 环境中可能遭到入侵的 Amazon S3 存储桶：

1. **识别可能失陷的 S3 资源。**

   S3 的 GuardDuty 调查结果将在查找结果详细信息中列出关联的 S3 存储桶、其 Amazon 资源名称 (ARN) 及其所有者。

1. **确定可疑活动源和使用的 API 调用。**

   使用的 API 调用将在调查发现详细信息中作为 `API` 列出。源可能是 IAM 主体（IAM 角色、用户或账户），识别信息将在调查发现中列出。根据源类型，提供远程 IP 地址或源域信息，以便您评估源是否已获得授权。如果调查发现涉及来自 Amazon EC2 实例的凭证，则还将包含该资源的详细信息。

1. **确定调用源是否有权访问已识别的资源。**

   例如，考虑以下情况：
   + 如果涉及 IAM 用户，其凭证是否可能已经泄露？ 有关更多信息，请参阅 [修复可能被泄露的凭证 AWS](compromised-creds.md)。
   + 如果 API 是从之前没有调用此类 API 历史记录的主体调用的，那么该源是否需要操作的访问权限？ 能否进一步限制存储桶权限？
   + 如果可以从**用户名** `ANONYMOUS_PRINCIPAL` 和**用户类型** `AWSAccount` 看到访问，则表明存储桶是公有的，并已被访问。这个存储桶应该是公有的吗？ 如果不是，请查看下面的安全建议，了解共享 S3 资源的替代解决方案。
   + 如果访问通过来自**用户名** `ANONYMOUS_PRINCIPAL` 和**用户类型** `AWSAccount` 的 `PreflightRequest` 调用成功实现，则表明存储桶已设置跨源资源共享（CORS）策略。这个存储桶是否应该设置 CORS 策略？ 如果不是，请确保存储桶不会无意中公开，并查看下面的安全建议，了解共享 S3 资源的替代解决方案。有关 CORS 的更多信息，请参阅《S3 用户指南》中的[使用跨源资源共享（CORS）](https://docs.aws.amazon.com/AmazonS3/latest/userguide/cors.html)。

1. **确定 S3 存储桶是否包含敏感数据。**

   使用 [Amazon Macie](https://docs.aws.amazon.com/macie/latest/user/what-is-macie.html) 确定 S3 存储桶是否包含敏感数据，例如个人身份信息（PII）、财务数据或凭证。如果您的 Macie 账户启用了自动敏感数据发现，请查看 S3 存储桶的详细信息，以便更好地了解 S3 存储桶的内容。如果您的 Macie 账户禁用了此功能，我们建议您将其开启以加快评估速度。或者，您可以创建并运行敏感数据发现作业，以检查 S3 存储桶对象中的敏感数据。有关更多信息，请参阅[使用 Macie 发现敏感数据](https://docs.aws.amazon.com/macie/latest/user/data-classification.html)。

如果访问已获授权，则可以忽略调查发现。[https://console.aws.amazon.com/guardduty/](https://console.aws.amazon.com/guardduty/)控制台允许您设置规则来完全禁止单个发现，这样它们就不会再出现。有关更多信息，请参阅 [中的抑制规则 GuardDuty](findings_suppression-rule.md)。

如果您确定自己的 S3 数据已被未授权方公开或访问，请检查下面的 S3 安全建议，以收紧权限并限制访问。适当的修复解决方案取决于特定环境的需求。

## 基于特定 S3 存储桶访问需求的建议
<a name="guardduty-compromised-s3-recommendations"></a>

**下表根据特定的 Amazon S3 存储桶访问需求提供了相应的建议：**
+ 要集中限制对您的 S3 数据的公开访问，请使用 S3 阻止公共访问功能。可以通过四种不同的设置为接入点、存储桶和 AWS 账户启用阻止公共访问设置，以控制访问的粒度。有关更多信息，请参阅《Amazon S3 用户指南》**中的[阻止公有访问设置](https://docs.aws.amazon.com/AmazonS3/latest/userguide/access-control-block-public-access.html#access-control-block-public-access-options)。
+ AWS 访问策略可用于控制 IAM 用户如何访问您的资源或访问您的存储桶的方式。有关更多信息，请参阅《Amazon S3 用户指南》中的[使用存储桶策略和用户策略](https://docs.aws.amazon.com/AmazonS3/latest/userguide/security_iam_service-with-iam.html)**。

  此外，您可以使用具有 S3 存储桶策略的虚拟私有云（VPC）端点来限制对特定 VPC 端点的访问。有关更多信息，请参阅《Amazon S3 用户指南》**中的[使用存储桶策略控制从 VPC 端点的访问](https://docs.aws.amazon.com/AmazonS3/latest/userguide/example-bucket-policies-vpc-endpoint.html)
+ 要暂时允许账户外部的可信实体访问您的 S3 对象，您可以通过 S3 创建一个预签名 URL。此访问权限是使用您的账户凭证创建的，根据使用的凭证，可持续 6 小时到 7 天。有关更多信息，请参阅 *Amazon S3 用户指南*中的[使用预签名 URLs下载和上传对象](https://docs.aws.amazon.com/AmazonS3/latest/userguide/using-presigned-url.html)。
+ 对于需要在不同源之间共享 S3 对象的用例，您可以使用 S3 接入点创建权限集，这些权限集仅限于私有网络中的对象。有关更多信息，请参阅《Amazon S3 用户指南》**中的[通过接入点管理对共享数据集的访问](https://docs.aws.amazon.com/AmazonS3/latest/userguide/access-points.html)。
+ 要安全地向其他 AWS 账户授予对您的 S3 资源的访问权限，您可以使用访问控制列表 (ACL)，有关更多信息，请参阅 *Amazon S3 用户指南*中的[访问控制列表 (ACL) 概述](https://docs.aws.amazon.com/AmazonS3/latest/userguide/acl-overview.html)。

有关更多信息，请参阅《Amazon S3 用户指南》中的 [Amazon S3 的安全最佳实践](https://docs.aws.amazon.com/AmazonS3/latest/userguide/security-best-practices.html)。**