如何保护我 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 资源:

使用加密来保护您的数据

如果您的用例需要在传输过程中加密,那么 Amazon S3 支持 HTTPS 协议,该协议对往返于 Amazon S3 的传输数据进行加密。默认情况下,所有 AWS SDK 和 AWS 工具都使用 HTTPS。
**注意:**如果您使用第三方工具与 Amazon S3 进行交互,请联系开发人员,确认他们的工具是否也支持 HTTPS 协议。

如果您的用例需要对静态数据进行加密,那么 Amazon S3 可提供服务器端加密(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 官方已更新 2 年前