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

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

修复 Amazon S3 存储桶的风险

注意

Security Hub 处于预览版,可能会发生变化。

Amazon Security Hub 可以生成亚马逊简单存储服务 (S3) 存储桶的风险调查结果。

在 Security Hub 控制台上,风险调查结果中涉及的 Amazon S3 存储桶及其识别信息列在调查结果详情的 “资源” 部分中。通过编程方式,您可以通过 Security Hub API 的GetFindingsV2操作来检索资源详细信息。

确定风险调查结果中涉及的资源后,如果您不需要该资源,则可以将其删除。删除不必要的资源可以减少您的曝光概况和 Amazon 成本。如果资源必不可少,请按照这些建议的补救步骤进行操作,以帮助降低风险。补救主题根据特征的类型进行划分。

单个暴露发现包含在多个补救主题中发现的问题。相反,您只需解决一个补救主题即可解决风险发现并降低其严重性级别。您的风险补救方法取决于您的组织要求和工作量。

注意

本主题中提供的补救指南可能需要在其他 Amazon 资源中进行更多咨询。

Amazon S3 存储桶的配置错误特征

以下是 Amazon S3 存储桶的配置错误特征和建议的补救措施。

Amazon S3 存储桶已禁用版本控制

Amazon S3 版本控制可帮助您将对象的多个变体保存在同一个存储桶中。禁用版本控制后,Amazon S3 仅存储每个对象的最新版本,这意味着如果对象被意外或恶意删除或覆盖,则无法恢复。启用版本控制的存储桶可防止意外删除、应用程序故障以及勒索软件攻击等安全事件,在这些事件中,可能会发生未经授权的修改或删除数据。按照安全最佳实践,我们建议对包含重要数据的存储桶启用版本控制,这些数据如果丢失将很难或无法重新创建。

  1. 启用版本控制-要在存储桶上启用 Amazon S3 版本控制,请参阅《亚马逊简单存储服务用户指南》中的启用存储桶版本控制。启用版本控制时,请考虑实施生命周期规则来管理存储,因为版本控制将维护对象的多个副本。

Amazon S3 存储桶已禁用对象锁定

Amazon S3 对象锁定为 Amazon S3 对象提供了 write-once-read-many (WORM) 模型,可防止它们在固定期限内或无限期地被删除或覆盖。禁用 Object Lock 后,您的对象可能容易被勒索软件意外或恶意删除、修改或加密。Object Lock 对于遵守要求不可变数据存储的监管要求以及防范可能试图加密数据的勒索软件等复杂威胁尤为重要。通过启用 Object Lock,您可以强制执行保留策略作为额外的数据保护层,并为关键数据创建不可变的备份策略。按照安全最佳实践,我们建议您启用对象锁定,以防止恶意修改您的对象。

  1. 请注意,只有在创建新存储分区时才能启用对象锁定,因此您需要在启用对象锁定的情况下创建一个新的存储桶。对于大型迁移,可以考虑使用 Batch Operations 将对象复制到新存储桶。在锁定任何对象之前,还必须对存储桶启用 Amazon S3 版本控制和对象锁定。由于只能在新存储分区上启用对象锁定,因此您需要将现有数据迁移到启用对象锁定的新存储分区。配置 Amazon S3 对象锁 — 有关如何在存储桶上配置对象锁的信息,请参阅《亚马逊简单存储服务用户指南》中的 ConfiguringAmazon S3Object Lock。设置对象锁定后,根据您的环境选择适当的保留模式。

Amazon S3 存储桶未使用 Amazon KMS 密钥进行静态加密

