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

问题描述 投票:1回答:2

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

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

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

azure security azure-web-sites azure-keyvault
2个回答
1
投票

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

  1. 转到您的Web应用程序
  2. 转到托管服务标识并使用Azure Active Directory注册Web应用程序(稍后单击On按钮和Save),这将创建托管服务标识。 Managed service identity
  3. 现在转到密钥库并打开Access policies选项卡
  4. 单击“添加新”
  5. 从模板中选择Secret Management作为Configure
  6. 在“选择主体”选项中,选择为您的Web应用程序创建的托管服务标识(应该将其命名为您的应用程序)enter image description here
  7. 现在转到Key权限,至少选择Get,以获取对密钥的访问权限(Secrets和Certificates的相同过程)。

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

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


1
投票

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

© www.soinside.com 2019 - 2024. All rights reserved.