我有一个 C# 应用程序在 Azure App Services 的 linux docker 容器中运行,它从 Azure Key vault 获取它的配置信息。
过去我们是这样做的:
config.AddAzureKeyVault(builtConfig["Azure:Auth:Vault"],
builtConfig["Azure:Auth:ClientId"], builtConfig["Azure:Auth:ClientSecret"]);
我们一直在尝试使用托管身份。所以我:
- 何时在应用程序服务上进行身份验证并在系统身份上点击启用并点击保存。
- 进入 azure keyvault 并为应用服务添加系统身份,在 3 个区域为其获取、列出、解密和解包,就像我们为使用 VS.net 身份验证的用户所做的那样。
从 nuget 添加了 AppAuthenication 库。
像这样更新我的代码:
var azureServiceTokenProvider = new AzureServiceTokenProvider(); var keyVaultClient = new KeyVaultClient( new KeyVaultClient.AuthenticationCallback( azureServiceTokenProvider.KeyVaultTokenCallback)); config.AddAzureKeyVault(builtConfig["Azure:Auth:Vault"], keyVaultClient, new DefaultKeyVaultSecretManager());
但是当我们通过更新容器将其放入 Azure 应用服务时,它只是在尝试启动应用时挂起。没有任何反应,最终超时。
我可以找到很多关于直接应用服务的文档,但对于容器来说没有什么不同。然而,它似乎说它是受支持的。
在 App Services 中为 linux 容器做这项工作我错过了什么?
即使打开托管身份也会导致容器永远不会响应 ping 检查,更不用说正常启动了。
最佳答案
目前这似乎不受支持。我做了什么来验证这个声明:
创建了两个具有系统分配身份的实例:
- 虚拟机
- 具有自定义图像的应用服务
将完全相同的代码部署到 get a token through curl .
它在 VM 上按预期工作,但在自定义镜像上不起作用。
很遗憾,Azure 没有像宣传的那样在其托管服务上提供托管身份。
关于c# - .NET Core C# 中的 Azure App Service Container Managed Identity Key Vault,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57525749/