很想听听你的想法。
在这个项目中,多个用户(假设1000个用户)将使用Windows桌面应用程序c#将文件上传到相同的存储帐户(AWS S3, Azure Blob storage或DigitalOcean Spaces)
桌面应用有来自Web API的用户认证
问题- 是正确的,每个用户将有他/她自己的桶?
- 将API密钥和存储桶信息安全地引入桌面应用程序以使文件上传到正确的存储桶和存储帐户的最佳方法是什么?
考虑S3存储桶的结构以及以后如何识别用户上传的每个对象。我会为每个用户创建一个初始密钥,这样用户就可以上传文件,例如
username1/object1
/object2
/objectx
username2/object1
username3/object1
usernamex/objectx
如果一个用户被删除了,那么你也可以删除这个用户的所有对象。如果您使用生成的密钥来标识用户,那么您也可以使用keyID而不是用户名。
最有趣的问题是如何确保这一点,以便其他用户无法看到来自其他用户的对象。如果你有一个底层API,那么它就很"容易"……允许API访问S3存储桶并保护请求,以便只列出与用户名或keyID匹配的对象。如果您正在使用IAM用户(或角色),那么您必须为特定操作自动为每个基本密钥(username1或keyID)生成策略。
如果你设置了这样的东西,请务必加强你的安全性,并尝试启用这个桶的日志记录,以确保user1不能访问user2的对象。