如何保护天蓝色斑点

时间:2013-01-23 14:25:36

标签: c# azure azure-storage azure-storage-blobs

我正在使用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保持为私有。我怎样才能做到这一点?

3 个答案:

答案 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链接。