【问题标题】:Blob storage temporary URLBlob 存储临时 URL
【发布时间】:2021-11-19 19:37:42
【问题描述】:

我正在尝试为 azure 存储 blob 创建临时 url。 我在以下这些命令的帮助下创建了 url。

 const sasToken = generateBlobSASQueryParameters(sasOptions, sharedKeyCredential).toString();
                  
 sasUrls[serialNo] = `${containerClient.getBlockBlobClient(blobName).url}?${sasToken}`;

从第 2 行代码开始,sas url 与永久 uri 形成。因此,即使我与某人共享具有一些到期时间的临时 url,他们也可以看到/获取 blob 的永久 uri,并且也可以在到期时间后使用它。那么临时链接有什么用呢? 有什么方法/方法可以在临时链接中隐藏我的永久 uri 吗?

如果我错了,请指导我。

FY:我正在使用打字稿。

【问题讨论】:

  • 他们可以看到 url,但除非您允许公开访问容器/blob,否则他们应该无法使用它。您可以为 Blob 存储端点设置自定义域,但我不确定这是否适合您的问题。 docs.microsoft.com/en-us/azure/storage/blobs/…
  • Jeremy 的评论很到位:SAS 专门用于帮助在短时间内公开私有 URL。超过那个时间,SAS 是无效的。在这一点上,拥有原始链接对任何人都没有帮助。你在这里实际上没有问题 - 一切都很好。
  • 谢谢杰里米!通过将容器设置为私有,任何人都无法访问原始 URI。因此,要获取 blob,我们可以使用临时链接(用于第三方)或本地下载选项或任何其他选项(用于所有者或上传数据的人)。

标签: typescript azure-blob-storage azure-sas


【解决方案1】:

请检查以下参考案例是否部分缩小了您的要求。

  1. 查看 sas 令牌是否可以替换为显示名称并在请求标头中发送(请参阅参考资料 i.)
  2. 您可以使用 cdn(如评论)Manage expiration -cdn 来使用缓存控制。
  3. 具有公共可访问的缓存控制标头和设置为到期时间等于 sas 到期时间的最大期限。

例如:

 blockBlob.Properties.CacheControl = "max-age=300, must-revalidate"; 
      
blockBlob.SetProperties(); //(300seconds)

或者

var headers = new SharedAccessBlobHeaders() { CacheControl = "max-age=" +  };

如果设置了private,可以设置max-age=0, no-cache, no-store

注意:如果客户端请求 blob,它将不会使用 cdn 中的缓存 blob(已过期)。相反,它将 直接请求存储在blob storage中的blob。

  1. 您可以使用存储的访问策略来更改到期时间,或在发布后将其撤消。

参考资料:

我。 Securing SAS Token from Azure Logic Apps

二。 Manage stored access policies

三。 SO reference-cache control

【讨论】:

  • 这个答案与OP的问题无关。 OP 的问题是关于对公共与私有 blob 的误解。他们没有发布任何关于缓存或 SAS 的问题。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-10-24
  • 1970-01-01
  • 1970-01-01
  • 2019-05-01
  • 2020-05-14
  • 2018-07-11
相关资源
最近更新 更多