小编Lon*_*yen的帖子

如何为同一Azure blob容器创建多个存储的访问策略?

我已阅读并阅读了https://azure.microsoft.com/en-us/documentation/articles/storage-dotnet-shared-access-signature-part-2/#part-1-中的示例代码.创建-A-控制台的应用程序对生成共享存取签名

然后我将它应用到我的场景中.

我编写了一个工具,用于将数据从合作伙伴上传到Azure blob存储,然后它将由一些内部团队使用:YYYY-MM(容器)(DD-GUID)(前缀)File1.zip File2.zip ......

我为每个容器创建了2个策略:1.仅为伙伴写入,这样他们只能编写blob而不能写任何其他内容.2.列出并阅读我们的内部团队,以便他们可以列出和读取(下载)容器中的所有blob.

我的想法是,我可以简单地将正确的政策交给正确的收件人; 但是,我的实现并不像我预期的那样有效.

我使用以下方法为每个容器创建了2个策略,当然每个策略具有正确的权限:

static void CreateSharedAccessPolicy(CloudBlobClient blobClient, CloudBlobContainer container, string policyName)
    {
        //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);
    }
Run Code Online (Sandbox Code Playgroud)

我首先创建了只写策略,然后创建了读取和列表策略.我观察到的是第一个策略似乎不起作用,一切都得到了403 Forbidden,对于第二个策略,唯一有效的是List blob但不是Read(我试图下载blob但得到了404未找到).

好像我错过了一些非常基本的东西.你能帮我看看我的方法有什么问题吗?

我用来测试容器权限的代码,我还注意到容器上的读取权限并不像Azure文档中提到的那样真正起作用.在这里,我试图找到一种简单的方法来简单地为人们提供存储的访问策略,以便他们可以列出并下载容器中的所有blob,而不是为每个blob文件提供签名:

static void UseContainerSAS(string …

policy blob azure azure-storage-blobs

3
推荐指数
1
解决办法
1500
查看次数

标签 统计

azure ×1

azure-storage-blobs ×1

blob ×1

policy ×1