我正在尝试使用SAS令牌将文件从Javascript上传到Azure blob存储。 SAS令牌具有创建/删除/更新Blob的权限。赋予SAS令牌到期时间是否可以安全地与所有这些权限共享?
或者,我应该创建一个API来上传文件,而不是向用户公开令牌,然后让javascript调用该API(.NET应用程序),该API会将文件上传到Blob存储。这样,我将遇到性能问题,因为我的文件大小最大为10MB。
最好的方法是什么?
答案 0 :(得分:1)
共享访问签名对于为不应该具有帐户密钥的客户提供对存储帐户的有限权限很有用。
如果您是将数据写入存储帐户的人,请在服务器端进行操作。当然,您可以让前端从后端请求SAS令牌。 SAS令牌可以使用近期到期时间。最后,您仍将向可以访问前端的任何人开放存储帐户的一部分。
随着SAS的短期失效,它仅在短时间内有效。如果您无法引用存储的访问策略,则此做法尤其重要。近期到期时间还限制了可上传到Blob的时间,从而限制了可写入Blob的数据量。
来源:Using shared access signatures (SAS)
如果您要上传的文件大小有问题,请看一下chunked upload。根据要构建的前端类型,有很多用于分段上传的解决方案,例如Angular的ngx-uploadx。
答案 1 :(得分:0)
请使用主键或辅助键在API级别的Blob存储中执行CRUD操作,不建议使用具有浏览器所有权限的SAS
答案 2 :(得分:0)
是的,您可以使用SAS令牌从浏览器访问/更新Azure Blob存储。但是,您提供了太多的权限,以防某些人在您不知道哪个不安全的情况下删除您的Blob。
我建议您在访问和更新Blob存储时可以将SAS权限更改为Create/Read/Write
。