提供对Azure Blob容器中的文件夹的访问权限

时间:2018-09-20 08:28:13

标签: azure azure-storage azure-storage-blobs

我能够使用SAS令牌限制对blob容器或特定文件的访问,但是我无法在Azure Blob存储中的文件夹级别生成SAS令牌。

是否有一种方法只能提供对Azure Blob存储中特定文件夹的访问。 (我们在Blob容器中有很多文件夹,我们需要向客户端提供对单个文件夹的读取访问权限)

3 个答案:

答案 0 :(得分:5)

  

是否有一种方法只能提供对文件夹中特定文件夹的访问   Azure Blob存储。

到目前为止,还没有。正如您提到的那样,SAS令牌可用于限制对整个blob容器或单个blob的访问。这是因为Blob存储中的文件夹是虚拟文件夹,而不是真实文件夹。

答案 1 :(得分:0)

在这里您可以使用CloudAppendBlob通过提供文件夹名称来附加URL,但是我不确定文件名,然后根据凭据生成SAS。我希望这会起作用。

// Create the CloudBlobClient that represents the Blob storage endpoint for the storage account. 
CloudBlobClient cloudBlobClient = storageAccount.CreateCloudBlobClient();

// Create a container called 'path' and append a GUID value to it to make the name unique.  
 cloudBlobContainer = cloudBlobClient.GetContainerReference(containerName);

CloudAppendBlob appBlob = cloudBlobContainer.GetAppendBlobReference(folder/file);


SharedAccessBlobPolicy adHocSAS = new SharedAccessBlobPolicy()
      {
       // When the start time for the SAS is omitted, the start time is assumed to be the time when the storage service receives the request.
       // Omitting the start time for a SAS that is effective immediately helps to avoid clock skew.
        SharedAccessExpiryTime = DateTime.UtcNow.AddHours(24),
        Permissions = SharedAccessBlobPermissions.Read | SharedAccessBlobPermissions.Write | SharedAccessBlobPermissions.Create
       };

 var uri = appBlob.GetSharedAccessSignature(adHocSAS);

答案 2 :(得分:0)

不确定在 Storage Gen1 中是否可以这样做,但在 Gen2 中,打开存储资源管理器->your_container->your_folder。你会看到这个。 enter image description here

  1. 点击管理访问权限。
  2. 在右侧,将打开一个这样的窗格。 enter image description here
  3. 添加您的用户。它将在 Mask 之后添加。
  4. 选择用户,勾选访问权限并选择读取、写入和执行中的一项或多项。