修复可能失陷的 S3 存储桶 - Amazon GuardDuty
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

修复可能失陷的 S3 存储桶

当 GuardDuty 生成 GuardDuty S3 防护调查发现类型 时,表示您的 Amazon S3 存储桶已经失陷。如果导致该调查发现的行为是环境中的预期行为,则可以考虑创建抑制规则。如果该行为并非预期行为,则按照以下建议的步骤修复 Amazon 环境中可能失陷的 Amazon S3 存储桶:

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

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

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

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

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

    例如,考虑以下情况:

    • 如果涉及 IAM 用户,其凭证是否可能已经泄露? 有关更多信息,请参阅 修复可能被泄露的 Amazon 凭证

    • 如果 API 是从之前没有调用此类 API 历史记录的主体调用的,那么该源是否需要操作的访问权限? 能否进一步限制存储桶权限?

    • 如果可以从用户名 ANONYMOUS_PRINCIPAL用户类型 AWSAccount 看到访问,则表明存储桶是公有的,并已被访问。这个存储桶应该是公有的吗? 如果不是,请查看下面的安全建议,了解共享 S3 资源的替代解决方案。

    • 如果访问通过来自用户名 ANONYMOUS_PRINCIPAL用户类型 AWSAccountPreflightRequest 调用成功实现,则表明存储桶已设置跨源资源共享(CORS)策略。这个存储桶是否应该设置 CORS 策略? 如果不是,请确保存储桶不会无意中公开,并查看下面的安全建议,了解共享 S3 资源的替代解决方案。有关 CORS 的更多信息,请参阅《S3 用户指南》中的使用跨源资源共享(CORS)

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

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

如果访问已获授权,则可以忽略调查发现。https://console.aws.amazon.com/guardduty/ 控制台允许您设置规则,以完全抑制单个调查发现,使其不再出现。有关更多信息,请参阅 GuardDuty 中的抑制规则

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

基于特定 S3 存储桶访问需求的建议

下表根据特定的 Amazon S3 存储桶访问需求提供了相应的建议:

  • 要集中限制对您的 S3 数据的公开访问,请使用 S3 阻止公共访问功能。可通过四种不同的设置为接入点、存储桶和 Amazon 账户启用阻止公开访问设置,以控制访问的粒度。有关更多信息,请参阅《Amazon S3 用户指南》中的阻止公有访问设置

  • Amazon 访问策略可用于控制 IAM 用户访问资源的方式或访问存储桶的方式。有关更多信息,请参阅《Amazon S3 用户指南》中的使用存储桶策略和用户策略

    此外,您可以使用具有 S3 存储桶策略的虚拟私有云(VPC)端点来限制对特定 VPC 端点的访问。有关更多信息,请参阅《Amazon S3 用户指南》中的使用存储桶策略控制从 VPC 端点的访问

  • 要暂时允许账户外部的可信实体访问您的 S3 对象,您可以通过 S3 创建一个预签名 URL。此访问权限是使用您的账户凭证创建的,根据使用的凭证,可持续 6 小时到 7 天。有关更多信息,请参阅《Amazon S3 用户指南》中的使用预签名 URL 下载和上传对象

  • 对于需要在不同源之间共享 S3 对象的用例,您可以使用 S3 接入点创建权限集,这些权限集仅限于私有网络中的对象。有关更多信息,请参阅《Amazon S3 用户指南》中的通过接入点管理对共享数据集的访问

  • 要安全地授予其他 Amazon 账户访问 S3 资源的权限,可以使用访问控制列表(ACL),有关更多信息,请参阅《Amazon S3 用户指南》中的访问控制列表(ACL)概述

有关更多信息,请参阅《Amazon S3 用户指南》中的 Amazon S3 的安全最佳实践