Conserver les informations d’identification utilisateur sur plusieurs sessions PowerShellPersist Azure user credentials across PowerShell sessions

Azure PowerShell offre une fonctionnalité appelée Azure Context Autosave, qui offre les fonctions suivantes :Azure PowerShell offers a feature called Azure Context Autosave, which gives the following features:

  • La conservation des informations de connexion en vue d’une réutilisation lors de nouvelles sessions PowerShell.Retention of sign-in information for reuse in new PowerShell sessions.
  • Une utilisation plus simple des tâches en arrière-plan pour exécuter des cmdlets à long terme.Easier use of background tasks for executing long-running cmdlets.
  • Le basculement entre des comptes, des abonnements et des environnements sans avoir recours à plusieurs connexions.Switch between accounts, subscriptions, and environments without a separate sign-in.
  • 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.Execution of tasks using different credentials and subscriptions, simultaneously, from the same PowerShell session.

Contextes Azure définisAzure contexts defined

Un contexte Azure est un ensemble d’informations qui définit la cible des cmdlets Azure Powershell.An Azure context is a set of information that defines the target of Azure PowerShell cmdlets. Il est constitué de cinq éléments :The context consists of five parts:

  • Un compte : nom d’utilisateur ou le principal du service utilisé pour authentifier les communications avec AzureAn Account - the UserName or Service Principal used to authenticate communications with Azure
  • Un abonnement : l’abonnement Azure contenant les ressources sur lesquelles vous agissez.A Subscription - The Azure Subscription with the Resources being acted upon.
  • Un client : le client Azure Active Directory qui contient votre abonnement.A Tenant - The Azure Active Directory tenant that contains your subscription. Les clients sont plus importants pour l’authentification du principal du service.Tenants are more important to ServicePrincipal authentication.
  • Un environnement : le cloud Azure ciblé, en général le cloud Azure global.An Environment - The particular Azure Cloud being targeted, usually the Azure global Cloud. Toutefois, la configuration de l’environnement vous permet aussi de cibler les clouds nationaux, gouvernementaux et locaux (Azure Stack).However, the environment setting allows you to target National, Government, and on-premises (Azure Stack) clouds as well.
  • 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.Credentials - The information used by Azure to verify your identity and confirm your authorization to access resources in Azure

Depuis la dernière version d’Azure PowerShell, les contextes Azure peuvent être automatiquement enregistrés à chaque ouverture d’une nouvelle session PowerShell.With the latest version of Azure PowerShell, Azure Contexts can automatically be saved whenever opening a new PowerShell session.

Sauvegarde automatique du contexte pour la connexion suivanteAutomatically save the context for the next sign-in

Azure PowerShell conserve vos informations de contexte automatiquement entre les sessions.Azure PowerShell retains your context information automatically between sessions. Pour configurer PowerShell de sorte qu’il oublie votre contexte et les informations d’identification, utilisez Disable-AzContextAutoSave.To set PowerShell to forget your context and credentials, use Disable-AzContextAutoSave. Si l’enregistrement du contexte est désactivé, vous devez vous connecter à Azure chaque fois que vous ouvrez une session PowerShell.With context saving disabled, you'll need to sign in to Azure every time you open a PowerShell session.

Pour permettre à Azure PowerShell de se rappeler de votre contexte après la fermeture d’une session, utilisez Enable-AzContextAutosave.To allow Azure PowerShell to remember your context after the PowerShell session is closed, use Enable-AzContextAutosave. Le contexte et les informations d’identification sont enregistrés automatiquement dans un dossier spécial caché dans votre répertoire utilisateur ($env:USERPROFILE\.Azure sous Windows et $HOME/.Azure sous les autres plateformes).Context and credential information are automatically saved in a special hidden folder in your user directory ($env:USERPROFILE\.Azure on Windows, and $HOME/.Azure on other platforms). Chaque nouvelle session PowerShell cible le contexte utilisé lors de la dernière session.Each new PowerShell session targets the context used in your last session.

Les cmdlets qui vous permettent de gérer des contextes Azure vous offrent aussi un contrôle affiné.The cmdlets that allow you to manage Azure contexts also allow you fine grained control. Si vous souhaitez que les modifications ne s’appliquent qu’à la session PowerShell actuelle (étendue Process) ou à chaque session PowerShell (étendue CurrentUser).If you want changes to apply only to the current PowerShell session (Process scope) or every PowerShell session (CurrentUser scope). Ces options sont abordées en détail dans Utilisation des étendues de contexte.These options are discussed in more detail in Using Context Scopes.

