跳至内容

如何保护我 Amazon S3 存储桶中的文件?

2 分钟阅读
0

我想通过访问限制、资源监控和数据加密来保护我的 Amazon S3 存储桶,以保护我的文件并符合安全最佳实践。

解决方法

首先,确定您的 Amazon S3 存储桶类型是通用存储桶、目录还是表。然后,选择与您的存储桶类型相应的安全措施和监控服务。

限制对您的 S3 资源的访问权限

默认情况下,所有 S3 存储桶都是私有的。只有您明确授予存储桶权限的用户才能访问存储桶。

要限制对您的 S3 存储桶或对象的访问,请执行以下操作:

  • 使用基于身份的策略来指定可以访问特定存储桶和对象的用户。要创建和测试用户策略,请使用 AWS 策略生成器IAM 策略模拟器
  • 使用存储桶策略,定义对特定存储桶和对象的访问权限。使用存储桶策略跨 AWS 账户授予访问权限、授予公共或匿名权限以及根据具体情况允许或阻止访问。
    **注意:**即使您在 IAM 策略中向特定的 AWS Identity and Access Management (IAM) 用户授予了访问权限,您也可以在存储桶策略中使用 Deny 语句来限制这些用户的访问权限。
  • 使用 Amazon S3 屏蔽公共访问权限作为限制公共访问的集中方式。“屏蔽公共访问权限”设置会覆盖存储桶策略和对象权限。请务必为所有不希望公开访问的账户和存储桶开启“屏蔽公共访问权限”。默认情况下,Amazon S3 会为所有新账户和存储桶开启“屏蔽公共访问权限”。仅当您明确要求公开访问您的 S3 资源时,才关闭该功能。如果您关闭存储桶上的屏蔽公共访问权限,请定期对该存储桶进行审计。
  • 对您的存储桶和对象设置访问控制列表 (ACL)
    **注意:**如果您必须以编程方式管理权限,请使用 IAM 策略或存储桶策略代替 ACL。但是,当您的存储桶策略超过 20 KB 的最大文件大小时,您可以使用 ACL。或者,您可以使用 ACL 授予对 Amazon S3 服务器访问日志Amazon CloudFront 日志的访问权限。
  • 使用服务控制策略 (SCP) 在组织中的所有账户中集中管理并强制执行 S3 安全策略。
  • 在网络层面,使用虚拟私有云 (VPC) 端点存储桶策略中基于 IP 地址的限制以及适用于 S3 的 AWS PrivateLink 来限制访问。VPC 端点允许在没有互联网访问的情况下私有访问 Amazon S3。
  • 使用 S3 接入点简化多个应用程序或团队访问的存储桶的安全管理。
  • 实现 S3 对象锁定,这样用户就无法在指定的时间范围内删除或覆盖对象。

如果您使用 ACL 来保护您的资源,请实施以下最佳实践:

  • 查看允许 Amazon S3 对存储桶或对象执行操作的 ACL 权限
  • 限制哪些用户可以对您的存储桶进行读取写入访问。
  • 仅当您希望所有人都能访问存储桶或对象时,才向所有人授予读取权限。
  • 不要向所有人组授予写入权限。任何拥有写入权限的人都可以向您的存储桶添加对象,AWS 会向您收取每个上传的对象的费用。此外,任何拥有写入权限的人都可以删除存储桶中的对象。
  • 不要向任何经过身份验证的 AWS 用户组授予写入权限,因为该用户组包括任何拥有活跃账户的人。要控制您账户的 IAM 用户的访问权限,请改用 IAM 策略。有关 Amazon S3 如何评估 IAM 策略的详细信息,请参阅 Amazon S3 如何对请求授权
  • 对于新存储桶,Amazon S3 将 S3 对象所有权设置为默认强制执行的存储桶所有者。这会关闭 ACL。要保持对所有对象的完全控制,最佳做法是关闭 ACL,使用存储桶策略和 IAM 策略进行访问控制。

您还可以通过以下方式限制对特定操作的访问权限:

  • 如需要求用户在删除对象或关闭存储桶版本控制之前使用多重身份验证,请配置 MFA 删除
  • 设置受 MFA 保护的 API 访问权限,这样用户在调用某些 Amazon S3 API 操作之前必须使用 AWS MFA 设备进行身份验证。
  • 如果您临时与其他用户共享 S3 对象,请创建预签名 URL 以授予对该对象的限时访问权限。

监控您的 S3 资源

要开启日志记录和监控您的 S3 资源,请执行以下操作:

使用加密保护您的数据

如果您需要在传输期间进行加密,请使用 HTTPS 协议对传入和传出 Amazon S3 的数据进行加密。默认情况下,所有 AWS SDK 和 AWS 工具都使用 HTTPS。

**注意:**如果您使用第三方工具与 Amazon S3 进行交互,请联系第三方公司,确认他们的工具是否也支持 HTTPS 协议。

如果您需要对静态数据进行加密,请使用服务器端加密 (SSE) 选项 Amazon S3 托管密钥 (SSE-S3)AWS Key Management Service (AWS KMS) 密钥 (SSE-KMS)客户提供的密钥 (SSE-C)。SSE 通过 CloudTrail 提供额外的保护层和详细的审计跟踪记录。您可以在向存储桶写入对象时指定 SSE 参数。您也可以使用 SSE-S3 或 SSE- KMS 对存储桶启用默认加密

**注意:**Amazon S3 会自动为所有新存储桶启用 SSE-S3。

如果您需要客户端加密,请参阅使用客户端加密保护数据

相关信息

Amazon S3 中的 Identity and Access Management

Amazon S3 中的数据保护

如何要求其他 AWS 账户的用户使用 MFA 访问我的 Amazon S3 存储桶?

如何查看哪些用户正在访问我的 Amazon S3 存储桶和对象?