2
votes

Échec de la connexion au service principal az cli - AUCUN abonnement trouvé

Essayer d'effectuer une connexion az cli à l'aide d'un principal de service et cela génère une erreur indiquant Aucun abonnement trouvé pour . Si cela est prévu, utilisez '--allow-no-subscriptions' . Ce code a bien fonctionné auparavant, mais maintenant il ne semble plus fonctionner. La ligne de commande utilisée est ci-dessous:

$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

J'ai vérifié que le principal du service se voit attribuer le rôle Contributeur au niveau de l'abonnement.


0 commentaires

3 Réponses :


1
votes

En fait, je ne vous recommande pas de mélanger Azure Powershell et CLI. Si vous insistez pour le faire, j'ai essayé votre script, je n'ai pas pu reproduire votre problème, cela fonctionne bien. Selon l'erreur, vous pouvez essayer de passer un --subscription , cela fonctionne également.

$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

 entrez la description de l'image ici

Remarque : du fait que le module PowerShell AzureRM est obsolète, j'utilise le nouveau module PowerShell Az , si vous le souhaitez pour mettre à niveau vers Az, consultez ceci lien . (Ce n'est peut-être pas la raison du problème, mais je vous recommande de le mettre à jour.)

Mettre à jour :

Nous devons utiliser AZ CLI simplement pour la propriété que nous essayons de récupérer ... il n'y a pas d'équivalent PowerShell.

En fait, vous pouvez vous connecter avec un principal de service via PowerShell, le mot de passe fort est le secret, plus de détails voir ceci post .

$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


2 commentaires

Merci d'avoir testé ... je reviendrai et réessayerons aujourd'hui. C'était peut-être un problème de plate-forme. Nous devons utiliser AZ CLI simplement pour la propriété que nous essayons de récupérer ... il n'y a pas d'équivalent PowerShell. J'adorerais également passer au nouveau module Az, mais nous ne contrôlons pas la plate-forme sur laquelle nous travaillons et les personnes qui n'ont pas encore déployé le module Az.


@phydeauxman En fait, vous pouvez vous connecter avec un principal de service via PowerShell, voir ma mise à jour. De plus, si le problème persiste, vous pouvez essayer de transmettre le paramètre -Subscription dans la commande Add-AzureRmAccount .



1
votes

Le problème d'origine semble avoir été un problème de plate-forme transitoire. Je suis revenu au même code hier et cela fonctionne sans problème.


1 commentaires

En fait, j'ai mentionné que votre script fonctionne bien dans ma réponse, pourriez-vous l'accepter comme réponse? Merci.



0
votes

J'ai eu le même problème que soudainement aucun abonnement n'apparaissait pour mon principal de service (sur 2 serveurs de build différents que j'avais initialement installés en même temps).

La mise à jour d'Azure CLI a semblé résoudre le problème.


0 commentaires