Conservación de las credenciales de usuario entre las sesiones de PowerShell

Advertencia

El módulo AzureRM PowerShell ha quedado oficialmente en desuso a partir del 29 de febrero de 2024. Se recomienda a los usuarios migrar de AzureRM al módulo Az PowerShell para seguir recibiendo soporte técnico y actualizaciones.

Aunque el módulo AzureRM puede seguir funcionando, ya no recibirá mantenimiento ni soporte técnico, lo que significa que su uso continuado queda a discreción y riesgo del usuario. Consulte nuestros recursos de migración para ver una guía sobre la transición al módulo Az.

Azure PowerShell ofrece una característica llamada Azure Context Autosave, que proporciona las siguientes características:

  • Retención de la información de inicio de sesión para volverla a usar en nuevas sesiones de PowerShell.
  • Uso más fácil de tareas en segundo plano para ejecutar cmdlets de larga duración.
  • Cambio entre cuentas, suscripciones y entornos sin tener que volver a escribir una información de inicio de sesión aparte.
  • Ejecución simultánea de tareas mediante diferentes credenciales y suscripciones, desde la misma sesión de PowerShell.

Contextos de Azure definidos

Un contexto Azure es un conjunto de información que define el destino de los cmdlets de Azure PowerShell. El contexto se compone de cinco partes:

  • Una cuenta: los valores de UserName o ServicePrincipal usados para autenticar las comunicaciones con Azure
  • Una suscripción: la suscripción de Azure que contiene los recursos sobre los que se va a actuar.
  • Un inquilino: el inquilino de Microsoft Entra que contiene la suscripción. Los inquilinos son más importantes para la autenticación de ServicePrincipal.
  • Un entorno: la nube de Azure específica de destino, normalmente la nube global de Azure. No obstante, la configuración del entorno también le permite usar las nubes National, Government y locales (Azure Stack) como destino.
  • Credenciales: la información utilizada por Azure para verificar su identidad y confirmar la autorización para acceder a los recursos de Azure.

En versiones anteriores, se tenía que crear un contexto de Azure cada vez que se abría una nueva sesión de PowerShell. A partir de Azure PowerShell v4.4.0, los contextos de Azure se pueden guardar automáticamente cada vez que abra una nueva sesión de PowerShell.

Guardado automático del contexto para el siguiente inicio de sesión

A partir de la versión 6.3.0, Azure PowerShell conserva la información de contexto automáticamente entre las sesiones. Para configurar PowerShell para que olvide su contexto y las credenciales, utilice Disable-AzureRmContextAutoSave. Debe iniciar sesión en Azure cada vez que abre una sesión de PowerShell.

Para permitir que Azure PowerShell recuerde el contexto después de cerrar la sesión de PowerShell, use Enable-AzureRmContextAutosave. La información de contexto y de las credenciales se guarda automáticamente en una carpeta oculta especial del directorio del usuario (%AppData%\Roaming\Windows Azure PowerShell). Cada nueva sesión de PowerShell usa como destino el contexto utilizado en la última sesión.

Los cmdlets que le permiten administrar contextos de Azure también permiten un control minucioso. Si desea que los cambios se apliquen solo a la sesión actual de PowerShell (ámbito Process) o a todas las sesiones de PowerShell (ámbito CurrentUser). Estas opciones se describen con detalle en Uso de ámbitos de contexto.

Ejecución de cmdlets de Azure PowerShell como trabajos en segundo plano

La característica Azure Context Autosave también le permite compartir el contexto con trabajos en segundo plano de PowerShell. PowerShell le permite iniciar y supervisar tareas de larga duración como trabajos en segundo plano sin tener que esperar a que las tareas se completen. Puede compartir las credenciales con los trabajos en segundo plano de dos maneras diferentes:

  • Pasar el contexto como un argumento

    La mayoría de los cmdlets AzureRM le permiten pasar el contexto como un parámetro al cmdlet. Puede pasar un contexto a un trabajo en segundo plano como se muestra en el ejemplo siguiente:

$job = Start-Job { param ($ctx) New-AzureRmVm -AzureRmContext $ctx [... parámetros adicionales ...]} -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 ...]}

