Azure Managed Identity из контейнера Docker, работающего локально - PullRequest
0 голосов
/ 26 февраля 2019

Я использую докер-контейнер, состоящий из ядра 2.2 asp.net api.Для этого API необходим доступ к хранилищу ключей Azure, и я вошел в Visual Studio с пользователем, у которого есть соответствующие политики доступа к хранилищу ключей для получения секретов.Тем не менее, когда я использую инструменты Visual Studio для Docker для отладки контейнера, этот конкретный вход, как представляется, не распространен внутри контейнера, работающего локально.Но когда я запускаю приложение локально (не запуская его в Docker-контейнере), провайдер конфигурации ядра asp net, похоже, подхватывает мою визуальную студийную регистрацию.Любые указатели на это полезны

1 Ответ

0 голосов
/ 20 июня 2019

У меня была такая же проблема с докером и MSI на моем Mac.В итоге я сделал следующий обходной путь:

Сначала получите токен доступа из CLI и установите его в среду (и не забудьте передать его в Docker)

export ACCESS_TOKEN=$(az account get-access-token --resource=https://vault.azure.net | jq -r .accessToken)

В коде выберите егоесли токен находится в окружении:

KeyVaultClient keyVaultClient;
var accessToken = Environment.GetEnvironmentVariable("ACCESS_TOKEN");
if (accessToken!=null)
{
   keyVaultClient = new KeyVaultClient(
       async (string a, string r, string s)=> accessToken);
}
else
{
   var azureServiceTokenProvider = new AzureServiceTokenProvider();
   keyVaultClient = new KeyVaultClient(
      new KeyVaultClient.AuthenticationCallback(
          azureServiceTokenProvider.KeyVaultTokenCallback));
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...