Windows Azure存储的访问策略删除

我想使用共享访问签名SAS下载blob。

我也希望能够删除活动的SAS URI,如果我理解正确,我必须使用存储访问策略。

令我困惑的是如何删除一项政策。 我也读过你只能有5个存储的访问策略激活?

我的目标是能够删除一个活动的SAS URI。 我能想到的唯一办法就是删除SAS URI链接的策略,对不对? 如果我的blob存储中有超过数百个文件,那么我怎样才能完成这项工作? 我不能有一个政策每个blob的权利? 5是最大的政策?

此代码演示了如何添加策略以及如何创build使用此策略的SAS URI,用户可以从中下载该策略。

static void CreateSharedAccessPolicy(CloudBlobContainer container) { //Create a new stored access policy and define its constraints. SharedAccessBlobPolicy sharedPolicy = new SharedAccessBlobPolicy() { SharedAccessExpiryTime = DateTime.UtcNow.AddHours(10), Permissions = SharedAccessBlobPermissions.Read | SharedAccessBlobPermissions.Write | SharedAccessBlobPermissions.List }; //Get the container's existing permissions. BlobContainerPermissions permissions = new BlobContainerPermissions(); //Add the new policy to the container's permissions. permissions.SharedAccessPolicies.Clear(); permissions.SharedAccessPolicies.Add("PolicyName", sharedPolicy); container.SetPermissions(permissions); } static string GetBlobSasUriWithPolicy(CloudBlobContainer container, string policyName) { //Get a reference to a blob within the container. CloudBlockBlob blob = container.GetBlockBlobReference("file_name"); //Generate the shared access signature on the blob. string sasBlobToken = blob.GetSharedAccessSignature(null, "PolicyName"); //Return the URI string for the container, including the SAS token. return blob.Uri + sasBlobToken; } 

最后一个问题,我如何删除一项政策? 它是如此简单:

  permissions.SharedAccessPolicies.Remove("PolicyName"); 

Solutions Collecting From Web of "Windows Azure存储的访问策略删除"

我的目标是能够删除一个活动的SAS URI。 我能想到的唯一办法就是删除SAS URI链接的策略,对不对?

部分正确。 删除访问策略是一种方法。 其他的将是改变策略的名称(策略标识符)。 例如,如果策略标识符是mypolicy那么将其更改为mypolicy1与删除策略具有相同的效果。

如果我的blob存储中有超过数百个文件,那么我怎样才能完成这项工作?

您可能已经知道,访问策略是在blob容器级别定义的,而不是在blob级别定义的。 删除/使访问策略无效将使该容器中所有斑点的SAS URL失效。

我不能有一个政策每个blob的权利? 5是最大的政策?

那是对的。

最后一个问题,我如何删除一项政策? 它是这样简单:permissions.SharedAccessPolicies.Remove(“PolicyName”);

那是对的。 确保你保存回去。 你可以使用像这样的东西:

  var cloudStorageAccount = CloudStorageAccount.DevelopmentStorageAccount; var blobClient = cloudStorageAccount.CreateCloudBlobClient(); var container = blobClient.GetContainerReference("container-name"); var containerPermissions = container.GetPermissions(); containerPermissions.SharedAccessPolicies.Remove("access-policy-id"); container.SetPermissions(containerPermissions);