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

时间:2018-03-01 16:09:48

标签: azure security azure-web-sites azure-keyvault

我的Web应用程序在KeyVault中存储了许多安全配置元素。为了连接到它,我们有一些使用应用ID和密钥的代码,而这反过来因为它们允许访问密钥保管库,所以是安全凭证。

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

我已经考虑过使用加密来保护配置元素,但是那时必须维护,保护和部署另一个资产(密钥)。这比明文配置更好,但我试图在这里找出最佳解决方案。

2 个答案:

答案 0 :(得分:1)

如果您的应用在Web应用中运行,Managed Service Identity会为您的应用提供一个身份,您可以使用该身份使用AAD访问Key Vault和其他资源。

答案 1 :(得分:1)

如果要使用Azure Active Directory从Web App访问Key Vault,可以执行以下操作

  1. 转到您的网络应用
  2. 转到托管服务标识并使用Azure Active Directory注册Web应用程序(单击On按钮,然后单击Save),这将创建托管服务标识。 Managed service identity

  3. 现在转到密钥保险库并打开Access policies标签

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

  7. 现在转到密钥权限,至少选择Get以获取访问权限 你的钥匙(秘密和证书的程序相同)。

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

    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包。