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 DevOps -> Pipelines -> Library -> 访问 Azure Key Vault -> Key Vault 不允许从所有网络访问