Objetos de contexto de Azure PowerShell

Azure PowerShell usa objetos de contexto (contextos de Azure) para mantener la información de suscripción y autenticación. Si tiene más de una suscripción, los contextos de Azure le permiten seleccionar la suscripción en la que se ejecutarán los cmdlets de Azure PowerShell. Los contextos de Azure también se usan para almacenar la información de inicio de sesión en varias sesiones de PowerShell y ejecutar tareas en segundo plano.

En este artículo se trata sobre la administración de contextos de Azure, no sobre la administración de suscripciones o cuentas. Si desea administrar usuarios, suscripciones, inquilinos o cualquier otra información de la cuenta, consulte la documentación de Microsoft Entra ID. Para más información sobre el uso de contextos para ejecutar tareas en segundo plano o paralelas, consulte Ejecución de cmdlets de Azure PowerShell en trabajos de PowerShell después de familiarizarse con los contextos de Azure.

Introducción a los objetos de contexto de Azure

Los contextos de Azure son objetos de PowerShell que representan la suscripción activa en la que ejecutar comandos y la información de autenticación necesaria para conectarse a una nube de Azure. Con los contextos de Azure, Azure PowerShell no tiene que volver a autenticar la cuenta cada vez que cambie de una suscripción a otra. Un contexto de Azure consta de:

  • La cuenta que se usó para iniciar sesión en Azure con Connect-AzAccount. Los contextos de Azure tratan a los usuarios, los identificadores de aplicaciones y las entidades de servicio de la misma forma desde una perspectiva de cuenta.
  • La suscripción activa es un acuerdo de servicio con Microsoft para crear y ejecutar recursos de Azure que están asociados con un inquilino. A menudo se hace referencia a los inquilinos como organizaciones en la documentación o al trabajar con Active Directory.
  • Una referencia a una caché de tokens, un token de autenticación almacenado para acceder a una nube de Azure. La configuración de autoguardado del contexto determina dónde se almacena este token y durante cuánto tiempo.

Para más información sobre estos términos, consulte la terminología de Microsoft Entra. Los tokens de autenticación que usan los contextos de Azure son los mismos que otros tokens almacenados que forman parte de una sesión persistente.

Cuando inicia sesión con Connect-AzAccount, se crea al menos un contexto de Azure para la suscripción predeterminada. El objeto que Connect-AzAccount devuelve es el contexto predeterminado de Azure que se usa durante el resto de la sesión de PowerShell.

Obtención de contextos de Azure

Los contextos de Azure disponibles se recuperan con el cmdlet Get-AzContext. Enumere todos los contextos disponibles con el parámetro ListAvailable:

Get-AzContext -ListAvailable

O busque un contexto por el nombre:

Get-AzContext -Name 'mycontext'

Los nombres de contexto pueden ser diferentes del nombre de la suscripción asociada.

Importante

Los contextos de Azure disponibles no siempre son las suscripciones disponibles. Los contextos de Azure solo representan información almacenada de forma local. Puede obtener las suscripciones con el cmdlet Get-AzSubscription.

Creación de un nuevo contexto de Azure a partir de la información de la suscripción

El cmdlet Set-AzContext se usa para crear nuevos contextos de Azure y para establecerlos como el contexto activo. La forma más fácil de crear un nuevo contexto de Azure es usar la información de la suscripción existente. El cmdlet está diseñado para tomar el objeto de salida de Get-AzSubscription como un valor canalizado y configurar un nuevo contexto de Azure:

Get-AzSubscription -SubscriptionName 'MySubscriptionName' |
  Set-AzContext -Name 'MyContextName'

O bien, proporcione el nombre o el identificador de la suscripción y el identificador del inquilino si es necesario:

Set-AzContext -Name 'MyContextName' -Subscription 'MySubscriptionName' -Tenant '00000000-0000-0000-0000-000000000000'

Si se omite el parámetro Name, el nombre y el identificador de la suscripción se usan como nombre de contexto en el formato nombre de la suscripción (subscription-id).

Cambio del contexto activo de Azure

Tanto Set-AzContext como Select-AzContext se pueden usar para cambiar el contexto activo de Azure. Como se describe en Creación de un nuevo contexto de Azure, Set-AzContext crea un nuevo contexto de Azure para una suscripción si no existe ya uno y, a continuación, pasa el contexto activo al nuevo contexto.

Select-AzContext está pensado para usarse solo con contextos de Azure ya existentes y funciona de forma parecida al uso de Set-AzContext -Context, pero está diseñado para su uso con canalizaciones:

Set-AzContext -Context $(Get-AzContext -Name 'mycontext') # Set a context with an inline Azure context object
Get-AzContext -Name 'mycontext' | Select-AzContext # Set a context with a piped Azure context object

