Ошибка конвейера Azure devops при выполнении миграции dotnet EF с использованием строки подключения из хранилища ключей

Здесь довольно много вопросов, похожих на мой, но ни один из них, похоже, не помогает решить проблему, отсюда и новый вопрос. Я подключаюсь к хранилищу ключей, которое возвращает строку подключения к базе данных, используя следующий код в приложении .net web api в файле Program.cs.

var kVUri = $"https://{config["azureKeyVault:vault"]}.vault.azure.net/";

var azureServiceTokenProvider = new AzureServiceTokenProvider();

var keyVaultClient = new KeyVaultClient(
    new KeyVaultClient.AuthenticationCallback(
        azureServiceTokenProvider.KeyVaultTokenCallback)
);

configurationBuilder.AddAzureKeyVault(kVUri, keyVaultClient, new DefaultKeyVaultSecretManager());

Приведенный выше код отлично работает локально, поскольку у меня есть доступ к хранилищу ключей, однако при развертывании кода в сборке происходит сбой при выполнении задачи миграции dotnet ef. Это задача командной строки, запуск сценария миграции dotnet ef... Ошибка Microsoft.Azure.Services.AppAuthentication.AzureServiceTokenProviderException: Параметры: Строка подключения: [Строка подключения не указана]

Я удостоверился, что MI включен в службе приложений, есть регистрация приложения в AD, и этой службе предоставлены разрешения на Key Vault, подключение службы, на котором работает конвейер, также имеет разрешения на хранилище.

Когда подключение к хранилищу ключей было выполнено с использованием clientId и секрета, раньше выполнялись миграции EF. Я читал, что мне нужно добавить RunAs=app, но это, кажется, если я вызываю servicetokenprovider с помощью cli, что в данном случае я не делаю, если ему нужно войти в конвейер, не уверен, куда он должен идти.

Некоторая помощь будет высоко оценена.


person Sasha Ramjee    schedule 09.04.2021    source источник
comment
Вам нужно запустить команду в сеансе Az CLI, который прошел проверку подлинности с помощью субъекта-службы, имеющего доступ к вашему хранилищу ключей.   -  person Daniel Mann    schedule 09.04.2021
comment
Спасибо @DanielMann, я добавил задачу AZ CLI, и это сработало.   -  person Sasha Ramjee    schedule 14.04.2021


Ответы (1)


Резюме из комментариев для ссылки на другие сообщества:

Запустите команду в сеансе Az CLI, который прошел проверку подлинности с помощью субъекта-службы, и субъекту-службе должно быть назначено разрешение на доступ к хранилищу ключей.

person Hury Shen    schedule 20.04.2021