Amazon S3 应用服务器端加密,将 Amazon S3 托管密钥作为所有新存储桶的默认加密级别。虽然 Amazon S3 托管密钥提供强大的加密保护,但它提供的访问控制和审计功能级别与 Amazon Key Management Service 密钥不同。使用 KMS 密钥时,访问对象需要同时访问 Amazon S3 存储桶和加密对象的 KMS 密钥的权限。这对于敏感数据尤其重要,在这些数据中,您需要精细控制谁可以访问加密对象,并对加密密钥使用情况进行全面的审核记录。按照安全最佳实践,我们建议使用 KMS 密钥对包含敏感数据的存储桶进行加密,或者用于具有严格合规性要求的环境。

  1. 配置 Amazon S3 存储桶密钥

    要将存储桶配置为使用新对象的 Amazon S3 存储桶密钥,请参阅《亚马逊简单存储服务用户指南》中的将存储桶配置为使用带有 SSE-KMS 的 Amazon S3 存储桶密钥来存储新对象。有关如何加密现有对象的信息,请参阅 Amazon 存储博客中的使用 Amazon S3 批处理操作加密对象

实施 Amazon KMS 加密时,请考虑以下几点:

  • 密钥管理-决定使用 Amazon 托管密钥还是客户托管密钥 (CMK)。 CMKs 让客户完全控制密钥的生命周期和使用情况。有关这两种密钥之间区别的更多信息,请参阅《Amazon Key Management Service 开发人员指南》中的 Amazon KMS 密钥

  • 密钥轮换-要采取其他安全措施,请为 KMS 密钥启用自动密钥轮换。有关更多信息,请参阅《Amazon Key Management Service 开发人员指南》中的启用自动密钥轮换

已在受版本控制的 Amazon S3 存储桶上禁用多重身份验证 (MFA) 删除功能

多重身份验证 (MFA) 删除为您的 Amazon S3 存储桶提供了额外的安全保护。它需要多重身份验证才能执行破坏性的 Amazon S3 操作。禁用 MFA 删除后,具有适当权限的用户可以永久删除对象版本或暂停存储段的版本控制,而无需进行额外的身份验证质疑。启用 MFA 删除有助于防止未经授权或意外删除您的数据,从而增强防范勒索软件攻击、内部威胁和操作错误的防护。MFA 删除对于包含关键或合规敏感数据的存储桶特别有用,必须保护这些数据免遭未经授权的删除。按照安全最佳实践,我们建议您为 Amazon S3 存储桶启用 MFA。

  1. 查看 MFA 类型

    Amazon 支持以下 MFA 类型。尽管使用物理设备进行身份验证通常会提供更严格的安全保护,但使用任何类型的 MFA 都比禁用 MFA 更安全。

  2. 在资源策略级别强制执行 MFA

    使用存储桶策略中的aws:MultiFactorAuthAge条件密钥要求对敏感操作进行 MFA。有关更多信息,请参阅《亚马逊简单存储服务用户指南》中的 “需要 MFA”。

  3. 启用 MFA

    要启用 MFA 删除,请首先确保在 Amazon S3 存储桶上启用版本控制。只有启用了版本控制的存储桶才支持 MFA 删除。有关如何启用 Amazon S3 版本控制的信息,请参阅亚马逊简单存储服务用户指南》中的启用存储桶版本控制。无法通过 Amazon S3 控制台启用 MFA 删除。您必须使用亚马逊 S3 API 或 Amazon CLI. 有关更多信息,请参阅《亚马逊简单存储服务用户指南》中的配置 MFA 删除

Amazon S3 存储桶允许其他 Amazon 账户的委托人修改存储桶权限

