【发布时间】:2020-06-03 21:53:03
【问题描述】:
我正在创建一个用户通过 Amazon Cognito 登录的 Web 应用程序。用户登录后,他可以开始使用预签名的 url 从 AWS S3 上传和下载文件。这些文件应该是保密的,只有上传它们的用户才能阅读它们。是否有可能实现这一点,即使 AWS 账户的 root 用户也无法读取文件?
【问题讨论】:
标签: amazon-web-services amazon-s3 amazon-cognito
我正在创建一个用户通过 Amazon Cognito 登录的 Web 应用程序。用户登录后,他可以开始使用预签名的 url 从 AWS S3 上传和下载文件。这些文件应该是保密的,只有上传它们的用户才能阅读它们。是否有可能实现这一点,即使 AWS 账户的 root 用户也无法读取文件?
【问题讨论】:
标签: amazon-web-services amazon-s3 amazon-cognito
让这个方法起作用的唯一方法是用户必须在他们身边加密文件,然后上传加密文件,当他们稍后下载文件时,它被解密以便他们可以阅读。
【讨论】:
使用AWS SDK,可以选择使用开箱即用的客户端加密。
EncryptionMaterials encryptionMaterials = new EncryptionMaterials(symKey);
AmazonS3 s3EncryptionClient = AmazonS3EncryptionClientBuilder.standard()
.withCredentials(new ProfileCredentialsProvider())
.withEncryptionMaterials(new StaticEncryptionMaterialsProvider(encryptionMaterials))
.withRegion(clientRegion)
.build();
请注意:
我的意思是如果加密密钥保存在用户端并且他删除了应用程序及其所有数据,那么他再次安装应用程序后如何解密数据?
我建议您创建一个password-based encryption key,用户可以在其中提供加密密码(不同于用户的身份验证密码,可能会更改)。
也许我可以为此使用 Cognito 密码,但如果用户想更改密码怎么办
您(应该)无权访问用户的密码。
【讨论】: