c# - .NET Core C# 中的 Azure App Service Container Managed Identity Key Vault

标签 c# docker containers azure-web-app-service

我有一个 C# 应用程序在 Azure App Services 的 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 应用服务时,它只是在尝试启动应用时挂起。没有任何反应,最终超时。

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

在 App Services 中为 linux 容器做这项工作我错过了什么?

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

最佳答案

目前这似乎不受支持。我做了什么来验证这个声明:

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

    • 虚拟机
    • 具有自定义图像的应用服务
  2. 将完全相同的代码部署到 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/

相关文章:

docker - 无法将诗歌包上传到本地 dockerized pypiserver

windows - 有人如何上传容器并在我的 Docker 服务器上运行它?

c# - 如何创建正则表达式以确保单词仅由给定的单个字母和字母组组成?

c# - 在 .NET 中操作 XML 的最佳方式

c# - 当类不使用 JSON 字符串提供的所有属性时,将 JSON 字符串转换为类

c# - 没有主方法,我无法使用命令行生成dll文件

docker - 如何将本地镜像推送部署到kubernetes

mysql - docker 。 MySQL 镜像。无法更改 my.cnf 文件

symfony - 我应该将学说注册表或特定存储库、实体管理器传递到 symfony2 中的 DI 容器吗?

c++ - 二维容器结构数组的构造函数