我能够使用SAS令牌限制对blob容器或特定文件的访问,但是我无法在Azure Blob存储中的文件夹级别生成SAS令牌。
是否有一种方法只能提供对Azure Blob存储中特定文件夹的访问。 (我们在Blob容器中有很多文件夹,我们需要向客户端提供对单个文件夹的读取访问权限)
答案 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)