如何从Angular应用程序保护Azure Blob容器数据?

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

我在Azure blob容器中有多个json文件,其中包含用户配置文件信息,并且我有一个Angular应用程序,该应用程序调用Azure blob容器并提取所有这些json文件。每个json文件都有其自己的网址,例如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,但对我来说似乎没有什么帮助。

angular azure azure-storage-blobs azure-blob-storage
1个回答
0
投票

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

  1. 您需要为用户配置特殊的Azure RABC角色。角色为存储Blob数据所有者存储Blob数据贡献者存储Blob数据读取器

  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

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