Si necesita saber el resultado de la tarea en segundo plano, utilice Get-Job para comprobar el estado del trabajo y Wait-Job para esperar a que el trabajo finalice. Use Receive-Job para capturar o mostrar la salida del trabajo en segundo plano. Para más información, consulte about_Jobs (Acerca de los trabajos).

Creación, selección, cambio de nombre y eliminación de contextos

Para crear un contexto debe haber iniciado sesión en Azure. El cmdlet Connect-AzureRmAccount (o su alias, Login-AzureRmAccount) permite establecer el contexto predeterminado utilizado por los cmdlets de Azure PowerShell y le permite acceder a todos los inquilinos o suscripciones permitidas por sus credenciales.

Para agregar un nuevo contexto después de iniciar sesión, use Set-AzureRmContext (o su alias, Select-AzureRmSubscription).

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

En el ejemplo anterior se agrega un nuevo contexto que tiene como destino "Contoso suscripción 1" que usa las credenciales actuales. El nuevo contexto se denomina "Contoso1". Si no proporciona un nombre para el contexto, se utilizará un nombre predeterminado creado mediante el identificador de la cuenta y el de la suscripción.

Para cambiar el nombre de un contexto existente, use el cmdlet Rename-AzureRmContext. Por ejemplo:

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

Este ejemplo cambia el nombre automático del contexto [user1@contoso.org; 123456-7890-1234-564321] al nombre simple "Contoso2". Los cmdlets que administran contextos también usan la finalización con tabulación, que le permite seleccionar rápidamente el contexto.

Por último, para quitar un contexto, use el cmdlet Remove-AzureRmContext. Por ejemplo:

Remove-AzureRmContext Contoso2

Olvida el contexto denominado "Contoso2". Puede volver a crear este contexto mediante Set-AzureRmContext.

Eliminación de credenciales

Puede quitar todas las credenciales y los contextos asociados de un usuario o una entidad de servicio mediante Disconnect-AzureRmAccount (también conocido como Logout-AzureRmAccount). Cuando se ejecuta sin parámetros, el cmdlet Disconnect-AzureRmAccount elimina todas las credenciales y contextos asociados al usuario o la entidad de servicio del contexto actual. Puede pasar un nombre de usuario, nombre de entidad de seguridad de servicio o contexto para que tenga como destino una determinada entidad de seguridad.

Disconnect-AzureRmAccount user1@contoso.org

Uso de ámbitos de contexto

En ocasiones, puede que desee seleccionar, cambiar o quitar un contexto de una sesión de PowerShell sin que afecte a otras sesiones. Para cambiar el comportamiento predeterminado de los cmdlets de contexto, use el parámetro Scope. El ámbito Process invalida el comportamiento predeterminado haciendo que se aplique solo a la sesión actual. Por el contrario, el ámbito CurrentUser cambia el contexto en todas las sesiones, en lugar de simplemente en la sesión actual.

Por ejemplo, para cambiar el contexto predeterminado en la sesión actual de PowerShell, sin que afecte a otras ventanas, o el contexto que se utilizará la siguiente vez que se abra una sesión, use:

Select-AzureRmContext Contoso1 -Scope Process

Conservación de la configuración de Context Autosave

La configuración de Context Autosave se guarda en el directorio del usuario de Azure PowerShell (%AppData%\Roaming\Windows Azure PowerShell). Algunos tipos de cuentas de equipo no pueden acceder a este directorio. Para estos escenarios, puede usar la variable de entorno

$env:AzureRmContextAutoSave=$true

Si se establece en $true, el contexto se guarda automáticamente. Si se establece en $false, el contexto no se guarda.

Cambios realizados en el módulo AzureRM.Profile

Nuevos cmdlets para la administración de contexto

Cambios en los cmdlets de perfil existentes

  • Add-AzureRmAccount: permite establecer el ámbito del inicio de sesión en el proceso o usuario actuales. Permite nombrar el contexto predeterminado después de la autenticación.
  • Import-AzureRmContext: permite establecer el ámbito del inicio de sesión en el proceso o usuario actuales.
  • Set-AzureRmContext: permite la selección de los contextos con nombre existentes y los cambios de ámbito para el proceso o usuario actuales.