3

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

我能想到三个选项:

1) 具有短期有效期的共享访问策略。- 在该到期期限内以及在每个后续页面请求的期限内,都可以从任何地方访问到 blob 的链接。

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

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

我错过了更好的选择吗?

4

2 回答 2

2
  • 您第一个建议使用短期到期的共享访问策略是好的
  • 您还可以将 blob 设为私有,保护 MVC ActionResult 并仅通过操作结果传递 blob(即:返回 File())
于 2013-07-22T13:36:39.243 回答
0

我认为您可能想要执行以下操作。

  • 与时间相关
  • SaS 使用 url
    字符串 storageConnectionString ="UseDevelopmentStorage=true";

    CloudStorageAccount storageAccount = CloudStorageAccount.Parse(storageConnectionString);

    CloudBlobClient blobClient = storageAccount.CreateCloudBlobClient();

    CloudBlobContainer 容器 = blobClient.GetContainerReference("mycontainer");
    容器.CreateIfNotExists();

    BlobContainerPermissions blobPermissions = new BlobContainerPermissions();

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

   blobPermissions.PublicAccess = BlobContainerPublicAccessType.Off;
   容器.SetPermissions(blobPermissions);

   字符串 sasToken = container.GetSharedAccessSignature(new SharedAccessBlobPolicy(), "mypolicy");

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

于 2013-07-25T00:57:32.900 回答