我的应用程序托管在资源组的 Azure 应用服务中。同样,我在不同的订阅/RG 中托管了各种应用程序。
以下代码/类库是使用.Net开发的
using System;
using System.Threading.Tasks;
using Azure.Identity;
using Azure.Security.KeyVault.Secrets;
namespace AKVClassLibrary
{
public class KeyVaultService
{
private readonly string _keyVaultUrl;
private readonly SecretClient _secretClient;
public KeyVaultService(string keyVaultUrl)
{
_keyVaultUrl = keyVaultUrl;
// Using DefaultAzureCredential allows the app to use managed identity for
authentication
_secretClient = new SecretClient(new Uri(_keyVaultUrl), new
DefaultAzureCredential());
}
public async Task<string> GetSecretAsync(string secretName)
{
try
{
KeyVaultSecret secret = await _secretClient.GetSecretAsync(secretName);
return secret.Value;
}
catch (Exception ex)
{
Console.WriteLine($"Error fetching secret: {ex.Message}");
return null;
}
}
}
}
代码将从 Azure Key Vault 获取机密。如何将类库集成到Azure Web应用程序中?那么该 Web 应用程序将使用 DLL 从 Azure Key Vault 获取机密吗?
有关 POC 的任何链接或想法都会有所帮助。谢谢
如果我理解正确,您想要构建具有固定
_keyVaultUrl
的类库,其他应用程序可以引用而无需指定或理解 _keyVaultUrl
的样子。您可能需要单独部署生成的 DLL,并且不会删除目标目录中的任何现有文件,请访问 https://learn.microsoft.com/en-us/azure/app-service/deploy-zip? 了解更多信息tabs=cli#deploy-individual-files
您也可以重新启动应用程序服务以再次获取秘密
实际上,我更愿意公开
_keyVaultUrl
并在配置中处理添加/检索机密。这是完全安全的,因为您可以使用托管身份 - 它允许从应用程序服务对 Azure Key Vault 进行身份验证,因此即使被泄露,用户基本上也不知道身份验证和使用 _keyVaultUrl
https://learn.microsoft.com/en-us/azure/key-vault/general/tutorial-net-create-vault-azure-web-app?tabs=azure-cli