我已经搜索了很长时间,但看到没有人有以下场景,所以非常感谢如果有人可以帮助。
我们希望使用S3预先指定的URL下载大文件,但出于安全原因,我们使用KMS使用客户端加密来上传文件。
选项之一是使用AWS加密SDK在浏览器中加密文件,后端上传到S3,然后从预先指定的URL获取文件后在浏览器中解密。但我担心凭证暴露在用户浏览器。在AWS文档中https://docs.aws.amazon.com/encryption-sdk/latest/developer-guide/js-examples.html()
首先向浏览器提供凭据。用于JavaScript的AWS加密SDK示例使用webpack。DefinePlugin,它将凭据常量替换为实际凭据。但是您可以使用任何方法来提供凭据。然后,使用凭据创建AWS KMS客户端。
- 你有什么解决办法吗?
- 如果使用AWS SDK,无论如何避免凭据暴露,如果用户使用F12 ?
但我担心用户浏览器中的凭据暴露。
使用客户端加密,假设加密的秘密是随机的,并且是唯一的/特定于内容的(使用信封加密)。
因此,如果客户端有权获得(要下载的)内容,那么可以向客户端提供解密内容的密钥(您可以将密钥视为内容的一部分)。密钥(数据密钥)不能用于解密其他任何内容。