Ошибка входа в систему через сервис-центр az cli - подписки не найдены

Попытка выполнить az cli вход в систему с использованием субъекта-службы, выдает ошибку с указанием No subscriptions found for <Service_Principal_AppId>. If this is expected, use '--allow-no-subscriptions'. Этот код раньше работал нормально, но теперь, похоже, он больше не работает. Используемая командная строка приведена ниже:

$sp_appid = (Get-AzureRmADServicePrincipal -DisplayName $spDisplayName).ApplicationId.Guid
$sp_secret = (Get-AzureKeyVaultSecret -VaultName $kvName -Name $appKeySecretName).SecretValueText
az login --service-principal --username $sp_appid --password $sp_secret --tenant $tenant_Id

Я проверил, что субъекту службы назначена роль Contributor на уровне подписки.


person phydeauxman    schedule 01.04.2019    source источник


Ответы (3)


На самом деле я не рекомендую вам смешивать Azure Powershell и CLI вместе. Если вы настаиваете на этом, я пробовал ваш сценарий, мне не удалось воспроизвести вашу проблему, он работает нормально. По ошибке можно было попробовать передать --subscription, тоже работает.

$sp_appid = (Get-AzADServicePrincipal -DisplayName joywebapp2).ApplicationId.Guid
$sp_secret = (Get-AzKeyVaultSecret -VaultName joykeyvault1 -Name joywebapp2).SecretValueText
$tenant_Id = "xxxxxxxxxxxx"
$subscription_Id = "xxxxxxxxxxx"
az login --service-principal --username $sp_appid --password $sp_secret --tenant $tenant_Id --subscription $subscription_Id

введите описание изображения здесь

Примечание. Поскольку модуль AzureRM powershell устарел, я использую новый модуль Az powershell. Если вы хотите перейти на Az, см. этот ссылка. (Возможно, это не причина проблемы, но я рекомендую вам обновить ее.)

Обновление:

Мы должны использовать AZ CLI просто для свойства, которое мы пытаемся захватить ... эквивалента в PowerShell не существует.

На самом деле вы можете войти в систему с субъектом службы через powershell, strong password - это секрет, более подробную информацию см. В этом сообщение.

$azureAplicationId ="Azure AD Application Id"
$azureTenantId= "Your Tenant Id"
$azurePassword = ConvertTo-SecureString "strong password" -AsPlainText -Force
$psCred = New-Object System.Management.Automation.PSCredential($azureAplicationId , $azurePassword)
Add-AzureRmAccount -Credential $psCred -TenantId $azureTenantId  -ServicePrincipal
person Joy Wang    schedule 02.04.2019
comment
Спасибо за тестирование ... вернусь и попробую сегодня снова. Возможно, это была проблема с платформой. Мы должны использовать AZ CLI просто для свойства, которое мы пытаемся захватить ... эквивалента в PowerShell не существует. Кроме того, хотелось бы перейти на новый модуль Az, но мы не контролируем платформу, с которой работаем, и людей, которые еще не развернули модуль Az. - person phydeauxman; 02.04.2019
comment
@phydeauxman На самом деле вы можете войти в систему с принципалом службы через PowerShell, см. мое обновление. Кроме того, если проблема не исчезла, попробуйте передать параметр -Subscription в команде Add-AzureRmAccount. - person Joy Wang; 03.04.2019

Первоначальная проблема, по-видимому, была временной проблемой платформы. Вернулся к тому же коду вчера, и он работает без проблем.

person phydeauxman    schedule 04.04.2019
comment
На самом деле, в своем ответе я упомянул, что ваш сценарий работает нормально, не могли бы вы принять его в качестве ответа? Спасибо. - person Joy Wang; 10.04.2019

У меня была та же проблема, что внезапно не появлялись подписки для моего субъекта-службы (на 2 разных серверах сборки, которые я изначально установил одновременно).

Обновление Azure CLI, похоже, устранило проблему.

person Wout    schedule 05.06.2020