Conserver les informations d’identification d’utilisateur sur plusieurs sessions PowerShell

Avertissement

Le module AzureRM PowerShell est officiellement déconseillé depuis le 29 février 2024. Les utilisateurs sont invités à migrer d’AzureRM vers le module Az PowerShell afin de s’assurer d’une prise en charge et des mises à jour continues.

Bien que le module AzureRM puisse toujours fonctionner, il n’est plus géré ou pris en charge, plaçant toute utilisation continue à la discrétion et au risque de l’utilisateur. Consultez nos ressources sur la migration pour obtenir des conseils sur la transition vers le module Az.

Azure PowerShell offre une fonctionnalité appelée Azure Context Autosave, qui offre les fonctions suivantes :

  • La conservation des informations de connexion en vue d’une réutilisation lors de nouvelles sessions PowerShell.
  • Une utilisation plus simple des tâches en arrière-plan pour exécuter des cmdlets à long terme.
  • Le basculement entre des comptes, des abonnements et des environnements sans avoir recours à plusieurs connexions.
  • L’exécution de tâches à l’aide d’informations d’identification et abonnements différents, en simultané et depuis la même session PowerShell.

Contextes Azure définis

Un contexte Azure est un ensemble d’informations qui définit la cible des cmdlets Azure Powershell. Il est constitué de cinq éléments :

  • Un compte : nom d’utilisateur ou le principal du service utilisé pour authentifier les communications avec Azure
  • Un abonnement : l’abonnement Azure contenant les ressources sur lesquelles vous agissez.
  • Locataire : le locataire Microsoft Entra qui contient votre abonnement. Les clients sont plus importants pour l’authentification du principal du service.
  • Un environnement : le cloud Azure ciblé, en général le cloud Azure global. Toutefois, la configuration de l’environnement vous permet aussi de cibler les clouds nationaux, gouvernementaux et locaux (Azure Stack).
  • Informations d’identification : les informations dont Azure se sert pour vérifier votre identité et pour confirmer votre autorisation d’accès à des ressources dans Azure.

Dans les versions précédentes, il fallait créer un contexte Azure à chaque ouverture d’une nouvelle session PowerShell. Depuis Azure PowerShell version 4.4.0, les contextes Azure peuvent être automatiquement enregistrés à chaque ouverture d’une nouvelle session PowerShell.

Sauvegarde automatique du contexte pour la connexion suivante

Depuis la version 6.3.0, Azure PowerShell conserve vos informations de contexte automatiquement d’une session à l’autre. Pour configurer PowerShell de sorte qu’il oublie votre contexte et les informations d’identification, utilisez Disable-AzureRmContextAutoSave. Vous devez vous connecter à Azure chaque fois que vous ouvrez une session PowerShell.

Pour permettre à Azure PowerShell de se rappeler de votre contexte après la fermeture d’une session, utilisez Enable-AzureRmContextAutosave. Le contexte et les informations d’identification sont sauvegardés automatiquement dans un dossier spécial caché dans votre répertoire utilisateur (%AppData%\Roaming\Windows Azure PowerShell). Chaque nouvelle session PowerShell cible le contexte utilisé lors de la dernière session.

Les cmdlets qui vous permettent de gérer des contextes Azure vous offrent aussi un contrôle affiné. Si vous souhaitez que les modifications ne s’appliquent qu’à la session PowerShell actuelle (étendue Process) ou à chaque session PowerShell (étendue CurrentUser). Ces options sont détaillées dans les détails du mode dans Utilisation des étendues de contexte.

Exécution de cmdlets Azure PowerShell en tant que tâche en arrière-plan

La fonctionnalité Azure Context Autosave vous permet aussi de partager votre contexte avec des tâches en arrière-plan PowerShell. PowerShell vous permet de démarrer et de surveiller des tâches dont l’exécution est longue en tant que tâches en arrière-plan, sans avoir à attendre qu’elles ne soient terminées. Vous pouvez partager les informations d’identification avec les tâches en arrière-plan de deux façons :

  • En transmettant le contexte en tant qu’argument

    La plupart des cmdlets AzureRM vous permettent de transmettre le contexte en tant que paramètre à la cmdlet. Vous pouvez transmettre un contexte à une tâche en arrière-plan, comme montré dans l’exemple suivant :

$job = Start-Job { param ($ctx) New-AzureRmVm -AzureRmContext $ctx [... Paramètres supplémentaires ...]} -ArgumentList (Get-AzureRmContext)


- Using the default context with Autosave enabled

If you have enabled **Context Autosave**, background jobs automatically use the default saved
context.