Amazon S3 存储桶策略控制对存储桶和对象的访问。当存储桶策略允许其他 Amazon 账户的委托人修改存储桶权限时,未经授权的用户可以重新配置您的存储桶。如果外部委托人凭证遭到泄露,未经授权的用户可以控制您的存储桶,从而导致数据泄露或服务中断。遵循标准的安全原则, Amazon 建议您将权限管理操作仅限于受信任的委托人。

  1. 查看并确定存储桶策略

    在曝光中,在 ARN 字段中标识 Amazon S3 存储桶。在 Amazon S3 控制台中,选择存储桶,然后导航到权限选项卡以查看存储桶策略。查看附加到存储桶的权限策略。如本金声明所示,请查找授权类似操作的政策声明,s3:PutBucketPolicy, s3:PutBucketAcl, s3:DeleteBucketPolicy, s3:* 或允许账户以外的委托人访问权限的政策声明。

  2. 修改存储桶策略

    修改存储桶策略以删除或限制授予其他 Amazon 账户的操作:

    • 删除向外部账户授予权限管理操作的策略声明。

    • 如果需要跨账户访问权限,请将宽权限(s3:*)替换为不包括存储桶权限管理的特定操作。

    有关修改存储桶策略的信息,请参阅 Amazon S3 用户指南中的使用 Amazon S3 控制台添加存储桶策略

Amazon S3 存储桶的可访问性特征

以下是 Amazon S3 存储桶的可访问性特征和建议的补救步骤。

亚马逊 S3 存储桶具有公开访问权限

默认情况下,Amazon S3 存储桶和对象是私有的,但可以通过各种配置将其公开。如果您修改存储桶策略、接入点策略或对象权限以允许公开访问,则可能会暴露敏感数据。

  1. 评估桶

    根据您的组织政策、合规性要求或数据分类,评估是否可以将存储桶设为私有。如果您不打算向公众或其他人授予存储桶访问权限 Amazon Web Services 账户,请按照其余的补救说明进行操作。

  2. 将存储桶配置为私有存储桶

    选择以下选项之一,为您的 Amazon S3 存储桶配置私有访问权限:

    • 账户级别 — 要使用账户级别设置阻止对账户中所有存储桶的公开访问,请参阅《A mazon Simple Storage Servic e 用户指南》中的为您的账户配置封锁公开访问设置

    • 存储桶级别-要阻止对特定存储桶的公开访问,请参阅《亚马逊简单存储服务用户指南》中的为 Ama zon S3Buckets 配置阻止公开访问设置

    • 存储桶 ACL 或策略-要修改存储桶访问控制列表 (ACL)、存储桶策略、多区域接入点 (MRAP) 策略或访问点策略以删除对存储桶的公开访问权限,请参阅《A mazon Simple Storage Service 用户指南》中的查看和更改存储桶访问权限。如果您在账户级别或存储分区级别阻止公共访问,则这些封锁优先于允许公共访问的策略。

Amazon S3 存储桶具有公共读取权限

具有公共读取权限的 Amazon S3 存储桶允许互联网上的任何人查看您的存储桶中的内容。虽然这对于可公开访问的网站或共享资源可能是必要的,但如果存储桶包含敏感数据,则可能会造成安全风险。公开读取权限可能导致未经授权的查看和下载,如果将敏感数据存储在这些存储桶中,则可能导致数据泄露。遵循标准安全原则, Amazon 建议限制必要的用户和系统才能访问 Amazon S3 存储桶。

  1. 在存储桶级别阻止公共访问

    Amazon S3 提供阻止公共访问设置,无论存储桶策略如何,都可以在存储桶和账户级别进行配置,以防止公开访问或 ACLs。有关更多信息,请参阅《Amazon Simple Storage Service 用户指南》中的阻止对 Amazon S3 存储的公共访问阻止公开访问后,请查看您的存储桶访问控制配置,确保其符合您的访问要求。然后查看您的 Amazon S3 存储桶政策,明确定义谁可以访问您的存储桶。有关存储桶策略的示例,请参阅《亚马逊简单存储服务用户指南》中的 Amazon S3 存储桶策略示例。

  2. 其他访问方法

    如果需要公共读取权限,请考虑以下更安全的替代方案:

    • CloudFront— CloudFront 与原始访问身份 (OAI) 或源访问控制 (OAC) 一起使用,以允许从私有 Amazon S3 存储桶进行读取访问。这种替代方案限制了对您的 Amazon S3 存储桶的直接访问,同时允许通过 CloudFront公开访问内容。有关更多信息,请参阅《亚马逊 CloudFront 开发者指南》中的限制对亚马逊 S3 来源的访问

    • 预签名 URLs-使用预签名 URLs 来临时访问特定对象。有关更多信息,请参阅 AWSAmazon S3Us er 指南 URLs中的使用预签名共享对象

