Accedere con Azure PowerShellSign in with Azure PowerShell

Azure PowerShell supporta diversi metodi di autenticazione.Azure PowerShell supports several authentication methods. Il modo più semplice per iniziare è con Azure Cloud Shell, che esegue automaticamente l'accesso.The easiest way to get started is with Azure Cloud Shell, which automatically logs you in. Con un'installazione locale è possibile accedere in modo interattivo tramite il browser.With a local install, you can sign in interactively through your browser. Quando si scrivono script per l'automazione, l'approccio consigliato è quello di usare un'entità servizio con le autorizzazioni necessarie.When writing scripts for automation, the recommended approach is to use a service principal with the necessary permissions. Quando si limitano il più possibile le autorizzazioni di accesso per il proprio caso d'uso, si contribuisce a proteggere le risorse di Azure.When you restrict sign-in permissions as much as possible for your use case, you help keep your Azure resources secure.

Dopo l'accesso, i comandi vengono eseguiti sulla sottoscrizione predefinita.After signing in, commands are run against your default subscription. Per modificare la sottoscrizione attiva per una sessione, usare il cmdlet Set-AzContext.To change your active subscription for a session, use the Set-AzContext cmdlet. Per modificare la sottoscrizione predefinita usata per l'accesso con Azure PowerShell, usare Set-AzDefault.To change the default subscription used when logging in with Azure PowerShell, use Set-AzDefault.

Importante

Le credenziali vengono condivise tra più sessioni di PowerShell, purché si rimanga connessi.Your credentials are shared among multiple PowerShell sessions as long as you remain signed in. Per altre informazioni, vedere l'articolo relativo alle Credenziali persistenti.For more information, see the article on Persistent Credentials.

Accedere in modo interattivoSign in interactively

Per accedere in modo interattivo, usare il cmdlet Connect-AzAccount.To sign in interactively, use the Connect-AzAccount cmdlet.

Connect-AzAccount

Quando viene eseguito, questo cmdlet visualizzerà una stringa del token.When run, this cmdlet will present a token string. Per accedere, copiare questa stringa e incollarla in https://microsoft.com/devicelogin in un browser.To sign in, copy this string and paste it into https://microsoft.com/devicelogin in a browser. La sessione di PowerShell verrà autenticata per connettersi ad Azure.Your PowerShell session will be authenticated to connect to Azure.

Importante

L'autorizzazione tramite le credenziali nome utente/password è stata rimossa in Azure PowerShell a causa delle modifiche apportate nelle implementazioni delle autorizzazioni di Active Directory e per motivi di sicurezza.Username/password credential authorization has been removed in Azure PowerShell due to changes in Active Directory authorization implementations and security concerns. Se si usa l'autorizzazione tramite credenziali per motivi di automazione, creare invece un'entità servizio.If you use credential authorization for automation purposes, instead create a service principal.

Accedere con un'entità servizio Sign in with a service principal

Le entità servizio sono account Azure non interattivi.Service principals are non-interactive Azure accounts. Come per gli altri account utente, le relative autorizzazioni vengono gestite con Azure Active Directory.Like other user accounts, their permissions are managed with Azure Active Directory. Concedendo a un'entità servizio solo le autorizzazioni necessarie, viene garantita la sicurezza degli script di automazione.By granting a service principal only the permissions it needs, your automation scripts stay secure.

Per informazioni su come creare un'entità servizio da usare con Azure PowerShell, vedere Creare un'entità servizio di Azure con Azure PowerShell.To learn how to create a service principal for use with Azure PowerShell, see Create an Azure service principal with Azure PowerShell.

Per accedere con un'entità servizio, usare l'argomento -ServicePrincipal con il cmdlet Connect-AzAccount.To sign in with a service principal, use the -ServicePrincipal argument with the Connect-AzAccount cmdlet. Saranno necessari anche l'ID applicazione dell'entità servizio, le credenziali di accesso e l'ID tenant associato all'entità servizio.You'll also need the service principal's application ID, sign-in credentials, and the tenant ID associate with the service principal. La modalità di accesso con un'entità servizio varia a seconda che sia stata configurata per l'autenticazione basata su password o basata su certificato.How you sign in with a service principal will depend on whether it's configured for password-based or certificate-based authentication.

Autenticazione basata su passwordPassword-based authentication

