Angular - Azure Key Vault 管理 Vault 访问机密

Posted

技术标签:

【中文标题】Angular - Azure Key Vault 管理 Vault 访问机密【英文标题】:Angular - Azure Key Vault Managing Vault Access secrets 【发布时间】:2020-08-27 17:06:21 【问题描述】:

是否可以使用 Azure Key Vault 在 Angular 应用中获取保管库访问机密?

我正在使用隐式流处理 Azure Active Directory,这意味着我在没有后端的情况下实现所有内容。在我的 Angular 项目中,我使用 Microsoft 身份验证库 (Angular MSAL) 从 Microsoft Identity Platform 端点获取令牌以访问安全的 Web API。现在,我想使用 Azure Key Vault 作为安全存储和访问机密的工具。我打算用它来保护client-id、b2c-policy-name、b2c-scope。

我没有找到有关在前端实现逻辑以管理 Azure Key Vault 的可能性的任何信息。同时,我使用 ENV 创建了一个 Node JS 服务器项目来管理 Azure Key Vault,它运行成功,但我想在我的 Angular 应用程序中获得同样的效果。

export const msalConfig: Configuration = 
    auth: 
        clientId: MY_CLIENT_ID, // I want to use Key Vault here
        authority: b2cPolicies.authorities.signUpSignIn.authority,
        redirectUri: 'http://localhost:6420/',
        postLogoutRedirectUri: 'http://localhost:6420/',
        navigateToLoginRequestUrl: true,
        validateAuthority: false,
      ,
    cache: 
        cacheLocation: 'localStorage',
        storeAuthStateInCookie: isIE,
    ,
;

【问题讨论】:

【参考方案1】:

这是不可能的。另外,即使可以,也不推荐。 如果您可以连接到密钥库以在客户端的 javascript 中检索机密,这是一个巨大的安全风险,因为任何人都可以访问您的机密。它不提供任何安全性。

作为最佳实践,您永远不应直接从客户端代码访问受保护的资源。

希望对您有所帮助, 问候,

【讨论】:

【参考方案2】:

您可以编写一个 Azure 函数来封装密钥保管库。 azure 函数可以是托管标识,并且可以访问密钥保管库。 Azure Active Directory 可以保护该功能本身,以便只有您的注册用户才能触发该功能。 然后,您的 Angular 应用程序可以调用 Azure 函数来获取密钥。

问候

Access key vault from Azure function

Secure Azure function with AAD

【讨论】:

以上是关于Angular - Azure Key Vault 管理 Vault 访问机密的主要内容,如果未能解决你的问题,请参考以下文章

使用 Azure Key Vault 轮换机密

Azure DevOps -> Pipelines -> Library -> 访问 Azure Key Vault -> Key Vault 不允许从所有网络访问

Azure Key Vault 机密查询

Azure Key Vault门户未显示秘密

Azure Key Vault 从 VMSS 实例获取机密

net core 应用程序无法访问 azure key Vault