Доступ к справочному значению Azure Key Vault из конфигурации приложения в разработке на локальном компьютере - PullRequest
1 голос
/ 28 мая 2020

Я столкнулся со службой конфигурации приложения Azure с возможностью связать секрет с Azure KeyVault, создав новую запись с опцией ссылки на Key Vault.

Я использовал Расширение Microsoft для конфигурации приложения, как описано в Microsoft Do c

Шаги, которые были выполнены

  • Создание принципа обслуживания через CMD - `` az ad sp create-for-rba c -n "http://mySP" --sdk-auth
  • Предоставляется разрешение для созданного поставщика услуг также через CMD - az keyvault set-policy -n <your-unique-keyvault-name> --spn <clientId-of-your-service-principal> --secret-permissions delete get list set --key-permissions create decrypt delete encrypt get list unwrapKey wrapKey
  • Установить идентификатор и секрет клиента в переменных среды

  • Реализация метода

        public static IHostBuilder CreateHostBuilder(string[] args) =>
                        Host.CreateDefaultBuilder(args)
                        .ConfigureWebHostDefaults(webBuilder =>
                         webBuilder.ConfigureAppConfiguration((hostingContext, config) =>
                         {
                             var settings = config.Build();
    
                             config.AddAzureAppConfiguration(options =>
                             {
                                 options.Connect(settings["ConnectionStrings:AppConfig"])
                                         .ConfigureKeyVault(kv =>
                                         {
                                             kv.SetCredential(new DefaultAzureCredential());
                                         });
                             });
                         })
                         .UseStartup<Startup>());
            }
    
    

Проблема запускался, когда я пытался получить данные из конфигурации приложения, которые имеют хотя бы одну ссылку KV. Я получаю следующую ошибку (только в этом случае одна ссылка KV связана с конфигурацией приложения)

Запрос на обслуживание не выполнен. Статус: 401 (Неавторизованный)

Содержание:

{"error":"invalid_client","error_description":"AADSTS7000215: Invalid client secret is provided.\r\nTrace ID: \r\nCorrelation ID: \r\nTimestamp: 2020-05-27 22:59:52Z","error_codes":[7000215],"timestamp":"2020-05-27 22:59:52Z","trace_id":"","correlation_id":"","error_uri":"https://login.microsoftonline.com/error?code=7000215"}

Headers:
Cache-Control: no-store, no-cache
Pragma: no-cache
Strict-Transport-Security: REDACTED
X-Content-Type-Options: REDACTED
x-ms-request-id: REDACTED
x-ms-ests-server: REDACTED
P3P: REDACTED
Set-Cookie: REDACTED
Date: Wed, 27 May 2020 22:59:51 GMT
Content-Type: application/json; charset=utf-8
Expires: -1
Content-Length: 471

Любая помощь будет очень признательна :) Спасибо!

Ответы [ 2 ]

3 голосов
/ 28 мая 2020

При использовании DefaultAzureCredential он сначала попробует Managed Identity (рекомендуется для служб на Azure) и, в конечном итоге, субъект службы, который требует, чтобы для процесса были установлены следующие переменные среды (как в службе вашего приложения, а также для локальной разработки - могут быть разными, если ID субъекта-службы имеет соответствующие разрешения):

  • AZURE_TENANT_ID: ID клиента
  • AZURE_CLIENT_ID: ID субъекта-службы
  • AZURE_CLIENT_SECRET: секрет (пароль) субъекта-службы, который вы показывали только после создания субъекта-службы

Вы также можете использовать новый предварительный просмотр Azure .Identity, который поддерживает другие схемы аутентификации более распространен и проще в использовании на машинах для разработки, таких как Azure CLI (az login), Visual Studio и Visual Studio Code.

1 голос
/ 03 июня 2020

Проблема заключалась в том, что Visual Studio не смогла получить переменную среды по какой-то причине, поэтому она не отправляет запрос, как только я запустил Visual Studio в качестве администратора, она работает

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...