Per ottenere le credenziali dell'entità servizio come oggetto appropriato, usare il cmdlet Get-Credential.To get the service principal's credentials as the appropriate object, use the Get-Credential cmdlet. Questo cmdlet presenterà una richiesta di nome utente e password.This cmdlet will present a prompt for a username and password. Usare l'ID entità servizio per il nome utente.Use the service principal ID for the username.

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

Per gli scenari di automazione, è necessario creare le credenziali da un nome utente e una stringa sicura:For automation scenarios, you need to create credentials from a user name and secure string:

$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 -TenantId $tenantId

Assicurarsi di adottare procedure valide per l'archiviazione delle password quando si automatizzano le connessioni dell'entità servizio.Make sure that you use good password storage practices when automating service principal connections.

Autenticazione basata su certificatiCertificate-based authentication

Per l'autenticazione basata su certificato, è necessario che Azure PowerShell sia in grado di recuperare informazioni da un archivio certificati locale in base a un'identificazione personale del certificato.Certificate-based authentication requires that Azure PowerShell can retrieve information from a local certificate store based on a certificate thumbprint.

Connect-AzAccount -ServicePrincipal -TenantId $tenantId -CertificateThumbprint <thumbprint>

In PowerShell 5.1 è possibile gestire e controllare l'archivio certificati con il modulo PKI.In PowerShell 5.1, the certificate store can be managed and inspected with the PKI module. Per PowerShell Core 6.x e versioni successive la procedura è più complicata.For PowerShell Core 6.x and later, the process is more complicated. Gli script seguenti mostrano come importare un certificato esistente nell'archivio certificati accessibile a PowerShell.The following scripts show you how to import an existing certificate into the certificate store accessible by PowerShell.

Importare un certificato in PowerShell 5.1Import a certificate in 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

Importare un certificato in PowerShell Core 6.x e versioni successiveImport a certificate in PowerShell Core 6.x and later

# 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()

Accedere con un'identità gestitaSign in using a managed identity

Le identità gestite sono una funzionalità di Azure Active Directory.Managed identities are a feature of Azure Active Directory. Le identità gestite sono entità servizio assegnate alle risorse che vengono eseguite in Azure.Managed identities are service principals assigned to resources that run in Azure. È possibile usare l'entità servizio di un'identità gestita per eseguire l'accesso e acquisire un token di accesso solo app per accedere ad altre risorse.You can use a managed identity service principal for sign-in, and acquire an app-only access token to access other resources. Le identità gestite sono disponibili solo nelle risorse in esecuzione in un cloud di Azure.Managed identities are only available on resources running in an Azure cloud.

Per altre informazioni sulle identità gestite per le risorse di Azure, vedere Come usare le identità gestite per le risorse di Azure in una macchina virtuale di Azure per acquisire un token di accesso.To learn more about managed identities for Azure resources, see How to use managed identities for Azure resources on an Azure VM to acquire an access token.

Accedere con un tenant non predefinito o come Cloud Solution Provider (CSP)Sign in with a non-default tenant or as a Cloud Solution Provider (CSP)

Se l'account è associato a più di un tenant, l'accesso richiede l'uso del parametro -TenantId per la connessione.If your account is associated with more than one tenant, sign-in requires the use of the -TenantId parameter when connecting. Questo parametro funziona con qualsiasi altro metodo di accesso.This parameter will work with any other sign-in method. Quando si accede, il valore del parametro può essere l'ID oggetto di Azure del tenant (ID Tenant) o il nome di dominio completo del tenant.When logging in, this parameter value can either be the Azure object ID of the tenant (Tenant ID) or the fully qualified domain name of the tenant.

Per gli utenti Cloud Solution Provider (CSP), il valore -TenantId deve essere un ID tenant.If you're a Cloud Solution Provider (CSP), the -TenantId value must be a tenant ID.

Connect-AzAccount -TenantId 'xxxx-xxxx-xxxx-xxxx'

Accedere a un altro cloudSign in to another Cloud

I servizi cloud di Azure offrono ambienti conformi alle normative di gestione dei dati a livello di area.Azure cloud services offer environments compliant with regional data-handling laws. Per gli account nel cloud di un'area, impostare l'ambiente al momento dell'accesso con l'argomento -Environment.For accounts in a regional cloud, set the environment when you sign in with the -Environment argument. Ad esempio, se l'account si trova nel cloud della Cina:For example, if your account is in the China cloud:

Connect-AzAccount -Environment AzureChinaCloud

Il comando seguente recupera un elenco degli ambienti disponibili:The following command gets a list of available environments:

Get-AzEnvironment | Select-Object Name