Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/331.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何保护azure Blob_C#_Azure_Azure Storage_Azure Storage Blobs - Fatal编程技术网

C# 如何保护azure Blob

C# 如何保护azure Blob,c#,azure,azure-storage,azure-storage-blobs,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 h

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

现在我的要求是,我想让公众访问directory2下myContainer中的所有Blob,但不想让公众访问directory1下的Blob,我想让directory1下的所有Blob保持私有。如何实现这一点?

您只能在容器级别设置权限,因此剩下两个选项

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

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

您可以创建两个容器

一个在容器级别上带有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