```powershell
$job = Start-Job { New-AzureRmVm [... Additional parameters ...]}

Lorsque vous avez besoin de connaître le résultat de la tâche en arrière-plan, utilisez Get-Job pour vérifier son état et Wait-Job pour attendre qu’elle soit terminée. Utilisez Receive-Job pour capturer ou afficher la sortie de la tâche en arrière-plan. Pour plus d’informations, consultez à propos des_tâches.

Création, sélection, changement de nom et suppression de contextes

Pour créer un contexte, vous devez être connecté à Azure. La cmdlet Connect-AzureRmAccount (ou son alias, Login-AzureRmAccount) définit le contexte par défaut utilisé par les cmdlets Azure PowerShell, et vous permet d’accéder à n’importe quel locataire ou abonnement autorisé par vos informations d’identification.

Pour ajouter un nouveau contexte après la connexion, utilisez Set-AzureRmContext (ou son alias, Select-AzureRmSubscription).

Set-AzureRMContext -Subscription 'Contoso Subscription 1' -Name 'Contoso1'

L’exemple précédent ajoute un nouveau contexte qui cible « Contoso Subscription 1 » en utilisant vos informations d’identification actuelles. Le nouveau contexte est nommé « Contoso1 ». Si vous ne fournissez aucun nom pour le contexte, un nom par défaut est utilisé, constitué de l’ID du compte et de l’ID de l’abonnement.

Pour renommer un contexte existant, utilisez la cmdlet Rename-AzureRmContext. Par exemple :

Rename-AzureRmContext '[user1@contoso.org; 123456-7890-1234-564321]' 'Contoso2'

Cet exemple change le nom [user1@contoso.org; 123456-7890-1234-564321] automatiquement attribué au contexte par le nom « Contoso2 ». Les cmdlets qui gèrent les contextes utilisent aussi la saisie automatique via la touche Tab, ce qui vous permet de sélectionner rapidement le contexte.

Enfin, pour supprimer un contexte, utilisez la cmdlet Remove-AzureRmContext. Par exemple :

Remove-AzureRmContext Contoso2

Oublie le contexte nommé « Contoso2 ». Vous pouvez recréer ce contexte à l’aide de Set-AzureRmContext.

Suppression des informations d’identification

Vous pouvez supprimer toutes les informations d’identification et les contextes associés à un utilisateur ou un principal du service à l’aide de Disconnect-AzureRmAccount (aussi appelé Logout-AzureRmAccount). Si vous l’exécutez sans paramètres, la cmdlet Disconnect-AzureRmAccount supprime toutes les informations d’identification et les contextes associés à un utilisateur ou un principal du service dans le contexte actuel. Vous pouvez, si vous le souhaitez, transmettre un nom d’utilisateur, un nom de principal du service ou un contexte pour cibler un principal spécifique.

Disconnect-AzureRmAccount user1@contoso.org

Utilisation des étendues de contexte

Vous pouvez de temps en temps sélectionner, modifier ou supprimer un contexte d’une session PowerShell sans impacter d’autres sessions. Pour modifier le comportement par défaut des cmdlets de contexte, utilisez le paramètre Scope. L’étendue Process remplace le comportement par défaut en l’appliquant uniquement à la session actuelle. À l’inverse, l’étendue CurrentUser modifie le contexte dans toutes les sessions, et non uniquement dans la session actuelle.

Par exemple, pour modifier le contexte par défaut de la session PowerShell actuelle sans impacter d’autres fenêtres ni le contexte utilisé lors de la prochaine ouverture de session, utilisez :

Select-AzureRmContext Contoso1 -Scope Process

Mémorisation du paramètre de sauvegarde automatique du contexte

Le paramètre de sauvegarde automatique du contexte est sauvegardé dans le répertoire Azure PowerShell de l’utilisateur (%AppData%\Roaming\Windows Azure PowerShell). Certains types de comptes d’ordinateur peuvent ne pas être capables d’accéder à ce répertoire. Dans ce cas, vous pouvez utiliser la variable d’environnement

$env:AzureRmContextAutoSave=$true

Si la valeur est définie sur $true, le contexte est automatiquement enregistré. Si la valeur est définie sur $false, le contexte n’est pas enregistré.

Modifications apportées au module AzureRM.Profile

Nouvelles cmdlets pour la gestion de contexte

Modifications apportées à des cmdlets de profil existantes

  • Add-AzureRmAccount : permet de limiter la connexion au processus ou à l’utilisateur actuel. Permet de renommer le contexte par défaut après authentification.
  • Import-AzureRmContext : permet de limiter la connexion au processus ou à l’utilisateur actuel.
  • Set-AzureRmContext : permet la sélection de contextes nommés existants et la limitation des modifications au processus ou à l’utilisateur actuel.