【问题标题】:Server Side encryption vs Client Side encryption - Amazon S3服务器端加密与客户端加密 - Amazon S3
【发布时间】:2021-01-02 13:49:21
【问题描述】:

我想在 Amazon S3 中为我的应用程序存储大量文件。 我可以选择使用服务器端加密或客户端加密或同时使用两者。

服务器端加密是指使用 Amazon S3 加密功能来加密文件。 至于客户端加密,我的意思是我将加密应用程序中的文件,然后将其存储在 S3 中。

首选哪一种,因为两种方法都有不同的优点,例如服务器端加密在处理方面会很好,因为亚马逊已经使用了全面优化,但在客户端加密中,我将来不依赖亚马逊我可以轻松传输我的文件到其他文件系统,我的加密将完好无损。 此外,如果有人可以访问我的 Amazon S3 UI,他们可以轻松下载服务器端加密方法中的解密文件。 此外,Amazon S3 加密是有代价的。

请帮我做决定。

【问题讨论】:

  • 要使用客户端加密,您必须向每个执行上传的客户端提供加密密钥,并为每个执行下载的客户端提供解密密钥。并确保这些密钥都不会泄露或丢失。你能保证吗?
  • @Parsifal For Amazon S3 客户端是我的应用程序。客户端加密意味着加密将在我的应用程序中完成,加密密钥位于我的应用程序中。它与用户上传文件无关。用户只需上传文件,加密将在我的应用服务器中完成,并将其发送到 Amazon S3 进行存储
  • “客户端”是指“S3 的客户端”,在这种情况下是您的应用服务器。您打算如何管理它的加密/解密密钥?

标签: amazon-web-services amazon-s3 encryption


【解决方案1】:

如果您使用服务器端加密,则您的数据受政策保护。如果您不小心将访问权限授予某人(或有人窃取了您的 AWS 访问密钥),那么它是否加密存储都没有关系。

通过客户端加密,您可以管理密钥,没有它,任何人都无法访问文件的内容。如果您搞砸了策略,密钥会保护您的数据。

【讨论】:

  • 感谢@Tamas 的回复
【解决方案2】:

服务器端加密是最简单的。

它确保“静态加密”,但 S3 为您管理这一切。当具有适当权限的人访问对象时,S3 会自动解密该对象并提供内容。 (请求也是通过 HTTPS 发出的,所以对象内容在传输过程中会被加密。)

服务器端加密有多种选择:

  • 默认 AES-256
  • 使用特定的 KMS 密钥
  • 使用客户提供的 KMS 密钥

使用 KMS 进行加密时,访问对象的身份也需要使用 KMS 密钥的权限。因此,这是您可能想要使用的附加安全层

如果您担心有人不恰当地访问您的帐户,您应该考虑使用Multi-Factor Authentication 来防止未经授权的访问。

【讨论】:

  • 谢谢@John。一个小问题,如果将来我想切换到任何其他文件存储,那么我需要解密并下载所有文件并移动到其他存储点。然后我需要在我的最后开发加密。请就此纠正我。
  • 服务器端加密是自动的。您不需要解密——一切都是自动和透明的。如果您被授权访问这些对象,您将只能看到未加密的版本。它是“静态”加密的,但在您访问内容时会自动解密。因此,您只需下载内容即可。
【解决方案3】:

首先,这是业务需要回答的要求。 根据正在讨论的数据的敏感性,可能存在期望客户端加密的监管规范。 请与业务用户讨论。

如果没有基于数据的此类要求,那么您可以选择服务器端加密。它很简单,管理工作由 aws 完成。

最重要的是,如果您仍然需要额外的安全性,请使用客户端加密。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-12-04
    • 2021-11-17
    • 2018-09-25
    • 1970-01-01
    • 2015-10-29
    • 2011-08-19
    • 1970-01-01
    • 2016-07-24
    相关资源
    最近更新 更多