【问题标题】:How to secure Azure blob container data from Angular application?如何保护来自 Angular 应用程序的 Azure blob 容器数据?
【发布时间】:2020-08-07 22:31:10
【问题描述】:

我在 Azure blob 容器中有多个包含用户配置文件信息的 json 文件,并且我有一个 Angular 应用程序,它调用 Azure blob 容器并获取所有这些 json 文件。每个 json 文件都有自己的 url,例如 https://{accountName}/profiles/{filename}。我正在缓存这些 url,而不是在每次刷新时生成每个 url。现在的问题是容器数据具有公共访问级别,任何拥有此 url 的人都可以访问文件。

一种方法是使用 SAS(共享访问签名)令牌并在特定时间间隔后使 url 过期,但在我的情况下,这将对性能产生巨大影响。因为我必须一次又一次地为所有文件生成令牌。而且我不能在我的 Angular 应用程序中公开秘密访问密钥,所以我必须编写一个可以完成这项工作的 api。

还有其他方法吗?我的 Angular 应用程序部署为 Kubernetes 集群 (AKS) 上的 docker 容器

我找到了这个链接https://docs.microsoft.com/en-us/rest/api/storageservices/authorize-requests-to-azure-storage,但对我来说似乎没什么帮助。

【问题讨论】:

  • Because I have to generate token for all files again and again. - 不一定。您可以为容器生成 SAS 令牌并将该令牌用于该容器中的所有文件。
  • 那么,这是最好的方法吗?
  • 在不知道更多细节的情况下,我会说是的。但是,我不清楚您为什么不愿意进行 API 调用以即时为单个文件生成 SAS 令牌?考虑到创建 SAS 令牌的功能不会向 Azure 存储发出网络请求,它应该是对 API 端点的快速调用。
  • 您可以使用 Azure Function 作为 API 端点,而不是创建长时间运行的 API 服务器。请记住,您网站上的任何人仍然可以向 API 发出这些请求。因此,如果您需要确保一个用户无法获取其他用户的数据,则需要额外的保护。
  • 在您的 Blob 上,您可以添加元数据来标识文件属于谁。获取文件的 API 需要 auth0 令牌。在 API 中,您从令牌中获取用户标识符,确认令牌有效,然后确认此用户可以访问所请求的文件。如果可以,您可以创建一个 SAS 令牌,假设 1 小时,然后返回用户重定向到带有 sas 令牌的 blob。您将响应缓存 1 小时,这样如果用户再次请求相同的文件,浏览器将立即重定向到之前的 url,而无需实际调用 API。

标签: angular azure azure-blob-storage


【解决方案1】:

如果您想限制访问 Blob 存储的用途,您可以将 Azure AD 与您的 Angular 应用程序集成。在您的用户完成 Azure AD 身份验证后,他们将获得 Azure AD 访问令牌,然后他们可以使用访问令牌调用 Azure blob rest api 来获取 blob 内容。但请注意,您需要记住一些事情

  1. 您需要为您的用户配置特殊的 Azure RABC 角色。这些角色是Storage Blob Data OwnerStorage Blob Data ContributorStorage Blob Data Reader

  2. 您需要为 Azure 存储帐户配置 CORS。

更多详情请参考

  1. How to setup Angular Application To Use Azure AD Authentication

  2. 如何configure CORS for Azure storage account

  3. Azure AD and Azure Blob

  4. Azure blob Rest API

【讨论】:

  • 实际上这对我来说不是很有帮助,因为我已经将 Auth0 用于身份验证目的。我在 microsoft docs 上阅读了有关 Azure AD 的信息,但由于这个原因我忽略了。
  • @Ask 既然你用过Auth0,我建议你定义一个函数来读取blob表单存储,并且API受你的Auth0提供者保护。
猜你喜欢
  • 2018-03-28
  • 2013-01-07
  • 1970-01-01
  • 2018-11-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-11-18
  • 2021-04-14
相关资源
最近更新 更多