我的Web应用程序有许多存储在KeyVault中的安全配置元素。为了连接它,我们有一些使用应用ID和密钥的代码,这反过来,因为它们允许访问密钥保管库,是安全凭据。
我可以使用应用程序的身份作为凭证以某种集成安全方式连接到KeyVault吗?或者是否有其他方法来保护这些凭据?
我已经考虑过使用加密保护配置元素,但是还有另一个必须维护,保护和部署的资产(密钥)。这比明文配置更好,但我想在这里找出最好的解决方案。
如果要使用Azure Active Directory从Web App访问Key Vault,可以执行以下操作
On
按钮和Save
),这将创建托管服务标识。 Access policies
选项卡Secret Management
作为ConfigureGet
,以获取对密钥的访问权限(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.AppAuthentication
和Microsoft.Azure.KeyVault
NuGet软件包。
如果您的应用程序在Web应用程序中运行,Managed Service Identity会为您的应用程序提供一个身份,您可以使用该身份使用AAD访问Key Vault和其他资源。