Accedere con Azure PowerShell

Azure PowerShell supporta diversi metodi di autenticazione. Il modo più semplice per iniziare è con Azure Cloud Shell, che esegue automaticamente l'accesso. Con un'installazione locale è possibile accedere in modo interattivo tramite il browser. Quando si scrivono script per l'automazione, l'approccio consigliato è quello di usare un'entità servizio con le autorizzazioni necessarie. Quando si limitano il più possibile le autorizzazioni di accesso per il proprio caso d'uso, si contribuisce a proteggere le risorse di Azure.

Dopo l'accesso, i comandi vengono eseguiti sulla sottoscrizione predefinita. Per modificare la sottoscrizione attiva per una sessione, usare il cmdlet Set-AzContext. Per modificare la sottoscrizione predefinita usata per l'accesso con Azure PowerShell, usare Set-AzDefault.

Importante

Le credenziali vengono condivise tra più sessioni di PowerShell, purché si rimanga connessi. Per altre informazioni, vedere l'articolo relativo alle Credenziali persistenti.

Accedere in modo interattivo

Per accedere in modo interattivo, usare il cmdlet Connect-AzAccount.

Connect-AzAccount

Quando viene eseguito, questo cmdlet visualizzerà una stringa del token. Per accedere, copiare questa stringa e incollarla in https://microsoft.com/devicelogin in un browser. La sessione di PowerShell verrà autenticata per connettersi ad 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. Se si usa l'autorizzazione tramite credenziali per motivi di automazione, creare invece un'entità servizio.

Accedere con un'entità servizio

Le entità servizio sono account Azure non interattivi. Come per gli altri account utente, le relative autorizzazioni vengono gestite con Azure Active Directory. Concedendo a un'entità servizio solo le autorizzazioni necessarie, viene garantita la sicurezza degli script di automazione.

Per informazioni su come creare un'entità servizio da usare con Azure PowerShell, vedere Creare un'entità servizio di Azure con Azure PowerShell.

Per accedere con un'entità servizio, usare l'argomento -ServicePrincipal con il cmdlet Connect-AzAccount. Saranno necessari anche l'ID applicazione dell'entità servizio, le credenziali di accesso e l'ID tenant associato all'entità servizio. 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.

Autenticazione basata su password

Per ottenere le credenziali dell'entità servizio come oggetto appropriato, usare il cmdlet Get-Credential. Questo cmdlet presenterà una richiesta di nome utente e password. Usare l'ID entità servizio per il nome utente.

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

Per gli scenari di automazione, è necessario creare le credenziali da un nome utente e una stringa sicura:

$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

Assicurarsi di adottare procedure valide per l'archiviazione delle password quando si automatizzano le connessioni dell'entità servizio.

Autenticazione basata su certificati

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.

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

Quando si usa un'entità servizio invece di un'applicazione registrata, aggiungere l'argomento -ServicePrincipal e specificare l'ID applicazione dell'entità servizio come valore del parametro -ApplicationId.

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

In PowerShell 5.1 è possibile gestire e controllare l'archivio certificati con il modulo PKI. Per PowerShell Core 6.x e versioni successive la procedura è più complicata. Gli script seguenti mostrano come importare un certificato esistente nell'archivio certificati accessibile a PowerShell.

Importare un certificato 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 successive

# 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à gestita

Le identità gestite sono una funzionalità di Azure Active Directory. Le identità gestite sono entità servizio assegnate alle risorse che vengono eseguite 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. Le identità gestite sono disponibili solo nelle risorse in esecuzione in un cloud di Azure.

Questo comando si connette usando l'identità gestita dell'ambiente host. Se, ad esempio, viene eseguito in una macchina virtuale con un'identità del servizio gestita assegnata, il codice può accedere usando tale identità assegnata.

 Connect-AzAccount -Identity

Accedere con un tenant non predefinito o come Cloud Solution Provider (CSP)

Se l'account è associato a più di un tenant, l'accesso richiede l'uso del parametro -Tenant per la connessione. Questo parametro funziona con qualsiasi metodo di accesso. 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.

Per gli utenti Cloud Solution Provider (CSP), il valore -Tenantdeve essere un ID tenant.

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

Accedere a un altro cloud

I servizi cloud di Azure offrono ambienti conformi alle normative di gestione dei dati a livello di area. Per gli account nel cloud di un'area, impostare l'ambiente al momento dell'accesso con l'argomento -Environment. Questo parametro funziona con qualsiasi metodo di accesso. Ad esempio, se l'account si trova nel cloud della Cina:

Connect-AzAccount -Environment AzureChinaCloud

Il comando seguente recupera un elenco degli ambienti disponibili:

Get-AzEnvironment | Select-Object Name