Exécution de cmdlets Azure PowerShell en tant que tâche en arrière-planRunning Azure PowerShell cmdlets as background jobs

La fonctionnalité Azure Context Autosave vous permet aussi de partager votre contexte avec des tâches en arrière-plan PowerShell.The Azure Context Autosave feature also allows you to share you context with PowerShell background jobs. 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.PowerShell allows you to start and monitor long-executing tasks as background jobs without having to wait for the tasks to complete. Vous pouvez partager les informations d’identification avec les tâches en arrière-plan de deux façons :You can share credentials with background jobs in two different ways:

  • En transmettant le contexte en tant qu’argumentPassing the context as an argument

    La plupart des cmdlets AzureRM vous permettent de transmettre le contexte en tant que paramètre à la cmdlet.Most AzureRM cmdlets allow you to pass the context as a parameter to the cmdlet. Vous pouvez transmettre un contexte à une tâche en arrière-plan, comme montré dans l’exemple suivant :You can pass a context to a background job as shown in the following example:

    PS C:\> $job = Start-Job { param ($ctx) New-AzVm -AzureRmContext $ctx [... Additional parameters ...]} -ArgumentList (Get-AzContext)
    
  • En utilisant le contexte par défaut avec la sauvegarde automatique activéeUsing the default context with Autosave enabled

    Si vous avez activé la fonctionnalité Context Autosave, les tâches en arrière-plan utiliseront automatiquement le contexte par défaut sauvegardé.If you have enabled Context Autosave, background jobs automatically use the default saved context.

    PS C:\> $job = Start-Job { New-AzVm [... 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.When you need to know the outcome of the background task, use Get-Job to check the job status and Wait-Job to wait for the Job to complete. Utilisez Receive-Job pour capturer ou afficher la sortie de la tâche en arrière-plan.Use Receive-Job to capture or display the output of the background job. Pour plus d’informations, consultez à propos des_tâches.For more information, see about_Jobs.

Création, sélection, changement de nom et suppression de contextesCreating, selecting, renaming, and removing contexts

Pour créer un contexte, vous devez être connecté à Azure.To create a context, you must be signed in to Azure. La cmdlet Connect-AzAccount (ou son alias, Login-AzAccount) 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.The Connect-AzAccount cmdlet (or its alias, Login-AzAccount) sets the default context used by Azure PowerShell cmdlets, and allows you to access any tenants or subscriptions allowed by your credentials.

Pour ajouter un nouveau contexte après la connexion, utilisez Set-AzContext (ou son alias, Select-AzSubscription).To add a new context after sign-in, use Set-AzContext (or its alias, Select-AzSubscription).

PS C:\> Set-AzContext -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.The previous example adds a new context targeting 'Contoso Subscription 1' using your current credentials. Le nouveau contexte est nommé « Contoso1 ».The new context is named '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.If you don't provide a name for the context, a default name, using the account ID and subscription ID is used.

Pour renommer un contexte existant, utilisez la cmdlet Rename-AzContext.To rename an existing context, use the Rename-AzContext cmdlet. Par exemple :For example:

PS C:\> Rename-AzContext '[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 ».This example renames the context with automatic name [user1@contoso.org; 123456-7890-1234-564321] to the simple name '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.Cmdlets that manage contexts also use tab completion, allowing you to quickly select the context.

Enfin, pour supprimer un contexte, utilisez la cmdlet Remove-AzContext.Finally, to remove a context, use the Remove-AzContext cmdlet. Par exemple :For example:

PS C:\> Remove-AzContext Contoso2

Oublie le contexte nommé « Contoso2 ».Forgets the context that was named 'Contoso2'. Vous pouvez recréer ce contexte à l’aide de Set-AzContext.You can recreate this context using Set-AzContext

Suppression des informations d’identificationRemoving credentials

Vous pouvez supprimer toutes les informations d’identification et les contextes associés à un utilisateur ou un principal du service à l’aide de Disconnect-AzAccount (aussi appelé Logout-AzAccount).You can remove all credentials and associated contexts for a user or service principal using Disconnect-AzAccount (also known as Logout-AzAccount). Si vous l’exécutez sans paramètres, la cmdlet Disconnect-AzAccount supprime toutes les informations d’identification et les contextes associés à un utilisateur ou un principal du service dans le contexte actuel.When executed without parameters, the Disconnect-AzAccount cmdlet removes all credentials and contexts associated with the User or Service Principal in the current context. 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.You may pass in a Username, Service Principal Name, or context to target a particular principal.

Disconnect-AzAccount user1@contoso.org

Utilisation des étendues de contexteUsing context scopes

Vous pouvez de temps en temps sélectionner, modifier ou supprimer un contexte d’une session PowerShell sans impacter d’autres sessions.Occasionally, you may want to select, change, or remove a context in a PowerShell session without impacting other sessions. Pour modifier le comportement par défaut des cmdlets de contexte, utilisez le paramètre Scope.To change the default behavior of context cmdlets, use the Scope parameter. L’étendue Process remplace le comportement par défaut en l’appliquant uniquement à la session actuelle.The Process scope overrides the default behavior by making it apply only for the current session. À l’inverse, l’étendue CurrentUser modifie le contexte dans toutes les sessions, et non uniquement dans la session actuelle.Conversely CurrentUser scope changes the context in all sessions, instead of just the current session.

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 :As an example, to change the default context in the current PowerShell session without impacting other windows, or the context used the next time a session is opened, use:

PS C:\> Select-AzContext Contoso1 -Scope Process

Mémorisation du paramètre de sauvegarde automatique du contexteHow the context autosave setting is remembered

Le paramètre de sauvegarde automatique du contexte est enregistré dans le répertoire Azure PowerShell de l’utilisateur ($env:USERPROFILE\.Azure sous Windows et $HOME/.Azure sous les autres plateformes).The context AutoSave setting is saved to the user Azure PowerShell directory ($env:USERPROFILE\.Azure on Windows, and $HOME/.Azure on other platforms). Certains types de comptes d’ordinateur peuvent ne pas être capables d’accéder à ce répertoire.Some kinds of computer accounts may not have access to this directory. Dans ce cas, vous pouvez utiliser la variable d’environnementFor such scenarios, you can use the environment variable

$env:AzureRmContextAutoSave="true" | "false"

Si la valeur est définie sur « True », le contexte est automatiquement sauvegardé.When set to 'true', the context is automatically saved. Si la valeur est définie sur « False », le contexte n’est pas sauvegardé.If set to 'false', the context isn't saved.

Cmdlets de gestion de contexteContext management cmdlets

  • Enable-AzContextAutosave  : permet l’enregistrement du contexte entre les sessions PowerShell.Enable-AzContextAutosave - Allow saving the context between powershell sessions. Toutes modifications altèrent le contexte global.Any changes alter the global context.
  • Disable-AzContextAutosave : désactive l’enregistrement automatique du contexte.Disable-AzContextAutosave - Turn off autosaving the context. Vous devez vous connecter à chaque nouvelle session PowerShell.Each new PowerShell session is required to sign in again.
  • Select-AzContext : sélectionne un contexte par défaut.Select-AzContext - Select a context as the default. Toutes les cmdlets utilisent les informations d’identification de ce contexte pour l’authentification.All cmdlets use the credentials in this context for authentication.
  • Disconnect-AzAccount : supprime toutes les informations d’identification et les contextes associés à un compte.Disconnect-AzAccount - Remove all credentials and contexts associated with an account.
  • Remove-AzContext : supprime un contexte nommé.Remove-AzContext - Remove a named context.
  • Rename-AzContext : renomme un contexte existant.Rename-AzContext - Rename an existing context.
  • Add-AzAccount : permet d’étendre la portée de la connexion au processus ou à l’utilisateur actuel.Add-AzAccount - Allow scoping of the sign-in to the process or the current user. Permet de renommer le contexte par défaut après authentification.Allow naming the default context after authentication.
  • Import-AzContext : permet d’étendre la portée de la connexion au processus ou à l’utilisateur actuel.Import-AzContext - Allow scoping of the sign-in to the process or the current user.
  • Set-AzContext : permet de sélectionner des contextes nommés existants et d’étendre les modifications au processus ou à l’utilisateur actuel.Set-AzContext - Allow selection of existing named contexts, and scope changes to the process or current user.