Compartir a través de


Inicio de sesión con Azure PowerShell

Azure PowerShell admite varios métodos de autenticación. La manera más fácil de empezar a trabajar es Azure Cloud Shell, que inicia sesión automáticamente. En una instalación local, puede iniciar sesión interactivamente en el explorador. Al escribir scripts de automatización, el enfoque recomendado es usar una entidad de servicio con los permisos necesarios. Al restringir los permisos de inicio de sesión tanto como sea posible en su caso, ayuda a proteger los recursos de Azure.

Después de iniciar sesión, los comandos se ejecutan en su suscripción predeterminada. Para cambiar la suscripción activa para una sesión, use el cmdlet Set-AzContext. Para cambiar la suscripción predeterminada que se utiliza al iniciar sesión con Azure PowerShell, use Set-AzDefault.

Importante

Sus credenciales se comparten entre varias sesiones de PowerShell, siempre que permanezca con la sesión iniciada. Para más información, consulte el artículo sobre credenciales persistentes.

Inicio sesión interactivo

Para iniciar sesión de forma interactiva, utilice el cmdlet Connect-AzAccount.

Connect-AzAccount

Cuando se ejecuta, este cmdlet presentará una cadena de token. Para iniciar sesión, copie esta cadena y péguela en https://microsoft.com/devicelogin en un explorador. La sesión de PowerShell se autenticará para conectarse a Azure.

Importante

La autorización con credenciales usuario/contraseña se ha quitado de Azure PowerShell debido a cambios en las implementaciones de autorización de Active Directory y a problemas de seguridad. Si usa autorización con credenciales con fines de automatización, en su lugar deberá crear una entidad de servicio.

Inicio de sesión con una entidad de servicio

Las entidades de servicio son cuentas de Azure no interactivas. Al igual que otras cuentas de usuario, sus permisos se administran con Microsoft Entra ID. Al conceder solo los permisos que una entidad de servicio necesita, los scripts de automatización están seguros.

Para ver cómo crear una entidad de servicio para usarla con Azure PowerShell, consulte Creación de una entidad de servicio de Azure con Azure PowerShell.

Para iniciar sesión con una entidad de servicio, utilice el argumento -ServicePrincipal con el cmdlet Connect-AzAccount. También necesitará el identificador de aplicación de la entidad de servicio, las credenciales de inicio de sesión y los identificadores de los inquilinos asociados con la entidad de servicio. La manera de iniciar sesión con una entidad de servicio dependerá de si la ha configurado para la autenticación basada en contraseña o en certificado.

Autenticación basada en contraseña

Para obtener las credenciales de la entidad de servicio en forma del objeto adecuado, utilice el cmdlet Get-Credential. Este cmdlet presentará un aviso para un nombre de usuario y una contraseña. Use el identificador de la entidad de servicio como nombre de usuario.

$pscredential = Get-Credential
Connect-AzAccount -ServicePrincipal -Credential $pscredential -Tenant $tenantId

En escenarios de automatización, deberá crear las credenciales a partir de un nombre de usuario y una cadena segura:

$passwd = ConvertTo-SecureString <use a secure password here> -AsPlainText -Force
$pscredential = New-Object System.Management.Automation.PSCredential('service principal name/id', $passwd)
Connect-AzAccount -ServicePrincipal -Credential $pscredential -Tenant $tenantId

Asegúrese de usar procedimientos recomendados de almacenamiento de contraseñas para automatizar las conexiones a la entidad de servicio.

Autenticación basada en certificados

La autenticación basada en certificados requiere que Azure PowerShell pueda recuperar información de un almacén de certificados local en función de una huella digital del certificado.

Connect-AzAccount -ApplicationId $appId -Tenant $tenantId -CertificateThumbprint <thumbprint>

Si usa una entidad de servicio en lugar de una aplicación registrada, agregue el argumento -ServicePrincipal y proporcione el identificador de aplicación de la entidad de servicio como el valor del parámetro -ApplicationId.

Connect-AzAccount -ServicePrincipal -ApplicationId $servicePrincipalId -Tenant $tenantId -CertificateThumbprint <thumbprint>

En PowerShell 5.1, el almacén de certificados puede administrarse e inspeccionarse con el módulo PKI. En PowerShell Core 6.x y versiones posteriores, el proceso es más complicado. Los siguientes scripts muestran cómo importar un certificado existente en el almacén de certificados al que PowerShell tiene acceso.

Importación de un certificado en PowerShell 5.1

# Import a PFX
$credentials = Get-Credential -Message "Provide PFX private key password"
Import-PfxCertificate -FilePath <path to certificate> -Password $credentials.Password -CertStoreLocation cert:\CurrentUser\My

Importación de un certificado en PowerShell Core 6.x y versiones posteriores

# Import a PFX
$storeName = [System.Security.Cryptography.X509Certificates.StoreName]::My
$storeLocation = [System.Security.Cryptography.X509Certificates.StoreLocation]::CurrentUser
$store = [System.Security.Cryptography.X509Certificates.X509Store]::new($storeName, $storeLocation)
$certPath = <path to certificate>
$credentials = Get-Credential -Message "Provide PFX private key password"
$flag = [System.Security.Cryptography.X509Certificates.X509KeyStorageFlags]::Exportable
$certificate = [System.Security.Cryptography.X509Certificates.X509Certificate2]::new($certPath, $credentials.Password, $flag)
$store.Open([System.Security.Cryptography.X509Certificates.OpenFlags]::ReadWrite)
$store.Add($Certificate)
$store.Close()

Inicio de sesión con una identidad administrada

Las identidades administradas son una característica de Microsoft Entra ID. Las identidades administradas son entidades de servicio asignadas a los recursos que se ejecutan en Azure. Puede usar una entidad de servicio de identidad administrada para iniciar sesión y adquirir un token de acceso solo para aplicaciones para tener acceso a otros recursos. Las identidades administradas solo están disponibles en recursos que se ejecutan en una nube de Azure.

Este comando se conecta mediante la identidad administrada del entorno de host. Por ejemplo, si se ejecuta en una máquina virtual que tiene asignada una identidad de Managed Service Identity, esto permite que el código inicie sesión con esa identidad asignada.

 Connect-AzAccount -Identity

Inicio de sesión con un inquilino no predeterminado o como un proveedor de soluciones en la nube (CSP)

Si su cuenta está asociada con más de un inquilino, para iniciar sesión es necesario usar el parámetro -Tenant al conectarse. Este parámetro funcionará con cualquier método de inicio de sesión. Al iniciar sesión, el valor de este parámetro puede ser el identificador de objeto del inquilino de Azure (Id. de inquilino) o el nombre de dominio completo del inquilino.

Si es un proveedor de soluciones en la nube (CSP), el valor de -Tenantdebe ser un identificador de inquilino.

Connect-AzAccount -Tenant 'xxxx-xxxx-xxxx-xxxx'

Inicio de sesión en otra nube

Los servicios en la nube de Azure ofrecen a los entornos compatibles normas regionales de control de datos. Para las cuentas en una nube regional, establezca el entorno al iniciar sesión con el argumento -Environment. Este parámetro funcionará con cualquier método de inicio de sesión. Por ejemplo, si su cuenta está en la nube de China:

Connect-AzAccount -Environment AzureChinaCloud

El comando siguiente obtiene una lista de los entornos disponibles:

Get-AzEnvironment | Select-Object Name