我有一个在 Azure 上运行的 C# ASP.NET Core 应用服务。它需要密钥才能访问 Azure 存储帐户。它从 Azure 密钥保管库获取这些密钥。
我的问题是偶尔我想更改这些键。我希望应用程序尽可能顺利地重新加载密钥,而无需从密钥库中读取任何内容。
目前我们在启动时这样做:
Host.CreateDefaultBuilder(args)
.ConfigureLogging(logging => logging.AddConsole())
.ConfigureAppConfiguration((context, config) =>
{
var secretClient = new SecretClient(keyVaultUri, credential);
config.AddAzureKeyVault(secretClient, new KeyVaultSecretManager());
})
据我了解,这会在应用程序启动时从 Azure 密钥保管库加载机密并永久缓存它们。
一旦应用程序检测到旧机密不再有效,从 Azure 密钥保管库刷新缓存机密的最佳实践方法是什么?有没有一种无需重新启动应用程序的好方法?
当然,我可以创建一个SecretClient
新密钥并获取新密钥,但是有什么好方法可以全局缓存新密钥,这样我只在绝对必要时才调用密钥库?有没有一个很好的标准方法,或者我需要实现我自己的自定义全局状态?
(我不需要像上面那样使用AddAzureKeyVault
。如果更方便的话,我可以用别的东西代替。)