5

我正在使用 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...

现在我的要求是我想公开访问所有 blob 中的 blob,myContainer under directory2但不提供下directory1的 blob,我想将 directory1 下的所有 blob 保持为私有。我怎样才能做到这一点?

4

3 回答 3

3

Azure blob 存储中没有目录。您现在拥有的那些“目录”只是/名称中嵌入的 blob。由于权限仅在容器级别,因此您必须创建单独的容器。

于 2013-01-23T14:40:12.380 回答
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
于 2013-01-24T14:58:34.117 回答
1

您只能在容器级别设置权限,因此您有两个选择。

首选选项)创建一个额外的公共容器并移动你的 blob。更糟糕的选择)为所有文件创建一个看似无穷无尽的有效 sas 链接。

于 2013-01-23T14:39:58.500 回答