在Azure Blob存储中创建用户之间逻辑分离的最佳方法



我正在尝试了解云存储如何与Azure Blob存储一起工作。这个用例是一个微服务架构,有几个api和一个前端,用户可以上传、下载和删除blob。

我有两种类型的blob,一种类型是所有用户都可以访问的个人资料图片和资产,另一种类型是用户拥有所有权的blob,只有某些用户可以看到/下载(同一公司的用户,网站管理员…)。

我们有三个概念,我想弄清楚的目的:

  • 存储帐户,即我,Azure帐户持有人。
  • 容器,每个实体/用户可以使用一个。
  • blob

上传blob只能使用我的微服务架构的前端,因此身份验证将是与我想要构建的新服务之间的服务。

下载blob,它将暴露一个URL和(这里开始怀疑)当用户单击URL时,我将检查AuthService是否用户有会话记录(如果没有,重定向到登录前端),然后我需要请求用户是否有下载该blob的权限。

我该怎么做?

我想点击URL,用AuthService检查用户是否登录,下载服务请求用户信息,然后检查blob元数据,blob所有权是什么。这需要在上传过程中将信息存储到元数据中,如entity_id、user_id。我不知道……

您是否考虑在您的前端实现一个API/功能来生成一个SAS URL到用户应该有权访问的特定blob ?这样,这个API可以验证用户权限,但你希望,如果用户的请求检查出,你提供给他一个SAS URL,将到期,无论何时你选择,可以读/写/删除(你选择)在一个特定的blob。

另外,我强烈建议将保存完全属于系统内部的系统数据的存储帐户与用户可以访问blob的存储帐户分开。这是因为SAS URL确实包含存储帐户DNS,这会使其暴露于DDOS和其他基于DNS的攻击,因此在我看来,您应该将其范围限制为您需要让用户访问的blob。

最新更新