繁体   English   中英

.NET Core C# 中的 Azure 应用服务容器托管标识密钥库

[英]Azure App Service Container Managed Identity Key Vault in.NET Core C#

我有一个 C# 应用程序在 Azure 应用服务的 linux docker 容器中运行,它从 Azure Key Vault 获取它的配置信息。

过去我们是这样做的:

config.AddAzureKeyVault(builtConfig["Azure:Auth:Vault"],
    builtConfig["Azure:Auth:ClientId"], builtConfig["Azure:Auth:ClientSecret"]);

相反,我们一直在尝试使用托管身份。 所以我:

  1. 何时在应用服务上标识并单击启用系统标识并点击保存。
  2. 进入 azure keyvault 并为应用程序服务添加系统身份,并在 3 个区域为它添加了获取、列出、解密和解包,就像我们为使用 VS.net 身份验证的用户所做的那样。
  3. 从 nuget 添加了 AppAuthenication 库。

  4. 像这样更新我的代码:

     var azureServiceTokenProvider = new AzureServiceTokenProvider(); var keyVaultClient = new KeyVaultClient( new KeyVaultClient.AuthenticationCallback( azureServiceTokenProvider.KeyVaultTokenCallback)); config.AddAzureKeyVault(builtConfig["Azure:Auth:Vault"], keyVaultClient, new DefaultKeyVaultSecretManager());

但是当我们通过更新容器将其放入 Azure 应用服务时,它只是在尝试启动应用程序时挂起。 什么也没有发生,最终它会超时。

我可以找到很多关于直接应用服务的文档,但容器没有什么不同。 然而,它似乎说它是受支持的。

在应用服务中为 linux 容器进行这项工作时,我缺少什么?

即使打开托管标识也会导致容器永远不会响应 ping 检查,更不用说正常启动了。

目前,这似乎不受支持。 我为验证此声明所做的工作:

  1. 使用系统分配的身份创建了两个实例:

    • 虚拟机
    • 具有自定义图像的应用服务
  2. 部署完全相同的代码以通过 curl 获取令牌

它在 VM 上按预期工作,但在自定义映像上不起作用。

遗憾的是,Azure 并未如宣传的那样在其托管服务上提供托管标识。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM