azure - 如何在不存储凭据的情况下连接到 KeyVault?

标签 azure security azure-web-app-service azure-keyvault

我的 Web 应用程序在 KeyVault 中存储了许多安全配置元素。为了连接到它,我们有一些使用应用程序 ID 和 key 的代码,而这些代码又是安全凭据,因为它们允许访问 Key Vault。

我可以使用应用程序的身份作为凭据,以某种集成安全方式连接到 KeyVault 吗?或者有其他方法来保护这些凭据吗?

我考虑过通过加密来保护配置元素,但是还有另一个 Assets ( key )需要维护、保护和部署。这比纯文本配置更好,但我试图在这里找出最好的解决方案。

最佳答案

如果您想使用 Azure Active Directory 从 Web 应用程序访问 Key Vault,您可以执行以下操作

  1. 转到您的网络应用程序
  2. 转到托管服务身份并向 Azure Active Directory 注册 Web 应用(单击开启 按钮并稍后保存),这将创建托管服务服务身份。 Managed service identity

  3. 现在转到 key 保管库并打开访问策略选项卡

  4. 点击“新增”
  5. 选择Secret Management作为从模板配置
  6. 在“选择主体”选项中,选择托管服务身份 为您的网络应用程序创建(应命名为您的应用程序) enter image description here

  7. 现在转到“关键权限”并至少选择获取,以获取对 您的 key ( secret 和证书的过程相同)。

完成所有这些步骤后,您可以转到您的网络应用程序代码并获取例如如下所示的 secret :

AzureServiceTokenProvider azureServiceTokenProvider = new AzureServiceTokenProvider();

 var keyVaultClient = new KeyVaultClient(new KeyVaultClient.AuthenticationCallback(azureServiceTokenProvider.KeyVaultTokenCallback));

 var secret = await keyVaultClient.GetSecretAsync("https://keyvaultname.vault.azure.net/secrets/secret").ConfigureAwait(false);

您需要将 Microsoft.Azure.Services.AppAuthenticationMicrosoft.Azure.KeyVault NuGet 包安装到您的应用程序。

关于azure - 如何在不存储凭据的情况下连接到 KeyVault?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49053940/

相关文章:

azure - 缓存用于在 Azure AD B2C 中签署 token 的公钥是否安全?

azure - 使用部署槽进行交换时处理数据库迁移的推荐方法

java - Java SSLSockets 是否需要提供的 SSL 证书?

silverlight - 在 Silverlight 中使用安全关键构造函数子类化透明类型的安全规则

azure - 使用 eventhub 时,为什么我会在 Azure 上收到此错误?

azure - 使用 Azure Graph API 检索个人资料图片信息

asp.net-mvc - 将调试器附加到 IIS 工作进程时出错

java - Android 上的 PBEWITHSHA256AND256BITAES-CBC-BC : number of iterations for keygeneration and cipher?

node.js - 如何修复端口 80 上的 Azure 应用服务错误?

azure - 如何在没有 "Always On"的情况下保持 Azure WebJob 运行