首页 > 解决方案 > 带有客户端加密的预签名 S3 URL

问题描述

我已经搜索了很长时间,但没有人看到以下情况,如果有人可以提供帮助,非常感谢。

我们想使用 S3 预签名 URL 下载大文件,但出于安全原因,我们使用 KMS 的客户端加密来上传文件。

一种选择是使用 AWS 加密 SDK 在浏览器中加密文件,在后端上传到 S3,然后在从预签名 URL 获取文件后在浏览器中解密。但我担心用户浏览器中的凭据暴露。在 AWS 文档中https://docs.aws.amazon.com/encryption-sdk/latest/developer-guide/js-examples.html()

首先向浏览器提供您的凭据。适用于 JavaScript 的 AWS 加密开发工具包示例使用 webpack.DefinePlugin,它将凭证常量替换为您的实际凭证。但是您可以使用任何方法来提供您的凭据。然后,使用凭证创建 AWS KMS 客户端。

  1. 你有什么解决办法吗?
  2. 如果使用 AWS SDK,无论如何如果用户使用 F12 来避免凭证暴露?

标签: javascriptamazon-s3encryptionpre-signed-url

解决方案


但我担心用户浏览器中的凭据暴露。

使用客户端加密,假设加密的秘密是随机的并且对内容是唯一的/特定的(使用信封加密)。

因此,如果客户端有权获得内容(要下载),则可以向客户端提供解密内容的密钥(您可以将密钥视为内容的一部分)。密钥(数据密钥)不得用于解密其他任何内容。


推荐阅读