gpt4 book ai didi

azure - 如何为 Windows Azure 中的 blob 存储提供安全性

转载 作者:行者123 更新时间:2023-12-03 06:01:30 24 4
gpt4 key购买 nike

我想提供对 Windows Azure 中 Blob 存储的访问,这样只有一个域可以访问容器 中的 Blob。我发现对容器的访问有公共(public)、私有(private)和共享三种。但它们不符合我的要求。在公共(public)场合,我们可以随时从 url 访问 blob。在私下中,我们无法从 url 访问,但如果我们提供存储帐户凭据,则可以从代码访问。在共享访问中,我们可以根据策略访问一段时间。

但我需要像我的网站应该访问 blob-storage 中的任何 blob,这些 blob 可能来自 url 或代码。但我不应该通过粘贴 blob 的 url 从另一个浏览器访问它。因此,除非并且直到我不登录我的应用程序,我应该无法访问 blob 存储 url。请让我知道我们如何才能实现这一目标。

最佳答案

实现这一目标的最简单方法是利用 Shared Access Signature (SAS)其有效期非常短(30 秒或更短)。如您所知,SAS 提供对存储资源的有时间限制/基于权限的访问。因此,您可以做的就是保留 Blob 容器的 ACL Private 而不是 Blob/Container

假设您正在使用 .Net 客户端库并构建 MVC 应用程序,您将在 Controller 中执行的操作是在容器上创建一个具有 Read 权限的 SAS有效期很短,并将该 SAS token 传递到您的 View 。然后,您可以将该 SAS token 附加到 View 中的图像 URL。

Controller 代码:

        var cloudStorageAccount = new CloudStorageAccount(new StorageCredentials(accountName, accountKey), true);
var container = cloudStorageAccount.CreateCloudBlobClient().GetContainerReference("container");
var sas = container.GetSharedAccessSignature(new SharedAccessBlobPolicy()
{
SharedAccessExpiryTime = DateTime.UtcNow.AddSeconds(30),
Permissions = SharedAccessBlobPermissions.Read
});
ViewBag.SasToken = sas;

查看代码:

<img src="https://myaccount.blob.core.windows.net/container/<a href="https://stackoverflow.com/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="2f425646424e484a015f41486f675b4243017d4e58" rel="noreferrer noopener nofollow">[email protected]</a>(ViewBag.SasToken)" />

请注意,这并不是 100% 万无一失,因为在 SAS 有效期间,任何人都可以复制 URL 并获取图像,但可以通过保留 SAS 有效期限来缓解该问题,因为一旦 SAS 过期,即使有人知道 URL,他们也无法访问该 blob。

关于azure - 如何为 Windows Azure 中的 blob 存储提供安全性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28667888/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com