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

2 分钟阅读
0

我想限制对我的 Amazon Simple Storage Service(Amazon S3)资源的权限,并监控对这些资源的访问情况。

简述

要保护您的文件和 Amazon S3 存储桶,请按照以下最佳实践操作:

解决方法

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

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

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

  • 编写 IAM 用户策略,指定可以访问特定桶和对象的用户。IAM 策略提供了通过编程方式来管理多个用户的 Amazon S3 权限。有关创建和测试用户策略的详细信息,请参阅 AWS Policy GeneratorIAM Policy Simulator
  • 编写存储桶策略,定义对特定存储桶和对象的访问权限。使用存储桶策略跨 AWS 账户授予访问权限、授予公共或匿名权限以及根据具体情况允许或阻止访问。有关创建和测试存储桶策略的详细信息,请参阅 AWS Policy Generator
    **注意:**您可以在桶策略中使用拒绝语句来限制特定 IAM 用户的访问权限。即使在 IAM 策略中向用户授予了访问权限,您也可以限制访问。
  • 使用 Amazon S3 屏蔽公共访问权限作为限制公共访问的集中方式。“屏蔽公共访问权限”设置会覆盖存储桶策略和对象权限。请务必为所有不希望公开访问的账户和存储桶开启“屏蔽公共访问权限”。
  • 对您的存储桶和对象设置访问控制列表 (ACL)
    注意: 如果您需要以编程方式管理权限,请使用 IAM 策略或存储桶策略,而不是 ACL。但是,当您的桶策略超过 20 KB 的最大文件大小时,您可以使用 ACL。或者,您可以使用 ACL 授予对 Amazon S3 服务器访问日志Amazon CloudFront 日志的访问权限。

当您使用 ACL 保护资源时,请考虑以下最佳实践:

  • 查看允许 Amazon S3 对桶或对象执行操作的 ACL 权限。有关 ACL 权限及其允许的操作的列表,请参阅我可以授予哪些权限?
  • 严格控制谁对您的桶拥有读取写入权限。
  • 在向所有人组授予读取权限之前,请仔细考虑您的用例,因为这样可允许任何人访问桶或对象。
  • 切勿对所有人组允许写入权限。此设置会允许任何人向您的桶添加对象,然后您将为此付费。此设置还允许任何人删除桶中的对象。
  • 切勿对任何经过身份验证的 AWS 用户组允许写入访问权限。该组包括拥有活跃 AWS 账户的所有人,而不仅仅是您账户中的 IAM 用户。要控制您账户的 IAM 用户的访问权限,请改用 IAM 策略。有关 Amazon S3 如何评估 IAM 策略的详细信息,请参阅 Amazon S3 如何对请求授权

除了使用策略、屏蔽公共访问和 ACL,您还可以通过以下方式限制对特定操作的访问权限:

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

监控您的 S3 资源

通过以下方式启用日志记录并监控 S3 资源:

使用加密保护您的数据

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

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

如果您的用例需要对静态数据进行加密,使用服务器端加密 (SSE)。SSE 选项包括 SSE-S3SSE-KMSSSE-C。您可以在向桶写入对象时指定 SSE 参数。您也可以使用 SSE-S3 或 SSE- KMS 对桶启用默认加密

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

相关信息

Amazon S3 中的 Identity and Access Management

Amazon S3 中的数据保护

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

如何查看谁在访问我的 Amazon S3 桶和对象?

AWS 官方
AWS 官方已更新 9 个月前