Al igual que muchos otros comandos de administración de cuentas y contextos de Azure PowerShell, Set-AzContext y Select-AzContext admiten el parámetro Scope para poder controlar cuánto tiempo está activo el contexto. Scope le permite cambiar el contexto activo de una única sesión sin cambiar el valor predeterminado:

Get-AzContext -Name 'mycontext' | Select-AzContext -Scope Process

Para evitar el cambio de contextos en una sesión completa de PowerShell, los comandos de Azure PowerShell con un parámetro AzContext se pueden ejecutar en un contexto determinado:

$context = Get-AzContext -Name "mycontext"
New-AzVM -Name ExampleVM -AzContext $context

El otro uso principal de los contextos con cmdlets de Azure PowerShell consiste en ejecutar comandos en segundo plano. Para más información sobre la ejecución de trabajos con Azure PowerShell, consulte Ejecutar cmdlets de Azure PowerShell en trabajos de PowerShell.

Guardar contextos de Azure entre sesiones de PowerShell

De forma predeterminada, los contextos de Azure se guardan para su uso entre sesiones de PowerShell. Puede cambiar este comportamiento de las siguientes maneras:

  • Inicie sesión mediante -Scope Process con Connect-AzAccount.

    Connect-AzAccount -Scope Process
    

    El contexto de Azure que se devuelve como parte de este inicio de sesión es válido solo para la sesión actual y no se guardará automáticamente, independientemente de la configuración de autoguardado del contexto de Azure PowerShell.

  • Deshabilite el autoguardado del contexto de AzurePowershell con el cmdlet Disable-AzContextAutosave. El hecho de deshabilitar el autoguardado del contexto no borra los tokens almacenados. Para aprender a borrar la información de contexto de Azure almacenada, consulte Eliminación de contextos y credenciales de Azure.

  • Puede habilitar explícitamente el autoguardado de contexto de Azure con el cmdlet Enable-AzContextAutosave. Con el autoguardado habilitado, los contextos de un usuario se almacenan localmente para las sesiones posteriores de PowerShell.

  • Guarde los contextos manualmente con Save-AzContext para usarlos en futuras sesiones de PowerShell, donde se pueden cargar con Import-AzContext:

    Save-AzContext -Path current-context.json # Save the current context
    Save-AzContext -Profile $profileObject -Path other-context.json # Save a context object
    Import-AzContext -Path other-context.json # Load the context from a file and set it to the current context
    

Advertencia

Deshabilitar el autoguardado del contexto no borra toda la información de contexto almacenada que se haya guardado. Para eliminar la información almacenada, use el cmdlet Clear-AzContext. Para más información sobre cómo quitar contextos guardados, consulte Eliminación de contextos y credenciales.

Cada uno de estos comandos admite el parámetro Scope, que puede tomar un valor de Process para aplicarse únicamente al proceso en ejecución actual. Por ejemplo, para asegurarse de que los contextos recién creados no se guardan después de salir de una sesión de PowerShell:

Disable-AzContextAutosave -Scope Process
$context2 = Set-AzContext -Subscription 'sub-id' -Tenant 'other-tenant'

La información y los tokens de contexto se almacenan en el directorio $env:USERPROFILE\.Azure de Windows y en $HOME/.Azure en otras plataformas. La información confidencial, como los identificadores de suscripción y los de inquilino, pueden estar expuestos todavía en la información almacenada, en los registros o contextos guardados. Para aprender a borrar la información almacenada, consulte Eliminación de contextos y credenciales de Azure.

Eliminación de contextos y credenciales almacenadas de Azure

Para eliminar los contextos y credenciales de Azure:

  • Cierre la sesión de una cuenta con Disconnect-AzAccount. Puede cerrar la sesión de cualquier cuenta mediante una cuenta o un contexto:

    Disconnect-AzAccount # Disconnect active account
    Disconnect-AzAccount -Username 'user@contoso.com' # Disconnect by account name
    
    Disconnect-AzAccount -ContextName 'subscription2' # Disconnect by context name
    Disconnect-AzAccount -AzureContext $contextObject # Disconnect using context object information
    

    La desconexión elimina siempre los tokens de autenticación almacenados y se borran los contextos guardados asociados al usuario o contexto desconectado.

  • Utilice Clear-AzContext. Este cmdlet siempre elimina los contextos almacenados, los tokens de autenticación y cierra la sesión.

  • Elimine un contexto con Remove-AzContext:

    Remove-AzContext -Name 'mycontext' # Remove by name
    Get-AzContext -Name 'mycontext' | Remove-AzContext # Remove by piping Azure context object
    

    Si elimina el contexto activo, se le desconectará de Azure y tendrá que volver a autenticarse con Connect-AzAccount.

Consulte también