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

问题描述 投票:0回答:2

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

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

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

azure-blob-storage
2个回答
4
投票

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

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

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

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


0
投票

公共”和“匿名”访问之间存在差异,混淆这两个概念在云开发人员中很常见。

对 Blob 的

匿名访问意味着无需身份验证即可访问 Blob 上的图像或对象。 而对 blob 的公共访问意味着从互联网访问它。

上面的答案是保护可通过互联网访问的对象的正确解决方案。使用 SAS 令牌。 但是,如果您的存储帐户不可公开访问,您可以下载图像(使用应用程序标识),但即使使用 SAS,也不会直接在浏览器中显示它,因为这需要互联网。我假设该用户不是网络中的内部用户。 如果您担心第二种情况,我正在考虑通过应用程序下载或缓存图像并将其显示在浏览器中,该浏览器不需要通过互联网访问存储帐户上的图像,但需要通过互联网访问缓存的版本或副本。您可以使用查看器,也可以创建自己的机制。

© www.soinside.com 2019 - 2024. All rights reserved.