Retrouver son identité dans Azure Cloud Shell

Azure Cloud Shell étant GA depuis quelques mois, j’ai entrepris la migration de tous mes scripts / labs que j’utilise dans mes prestations ou mes formations Azure. Pour les formations, Azure Cloud Shell est un gain de temps précieux car je n’ai plus de prérequis à installer sur les postes de mes stagiaires, ce qui impliquait :

  • Accès Administrateur au laptop
  • Autorisation d’installer des composants additionnels (version de framework, …)
  • Reconfiguration de la sécurité par défaut pour utiliser la PSGallery

Bref, un must to have en formation. Lors de ma migration vers Azure Cloud Shell, j’ai dû fait une croix sur mes interfaces graphiques minimalistes (Out-GridView, …). Presque tous mes scripts ont fonctionné ou presque. En fait, il y a une exception qui m’a pris un peu de temps : Créer un Key Vault. C’est tout con la commande New-AzureRmKeyVault mais la première fois que je l’ai exécuté dans Azure Cloud Shell, je suis resté perplexe en lisant le message d’avertissement.

clip_image001

 

La commande n’échoue pas mais elle indique clairement que le créateur de la ressource n’a aucune permission dessus. Pourtant, en PowerShell Desktop, cela ne posait aucun problème. OK, c’est juste une ligne de PowerShell supplémentaire pour corriger le problème. C’est vrai mais comment sait-on qui on est ? Facile, me direz-vous : Get-AzureRmContext

clip_image002

 

Surprise, on s’attend à retrouver son compte dans l’attribut Account mais en fait, il indique un Managed Service Identity. Vu que Cloud Shell nous connecte aussi à Azure AD, on pourrait penser trouver la solution de ce côté avec : Get-AzureADCurrentSessionInfo.

clip_image003

 

A première vue, c’est peine perdue. Pourtant, depuis le temps que je fais de l’Azure, je commence à le connaitre cet ObjectID. A tout hasard, j’ai tenté un truc : Get-AzureADUser -ObjectID $context.AccountID

clip_image004

 

Bingo. Si le module AZ lui-même ne sait pas retrouver qui on est (il ne voit que le MSI utilisé par Azure Cloud Shell), Azure AD est lui bien capable mais le module « AzureAD.Standard » étant encore en preview, il doit encore y avoir des trucs à corriger dans la commande Get-AzureADCurrentSessionInfo. Maintenant que j’ai retrouvé qui je suis, ne me reste plus qu’à utiliser la commande Set-AzureRmAccessKeyVaultPolicy

clip_image005

 

Conclusion, il me faudra quand même revoir quelques scripts pour qu’ils s’adaptent au contexte d’exécution Azure Cloud Shell. Next move, basculer tout cela en Powershell Core. Au passage, pensez à voter pour ce feedback qui ma pourri l’existence lors de ma dernière formation Azure : https://feedback.azure.com/forums/598699-azure-cloud-shell/suggestions/33873418-add-support-for-internet-authentication-proxy

BenoitS – Simple and Secure by design but Business compliant

Benoit

Simple, yes, Secure Maybe, by design for sure, Business compliant always!

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.