PROD中的asp.net秘密

时间:2018-10-03 16:05:16

标签: asp.net azure azure-keyvault

我一直在使用新的.net 4.7.1功能来在DEV中本地管理机密,但现在我想发布自己的Web应用程序,当然在PROD中不起作用。

我正在使用服务主体访问我的应用程序中的Azure密钥库,并将应用程序ID和密码存储在本地机密文件中。我当然可以将我的所有秘密存储在Key Vault中,但是我仍然需要向其提供服务主体详细信息以首先与之连接。

这里最好的选择是什么?

2 个答案:

答案 0 :(得分:1)

您需要在应用程序的“应用程序”设置中存储用于打开密钥库的值。如果您的生产环境是Azure,则可以访问应用程序的“应用程序”设置并在此处进行设置。

阅读this文章以了解整体情况。但最主要的是,您可以在Azure密钥值中使用应用程序密钥,然后使用应用程序设置存储凭据以供以后访问该密钥库。

答案 1 :(得分:0)

您可以使用托管身份,因此您不必在应用程序中存储任何秘密:

How to use managed identities for App Service and Azure Functions

配置完成后,添加对以下nuget软件包的引用:Microsoft.Azure.Services.AppAuthenticationMicrosoft.Azure.KeyVault

在您的应用程序中,您可以访问以下密钥库机密:

using Microsoft.Azure.KeyVault;
using Microsoft.Azure.Services.AppAuthentication;

...

var azureServiceTokenProvider = new AzureServiceTokenProvider();
var keyVaultClient = new KeyVaultClient(
     new KeyVaultClient.AuthenticationCallback(azureServiceTokenProvider.KeyVaultTokenCallback));
var secret = await keyVaultClient.GetSecretAsync(
    "https://{{my-vault-name}}.vault.azure.net/", "{{my-secret}}");