首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Windows存储访问策略删除

Windows存储访问策略删除
EN

Stack Overflow用户
提问于 2014-12-18 15:24:22
回答 1查看 2K关注 0票数 2

我想使用共享访问签名( SAS )下载blobs。

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

令我困惑的是,我如何才能取消一项政策。我还读到你只能有5个存储访问策略激活吗?

我在这里的目标是能够删除一个活动的SAS URI。实现这一点的唯一方法是删除与SAS URI链接的策略,对吗?如果我在我的blob存储中有超过数百个文件,我如何才能使它工作呢?我不能为每个blob制定一个策略,对吗?5是最大的策略吗?

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

代码语言:javascript
复制
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;
}

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

代码语言:javascript
复制
    permissions.SharedAccessPolicies.Remove("PolicyName");
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-12-19 12:50:14

我在这里的目标是能够删除一个活动的SAS URI。实现这一点的唯一方法是删除与SAS URI链接的策略,对吗?

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

如果我在我的blob存储中有超过数百个文件,我如何才能使它工作呢?

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

我不能为每个blob制定一个策略,对吗?5是最大的策略吗?

这是正确的。

最后一个问题,我如何删除一个政策?它是否像: permissions.SharedAccessPolicies.Remove("PolicyName");那样简单?

这是正确的。不过,一定要把它存回去。您可以使用以下内容:

代码语言:javascript
复制
        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);
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27549988

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档