Служебный принципал az cli Не удалось войти в систему - подписки не найдены - PullRequest
1 голос
/ 01 апреля 2019

Попытка выполнить 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 на уровне подписки.

Ответы [ 2 ]

0 голосов
/ 04 апреля 2019

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

0 голосов
/ 02 апреля 2019

На самом деле я не рекомендую смешивать 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

enter image description here

Примечание : Из-за устаревшего модуля 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
...