我们正在开发一个用户可以登录并保存文件的应用程序。他还可以与他想要提供访问权限的其他用户共享一些文件。现在的问题是如何管理特定于用户的blob级别访问。
让我用一个简单的场景来解释:
有2位用户A&B登录我们的应用程序。我正在为每个用户创建一个容器来存储用户的文件。现在,用户A希望与用户B共享一些文件。我可以使用SAS令牌进行操作,但问题是如果用户C获得此URL,他也可以看到内容。
请让我们知道处理此类情况的最佳方法。
如果用户A和B都绑定到Azure AD,那么您可以使用Azure AD based authentication for Azure Blob and Queue Service
。
我自己没有尝试过,但我理解的方式是你将Blob Reader Role
分配给用户并授予他们blob容器的权限,并且该用户将能够从该容器中读取blob。
如果我理解正确,您只希望用户A与用户B共享某些blob。在这种情况下,您可以创建另一个blob容器,其中用户A将复制她/他想要与用户B共享的文件,然后授予对用户B的访问权限在该容器上(假设用户B具有Blob Reader角色)。
针对所述方案的最佳解决方案是使用AAD / Rbac指定仅对用户A和B的访问权限。
遗憾的是,SAS并不是特定于用户的,这意味着,如果有人能够掌握它,只要它还没有过期,它们就可以重新使用它。为了提高安全性,唯一可以添加的层是:允许的IP地址到限制只能访问用户B.