Как получить доступ к Azure Keyvault из контейнера Docker, работающего локально? - PullRequest
1 голос
/ 19 марта 2019

У меня есть образ докера, содержащий приложение ASP.NET Core, которое использует хранилище ключей Azure для доступа к таким вещам, как строки подключения.Когда я запускаю образ локально, я получаю эту ошибку:

Unhandled Exception: Microsoft.Azure.Services.AppAuthentication.AzureServiceTokenProviderException: Parameters: Connection String: [No connection string specified], Resource: https://vault.azure.net, Authority: https://login.windows.net/[guid]. Exception Message: Tried the following 3 methods to get an access token, but none of them worked.
Parameters: Connection String: [No connection string specified], Resource: https://vault.azure.net, Authority: https://login.windows.net/[guid]. Exception Message: Tried to get token using Managed Service Identity. Unable to connect to the Managed Service Identity (MSI) endpoint. Please check that you are running on an Azure resource that has MSI setup.
Parameters: Connection String: [No connection string specified], Resource: https://vault.azure.net, Authority: https://login.windows.net/[guid]. Exception Message: Tried to get token using Visual Studio. Access token could not be acquired. Environment variable LOCALAPPDATA not set.
Parameters: Connection String: [No connection string specified], Resource: https://vault.azure.net, Authority: https://login.windows.net/[guid]. Exception Message: Tried to get token using Azure CLI. Access token could not be acquired. /bin/bash: az: No such file or directory

Насколько я понимаю, он сначала пытается получить маркер доступа в качестве идентификатора управляемой службы.Поскольку он не работает в облаке Azure, он не может этого сделать и пытается получить его через службу Visual Studio Connected.Так как этого не будет в образе докера, он пытается использовать интерфейс командной строки Azure, но он не установлен в образе докера.

Поэтому мне нужно установить интерфейс командной строки Azure в образ докера.Как это сделать, учитывая, что базовый образ файла Dockerfile FROM microsoft/dotnet:2.1-aspnetcore-runtime?

Является ли этот базовый образ образом Alpine OS, поэтому мне нужно посмотреть на установку Azure CLI с Alpine?

Если у меня установлен Azure CLI, есть ли способ получить доступ к хранилищу ключей безхранить какие-либо учетные данные в исходном коде Dockerfile или передавать их в контейнер с помощью простого текста?

В целом, каков наилучший подход здесь.

1 Ответ

0 голосов
/ 16 мая 2019

Это связано с тем, что ваш док-контейнер работает как пользователь root , а пользователь, зарегистрированный в хранилище ключей, является другим пользователем (yourusername@yourcmpany.com)

...