如何确保用户只能从私有 blob Azure 存储中看到与他相关的图像?

for*_*u82 6 azure-blob-storage

一些 user\xe2\x80\x99s 图像存储在不可公开访问的 Azure BLOB 中。在我们的场景中,我们将图像(user\xe2\x80\x99s 图像)上传到私有 blob 上,稍后需要在客户端(Angular)显示。此外,用户应该只能看到与他相关的图像,而不能看到其他用户的图像。

\n

我们可以在服务器端生成图像 URL 列表,但是当将其传递到客户端进行渲染时,由于 blob 不公开,它自然会失败。

\n

现在,由于所有访问该应用程序的用户都是组织内部的,我相信可以通过 AAD/SAS 来实现访问图像的授权。但与此同时,我无法理解如何确保或应用安全性:如果需要,用户 X 不应该能够读取用户 Y 的图像?

\n

Jim*_* Xu 3

针对该问题,您可以采用以下建议来实现。

  1. 将用户信息及其映像信息(例如映像的 azure blob 容器名称、azure blob blob 名称)存储在数据库中。

  2. 当用户想要访问图像时,使用用户信息查询数据库来获取图像。

  3. 获取图像信息后,使用 SDK 创建 SAS 令牌,然后将图像的 blob url 和 sas 令牌返回给客户端。关于如何创建sas token,请参考这里