带有 Azure Key Vault 的本地 ASP.NET 框架 Web 应用程序
On-prem ASP.NET Framework web app with Azure Key Vault
我们正在尝试保护我们内部 ASP.NET 框架 Web 应用程序中的应用程序机密。最初提供给我的计划是使用 Azure Key Vault。我开始使用我的 Visual Studio 企业订阅进行开发工作,这似乎在本地运行良好。
我们在公司的生产环境中创建了第二个 Key Vault,同样,我可以在本地使用它,因为我自己的 AAD 帐户可以访问该保管库。但是,在此项目(4.7.2 Web 窗体 Web 应用程序)中,我没有看到任何指定我们为应用程序创建的访问策略主体的方法。
我的 google-fu 让我失望了:有没有说明如何执行此操作的文档?这种情况——在 Azure 环境之外的本地 ASP.NET 框架应用程序,访问 Key Vault 以获取配置值——是否可能?
谢谢。
更新:我无法找到允许我从“添加连接的服务”对话框中使用访问策略主体的解决方案。我有点惊讶它不在那里,或者隐藏得足以让我躲避。所以我最终编写了自己的 Key Vault Secret-Reader 函数,类似于标记的答案。希望这对某人有所帮助...
在这种情况下,您的选择是使用服务主体访问密钥库,请按照以下步骤操作,我的示例从密钥库中获取秘密。
1.Register an application with Azure AD and create a service principal.
2.Get values for signing in and create a new application secret.
3.Navigate 到门户中的密钥库 -> Access policies
-> 为服务主体添加正确的秘密权限。
4.Then 使用下面的代码,将 <client-id>
、<tenant-id>
、<client-secret>
替换为之前得到的值。
using System;
using Microsoft.Azure.KeyVault;
using Microsoft.Azure.Services.AppAuthentication;
namespace test1
{
class Program
{
static void Main(string[] args)
{
var azureServiceTokenProvider = new AzureServiceTokenProvider("RunAs=App;AppId=<client-id>;TenantId=<tenant-id>;AppKey=<client-secret>");
var kv = new KeyVaultClient(new KeyVaultClient.AuthenticationCallback(azureServiceTokenProvider.KeyVaultTokenCallback));
var secret = kv.GetSecretAsync("https://keyvaultname.vault.azure.net/", "mySecret123").GetAwaiter().GetResult();
Console.WriteLine(secret);
}
}
}
我们正在尝试保护我们内部 ASP.NET 框架 Web 应用程序中的应用程序机密。最初提供给我的计划是使用 Azure Key Vault。我开始使用我的 Visual Studio 企业订阅进行开发工作,这似乎在本地运行良好。
我们在公司的生产环境中创建了第二个 Key Vault,同样,我可以在本地使用它,因为我自己的 AAD 帐户可以访问该保管库。但是,在此项目(4.7.2 Web 窗体 Web 应用程序)中,我没有看到任何指定我们为应用程序创建的访问策略主体的方法。
我的 google-fu 让我失望了:有没有说明如何执行此操作的文档?这种情况——在 Azure 环境之外的本地 ASP.NET 框架应用程序,访问 Key Vault 以获取配置值——是否可能?
谢谢。
更新:我无法找到允许我从“添加连接的服务”对话框中使用访问策略主体的解决方案。我有点惊讶它不在那里,或者隐藏得足以让我躲避。所以我最终编写了自己的 Key Vault Secret-Reader 函数,类似于标记的答案。希望这对某人有所帮助...
在这种情况下,您的选择是使用服务主体访问密钥库,请按照以下步骤操作,我的示例从密钥库中获取秘密。
1.Register an application with Azure AD and create a service principal.
2.Get values for signing in and create a new application secret.
3.Navigate 到门户中的密钥库 -> Access policies
-> 为服务主体添加正确的秘密权限。
4.Then 使用下面的代码,将 <client-id>
、<tenant-id>
、<client-secret>
替换为之前得到的值。
using System;
using Microsoft.Azure.KeyVault;
using Microsoft.Azure.Services.AppAuthentication;
namespace test1
{
class Program
{
static void Main(string[] args)
{
var azureServiceTokenProvider = new AzureServiceTokenProvider("RunAs=App;AppId=<client-id>;TenantId=<tenant-id>;AppKey=<client-secret>");
var kv = new KeyVaultClient(new KeyVaultClient.AuthenticationCallback(azureServiceTokenProvider.KeyVaultTokenCallback));
var secret = kv.GetSecretAsync("https://keyvaultname.vault.azure.net/", "mySecret123").GetAwaiter().GetResult();
Console.WriteLine(secret);
}
}
}