【问题标题】:Azure Blob: How to grant a mobile app limited access to user-specific dataAzure Blob:如何授予移动应用有限访问用户特定数据的权限
【发布时间】:2020-10-21 02:40:36
【问题描述】:

我有一个连接到网站 (ASP.NET MVC) 的移动应用程序 (Xamarin Android & iOS)。移动应用程序的一些内容(文件和图像)来自当前启用了公共读取访问权限的 Azure Blob 存储。

我正在为应用程序构建一个身份验证模块(OAuth,带有用户名/密码)。是否有可能以某种方式在我的 Azure Blob 帐户中构建身份验证,以便用户只能访问其特定文件?我知道我可以将网站用作中介(即用户验证并连接到网站,网站连接到 azure 并检索数据并将其返回到应用程序),但这会增加额外的延迟步骤,而不是仅连接到 Azure直接使用 Blob。

我看到 Azure Blob 支持共享访问签名 (SAS) 令牌。是否可以仅为与该用户相关的文件子集生成 SAS 令牌?我想工作流程是:

  1. 移动应用通过网站 api 进行身份验证
  2. 网站为 blob 访问生成并返回 SAS 令牌
  3. 移动应用直接使用 SAS 令牌连接到 azure blob。

这会是个好主意吗?还有其他建议吗?

【问题讨论】:

    标签: azure-blob-storage


    【解决方案1】:

    根据我对您的方案的了解,您可以使用 Azure AD 或 SAS 对 Blob 存储进行身份验证/授权。关键是按容器组织用户的数据,以便您可以限制对该容器的访问。这种类型的设计最适合当今 Azure 存储中的授权处理方式。

    例如,您可以为 user1 的数据创建一个容器,为 user2 的数据创建另一个容器,依此类推。

    如果您已经在使用 Azure AD 对应用程序的用户进行身份验证和授权,那么您可以简单地为每个用户分配一个范围为用户容器的 RBAC 角色。例如,您可以将 Storage Blob Data Contributor 角色分配给容器 1 的用户 1,然后对容器 2 上的用户 2 执行相同操作。有关如何在 Azure 门户中执行此操作的信息,请参阅 Use the Azure portal to assign an Azure role for access to blob and queue data;您还可以使用 PowerShell 或 Azure CLI。

    请注意,RBAC 角色不能限定为单个 blob,而只能在容器级别或更高级别。

    如果您确定需要使用 SAS,您可以为每个用户创建一个仅限于其容器的 SAS。如果您的用户已经在使用 Azure AD 对您的应用程序进行身份验证/授权,那么您可能不需要使用 SAS。如果您需要向未经其他身份验证的用户授予访问权限,SAS 将很有用。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-12-20
      • 2017-01-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-04-11
      相关资源
      最近更新 更多