Устранение неполадок с доступом к хранилищу ключей с виртуальной машины Azure

Мне нужно развернуть приложение .Net Core 2.2 на виртуальной машине Azure, и я должен прочитать некоторые учетные данные из Azure Keyvault.

У меня нет полного контроля над окружающей средой.

Я следовал этому руководству Используйте Azure Key Vault с виртуальной машиной Windows в .NET. сколько мог, но на самом деле виртуальная машина уже была создана сисадмином.

  • Я создал KeyVault в той же группе ресурсов виртуальной машины и добавил 2 секрета.

  • Я проверил, что виртуальная машина зарегистрирована в Active Directory и что ей присвоено системное удостоверение.

  • Я добавил в свой Keyvault политику доступа, позволяющую читать и перечислять секреты для моей виртуальной машины.

  • Я попробовал пример приложения в учебнике.

    • Если я запущу его из Visual Studio на своем компьютере (используя Azure Cli для аутентификации с помощью AZ LOGIN), я смогу получить секреты.

    • Если я развертываю приложение на своей виртуальной машине Azure, я получаю исключение «Идентификация не найдена» при попытке получить токен.

  • Я также попытался получить токен с помощью powershell на виртуальной машине:

$response = Invoke-WebRequest -Uri 'http://169.254.169.254/metadata/identity/oauth2/token?api-version=2018-02-01&resource=https://vault.azure.net/'-Method GET -Headers @{Metadata = "true"}

и я получаю эту ошибку

Invoke-WebRequest : {"error":"invalid_request","error_description":"Identity not found"}
At line:1 char:13
+ $response = Invoke-WebRequest -Uri 'http://169.254.169.254/metadata/i ...
+             ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : InvalidOperation: (System.Net.HttpWebRequest:HttpWebRequest) [Invoke-WebRequest], WebException
    + FullyQualifiedErrorId : WebCmdletWebResponseException,Microsoft.PowerShell.Commands.InvokeWebRequestCommand

Если я использую https (в учебнике используется http, но на всякий случай я попробовал также вариант https)

$response = Invoke-WebRequest -Uri 'https://169.254.169.254/metadata/identity/oauth2/token?api-version=2018-02-01&resource=https://vault.azure.net/' -Method GET -Headers @{Metadata = "true"}

есть заметная задержка, тогда я получаю это:

Invoke-WebRequest : Unable to connect to the remote server
At line:1 char:13
+ $response = Invoke-WebRequest -Uri 'https://169.254.169.254/metadata/ ...
+             ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : InvalidOperation: (System.Net.HttpWebRequest:HttpWebRequest) [Invoke-WebRequest], WebException
    + FullyQualifiedErrorId : WebCmdletWebResponseException,Microsoft.PowerShell.Commands.InvokeWebRequestCommand

Вы видите какую-либо ошибку в моих настройках или у вас есть предложения по устранению неполадок?

Как установить LAMP Stack - Security 5/5 на виртуальную машину Azure Linux VM
Как установить LAMP Stack - Security 5/5 на виртуальную машину Azure Linux VM
В предыдущей статье мы завершили установку базы данных, для тех, кто не знает.
Как установить LAMP Stack 1/2 на Azure Linux VM
Как установить LAMP Stack 1/2 на Azure Linux VM
В дополнение к нашему предыдущему сообщению о намерении Azure прекратить поддержку Azure Database для MySQL в качестве единого сервера после 16...
0
0
1 191
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Я могу воспроизвести эту ошибку, ошибка, вероятно, указывает на то, что Identity not found. Я предлагаю еще раз проверить, правильно ли вы назначили системное удостоверение на портале Azure.

Убедитесь, что sysytemAssignedIdentity при его создании с помощью команды Az CLI совпадает с идентификатором объекта на панели виртуальной машины. Если у вас много арендаторов, убедитесь, что вы создаете системное назначенное удостоверение в нужном арендаторе.

Как только я создаю удостоверение для виртуальной машины Azure, ошибка исчезает. Вроде не нужно использовать https, у меня такая же ошибка Unable to connect to the remote server как и у вас.

Другие вопросы по теме