仅为一个用户保护Azure blob?

时间:2013-07-22 12:44:51

标签: azure azure-storage

如何仅为一个用户保护blob?

我可以想到三个选项:

1)短期到期的共享访问策略。 - 可以从任何地方访问blob的链接,以获取该到期持续时间,以及每个后续页面请求的持续时间。

2)在用户请求和blob存储之间设置代理并在此处应用身份验证。 - 虽然实际上在短时间内仍然存在可公开访问的blob。

3)我们不会将blob存储用于需要保护的东西。

我错过了一个更好的选择吗?

2 个答案:

答案 0 :(得分:2)

  • 您使用共享访问策略的第一个建议 短期到期是好的
  • 您还可以将blob设为私有,安全 MVC ActionResult并且只通过动作结果传递blob (即:返回文件())

答案 1 :(得分:0)

我想你可能想做如下的事情。

  • 时间依赖
  • 使用网址的SaS
    string storageConnectionString ="UseDevelopmentStorage=true";

    CloudStorageAccount storageAccount = CloudStorageAccount.Parse(storageConnectionString);

    CloudBlobClient blobClient = storageAccount.CreateCloudBlobClient();

    CloudBlobContainer container = blobClient.GetContainerReference("mycontainer");
    container.CreateIfNotExists();

    BlobContainerPermissions blobPermissions = new BlobContainerPermissions();

    blobPermissions.SharedAccessPolicies.Add("mypolicy", new SharedAccessBlobPolicy()
    {
        SharedAccessStartTime = DateTime.UtcNow.AddHours(1),
        SharedAccessExpiryTime = DateTime.UtcNow.AddHours(11),
        Permissions = SharedAccessBlobPermissions.Write |
        SharedAccessBlobPermissions.Read
   });

   blobPermissions.PublicAccess = BlobContainerPublicAccessType.Off;
   container.SetPermissions(blobPermissions);

   string sasToken = container.GetSharedAccessSignature(new SharedAccessBlobPolicy(),   "mypolicy");

我建议你看一下这篇文章 http://msdn.microsoft.com/en-us/library/windowsazure/jj721951.aspx