Amazon S3 存储桶具有写入权限

具有公共写入权限的 Amazon S3 存储桶允许互联网上的任何人上传、修改或删除存储桶中的对象。这会带来严重的安全风险,包括有人可能上传恶意文件、修改现有文件和删除数据。公共写入权限会造成安全漏洞,攻击者可以利用这些漏洞。遵循标准安全原则, Amazon 建议将对 Amazon S3 存储桶的写入权限限制为仅限必要的用户和系统。

  1. 在账户和存储分区级别屏蔽公开访问权限

    Amazon S3 提供了封锁公有访问设置,可以在存储桶和账户级别配置这些设置,无论存储桶策略如何,都可防止公开访问或 ACLs。有关更多信息,请参阅《Amazon Simple Storage Service 用户指南》中的阻止对 Amazon S3 存储的公共访问

  2. 修改存储桶策略

    要更精细地删除公共写入权限,请查看存储桶政策。你可以查找s3:PutObjects3:DeleteObject、或s3:*。有关管理存储桶策略的更多信息,请参阅《亚马逊简单存储服务用户指南》中的 Amazon S3 存储桶策略

  3. 其他访问方法如果需要公共读取权限,请考虑以下更安全的替代方法:

    • CloudFront— CloudFront 与原始访问身份 (OAI) 或源访问控制 (OAC) 一起使用,以允许从私有 Amazon S3 存储桶进行读取访问。这种替代方案限制了对您的 Amazon S3 存储桶的直接访问,同时允许通过 CloudFront公开访问内容。有关更多信息,请参阅《亚马逊 CloudFront 开发者指南》中的限制对 Amaz on S3 来源的访问

    • 预签名 URLs-使用预签名 URLs 来临时访问特定对象。有关更多信息,请参阅 Amazon 简单存储服务用户指南 URLs中的使用预签名共享对象

Amazon S3 接入点已启用公共访问设置

Amazon S3 接入点提供对 Amazon S3 存储桶中共享数据集的自定义访问权限。当您为接入点启用公共访问时,互联网上的任何人都可以访问您的数据。根据标准安全原则, Amazon 建议限制公众访问 Amazon S3 接入点。

  1. 创建启用封锁公共访问的新接入点

    Amazon S3 不支持在创建接入点后更改接入点的公共访问设置。有关创建接入点的信息,请参阅 Amazon S3 用户指南中的管理通用存储桶接入点的公共访问权限。有关管理公共访问接入点的更多信息,请参阅 Amazon S3 用户指南中的为通用存储桶创建接入点

Amazon S3 存储桶的敏感数据特征

以下是 Amazon S3 存储桶的敏感数据特征和建议的补救步骤。

Amazon S3 存储桶的敏感数据特征

当 Macie 识别出您的 Amazon S3 存储桶中的敏感数据时,它会显示需要立即注意的潜在安全和合规风险。

敏感数据可能包括:

  • 凭证

  • 个人身份信息

  • 财务信息

  • 需要保护的机密内容

如果敏感数据因配置错误或未经授权的访问而暴露,则可能导致合规违规、数据泄露、身份盗用或经济损失。遵循安全最佳实践, Amazon 建议对数据进行适当分类,并持续监控 Amazon S3 存储桶中的敏感数据。

对敏感数据实施控制

在曝光率调查结果中,选择开放资源。查看检测到的敏感数据的类型及其在存储桶中的位置。要获得解释 Macie 调查结果的帮助,请参阅亚马逊 Macie 用户指南中的 Macie 调查结果类型

根据发现的敏感数据类型,实施适当的安全控制: