我正在使用windows azure blob存储服务。我想保护我的blob免受公共访问(除了我的用户)。为此我使用共享访问签名(SAS),它工作正常。但我的问题是我有一个容器,它在目录结构中包含blob,如:
https://xxxxxxx.blob.core.windows.net/myContainer/directory1/blob1
https://xxxxxxx.blob.core.windows.net/myContainer/directory1/blob2
https://xxxxxxx.blob.core.windows.net/myContainer/directory1/blob3
https://xxxxxxx.blob.core.windows.net/myContainer/directory1/blob4
https://xxxxxxx.blob.core.windows.net/myContainer/directory1/blob5
https://xxxxxxx.blob.core.windows.net/myContainer/directory2/blob1
https://xxxxxxx.blob.core.windows.net/myContainer/directory2/blob2
https://xxxxxxx.blob.core.windows.net/myContainer/directory2/blob3
https://xxxxxxx.blob.core.windows.net/myContainer/directory2/blob4
https://xxxxxxx.blob.core.windows.net/myContainer/directory2/blob5
and so on...
现在我的要求是我希望公开访问myContainer under directory2
中的所有blob,而不是directory1
下的blob,我希望将directory1下的所有blob保持为私有。我怎样才能做到这一点?
答案 0 :(得分:3)
Azure blob存储中没有目录。您现在拥有的那些“目录”只是名称中嵌入/
的blob。由于权限仅在容器级别,因此您必须创建单独的容器。
答案 1 :(得分:2)
您可以创建两个容器。
在容器级别使用SAS的一个私有容器和一个公共访问容器
https://xxxxxxx.blob.core.windows.net/private/blob1
https://xxxxxxx.blob.core.windows.net/private/blob2
https://xxxxxxx.blob.core.windows.net/private/blob3
https://xxxxxxx.blob.core.windows.net/private/blob4
https://xxxxxxx.blob.core.windows.net/private/blob5
https://xxxxxxx.blob.core.windows.net/public/blob1
https://xxxxxxx.blob.core.windows.net/public/blob2
https://xxxxxxx.blob.core.windows.net/public/blob3
https://xxxxxxx.blob.core.windows.net/public/blob4
https://xxxxxxx.blob.core.windows.net/public/blob5
答案 2 :(得分:1)
您只能在容器级别设置权限,因此您有两个选项。
首选选项)创建一个额外的公共容器并移动您的blob。 更糟糕的选项)为所有文件创建一个看似无穷无尽的有效sas链接。