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
. 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.
3 Réponses :
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
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
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
.
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.
En fait, j'ai mentionné que votre script fonctionne bien dans ma réponse, pourriez-vous l'accepter comme réponse? Merci.
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.