从浏览器(node.js和Vue.js)访问Azure密钥库的秘密



我有一个Vue单页应用程序(尚未部署),它调用Azure函数来获取一些数据。Azure函数具有管理员级别的安全性,因此我需要主密钥来调用它。

因为我不想把主密钥硬编码到我的JavaScript中,所以我把它作为秘密放在Azure密钥库中。现在,我无法访问它,所以我可以运行我的Azure功能。

我在网上找到的每个教程都没有帮助。我甚至发现了一个npm模块(https://www.npmjs.com/package/@azure/keyvault-secrets),它允许人们从密钥库访问秘密-但是在浏览器中使用这个模块(我的代码将运行)被认为是不安全的。

如果它是相关的,我希望能够访问密钥库从我的网站本地测试时,但也当我部署它(我不知道在哪里,但我很可能会部署我的网站在Azure上)。此外,我希望不必编写服务器端代码,因为我正在编写SPA

所以…我如何从vue网站(又名JavaScript,在浏览器中运行)访问我的密钥库中的秘密?

您试图实现的主要障碍是在服务级别缺乏CORS支持。由于Azure密钥库不提供CORS配置,您对密钥库的请求将在浏览器中运行时失败。

但是你确实有一些选择:

  1. 一个服务器端组件,它可以充当中介,并允许您为应用程序配置CORS策略。由于CORS是浏览器限制,服务器端应用程序无需配置CORS即可与Azure密钥库通信。
  2. 您可以使用Azure API管理作为客户端应用程序和Azure密钥库之间的桥梁。因为Azure API管理支持CORS,它将能够与Azure密钥库通信。

您可能对我创建的演示这两种方法的文档和示例感兴趣。

//评论后编辑

如果你没有服务器端代码,你基本上不能从KeyVault获取。因此,直接使用Azure AD对您的函数进行授权并绕过KeyVault会更容易。

最新更新