我有一个Azure Blob存储,其blob是pdf,按客户编号分类。因此,对于每个客户,他们有多个pdf报告。我只希望客户端能够访问blob以获取其客户端编号。 (有数百个客户。)
我已经研究过,但只看到共享访问签名,但这看起来不像我需要的。
答案 0 :(得分:0)
听起来您已经让用户进行身份验证,并且您知道哪些pdf属于他们。我的建议是在当前应用程序中添加一个简单的代理(例如,如果你有一个MVC应用程序,你可以添加一个新的控制器和动作方法,代表用户检索pdf)。
这样您就不需要使用共享访问签名,并且可以保持blob容器的私有性。您的控制器/操作方法只需使用存储SDK来检索blob。另外一个好处是,您可以检查以确保他们正在请求他们自己的PDF文件,如果他们猜测其他人的文件的ID,则拒绝该请求。
答案 1 :(得分:0)
除了共享访问签名(和策略)之外,没有用户级blob权限。
您可以自行管理对特定用户内容的访问权限(以及您如何管理这些内容取决于您和您的应用,以及您如何管理用户的内容元数据)。
提供用户内容的链接时:如果您假设所有内容始终是私有的,则只需在请求时创建按需SAS链接。用户无法修改SAS链接以猜测序列号或相邻 blob,因为SAS是针对特定URL的。
正如Andrés建议的那样,您也可以使用您的应用来流式传输blob内容,而不必担心SAS。但是,您现在将消耗Web应用程序的资源(网络,CPU,内存),这将对您的应用程序的规模要求产生影响。您将无法再将其卸载到存储服务中。