Share via


Conservare le credenziali utente tra le sessioni di PowerShell

Avviso

Il modulo AzureRM PowerShell è stato ufficialmente deprecato a partire dal 29 febbraio 2024. È consigliabile eseguire la migrazione da AzureRM al modulo Az PowerShell per garantire il supporto e gli aggiornamenti continui.

Anche se il modulo AzureRM può ancora funzionare, non è più gestito o supportato, posizionando qualsiasi uso continuo a discrezione e rischio dell'utente. Per indicazioni sulla transizione al modulo Az, vedere le risorse di migrazione.

Azure PowerShell offre una funzionalità denominata salvataggio automatico del contesto Azure, che fornisce le funzionalità seguenti:

  • Conservazione delle informazioni di accesso per il riutilizzo in nuove sessioni di PowerShell.
  • Uso semplificato di attività in background per eseguire cmdlet con esecuzione prolungata.
  • Passaggio da un account, una sottoscrizione o un ambiente all'altro senza un accesso separato.
  • Esecuzione simultanea di attività con credenziali e sottoscrizioni diverse dalla stessa sessione di PowerShell.

Definizione dei contesti Azure

Un contesto Azure è un set di informazioni che definisce la destinazione dei cmdlet di Azure PowerShell. Il contesto è costituito da cinque parti.

  • Account: entità servizio o nome utente usato per l'autenticazione delle comunicazioni con Azure.
  • Sottoscrizione: sottoscrizione di Azure con le risorse su cui vengono eseguite le operazioni.
  • Tenant : tenant di Microsoft Entra che contiene la sottoscrizione. I tenant sono particolarmente importanti per l'autenticazione di entità servizio.
  • Ambiente: specifico cloud di Azure di destinazione, in genere il cloud globale di Azure. L'impostazione dell'ambiente consente tuttavia di specificare come destinazione anche cloud nazionali, per enti pubblici e locali (Azure Stack).
  • Credenziali: informazioni usate da Azure per verificare l'identità dell'utente e la relativa autorizzazione ad accedere alle risorse in Azure.

Nelle versioni precedenti deve essere creato un contesto Azure ogni volta che viene aperta una nuova sessione di PowerShell. A partire da Azure PowerShell v4.4.0, i contesti Azure possono essere salvati automaticamente all'apertura di una nuova sessione di PowerShell.

Salvare automaticamente il contesto per l'accesso successivo

Nella versione 6.3.0 e nelle successive, Azure PowerShell conserva automaticamente le informazioni del contesto tra le sessioni. Per annullare la memorizzazione del contesto e delle credenziali in PowerShell, usare Disable-AzureRmContextAutoSave. Sarà necessario eseguire l'accesso ad Azure ogni volta che si apre una sessione di PowerShell.

Per consentire ad Azure PowerShell di mantenere il contesto memorizzato dopo la chiusura della sessione di PowerShell, usare Enable-AzureRmContextAutosave. Le informazioni relative al contesto e alle credenziali vengono salvate automaticamente in una speciale cartella nascosta nella directory dell'utente (%AppData%\Roaming\Windows Azure PowerShell). Ogni nuova sessione di PowerShell avrà come destinazione il contesto usato nell'ultima sessione.

I cmdlet che consentono di gestire i contesti Azure permettono anche un controllo con granularità fine. Se si vuole, è possibile applicare le modifiche solo alla sessione di PowerShell corrente (ambito Process) o a ogni sessione di PowerShell (ambito CurrentUser). Questo opzioni sono descritte più dettagliatamente in Uso degli ambiti dei contesti.

Esecuzione dei cmdlet di Azure PowerShell come processi in background

La funzionalità di salvataggio automatico del contesto Azure consente anche di condividere il contesto con processi in background di PowerShell. In PowerShell è possibile avviare e monitorare attività con esecuzione prolungata come processi in background senza dover attendere il completamento delle attività. Per condividere le credenziali con i processi in background sono disponibili due diversi modi:

  • Passaggio del contesto come argomento

    La maggior parte dei cmdlet di AzureRM consente di passare il contesto come parametro al cmdlet. È possibile passare un contesto a un processo in background come illustrato nell'esempio seguente:

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

Quando è necessario conoscere il risultato dell'attività in background, usare Get-Job per controllare lo stato del processo e Wait-Job per attenderne il completamento. Usare Receive-Job per acquisire o visualizzare l'output del processo in background. Per altre informazioni, vedere About Jobs (Informazioni sui processi).

Creazione, selezione, ridenominazione e rimozione di contesti

Per creare un contesto, è necessario eseguire l'accesso ad Azure. Il cmdlet Connect-AzureRmAccount (o il relativo alias Login-AzureRmAccount) imposta il contesto predefinito usato dai cmdlet di Azure PowerShell e consente di accedere a qualsiasi sottoscrizione o tenant consentito dalle credenziali.

Per aggiungere un nuovo contesto dopo l'accesso, usare Set-AzureRmContext o il relativo alias Select-AzureRmSubscription.

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

L'esempio precedente aggiunge un nuovo contesto specificando come destinazione "Contoso Subscription 1" con le credenziali correnti. Il nuovo contesto è denominato "Contoso1". Se non si specifica un nome per il contesto, verrà usato un nome predefinito basato su l'ID account e l'ID sottoscrizione.

Per rinominare un contesto esistente, usare il cmdlet Rename-AzureRmContext, Ad esempio:

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

Questo esempio rinomina il contesto denominato automaticamente [user1@contoso.org; 123456-7890-1234-564321] con il semplice nome "Contoso2". I cmdlet che gestiscono i contesti usano anche il completamento tramite tasto TAB, consentendo così di selezionare rapidamente il contesto.

Infine, per rimuovere un contesto usare il cmdlet Remove-AzureRmContext, Ad esempio:

Remove-AzureRmContext Contoso2

Questo esempio annulla la memorizzazione del contesto denominato "Contoso2". È possibile ricreare questo contesto usando Set-AzureRmContext

Rimozione delle credenziali

È possibile rimuovere tutte le credenziali e i contesti associati per un utente o un'entità servizio usando Disconnect-AzureRmAccount (denominato anche Logout-AzureRmAccount). Se eseguito senza parametri, il cmdlet Disconnect-AzureRmAccount rimuove tutte le credenziali e i contesti associati all'utente o all'entità servizio nel contesto corrente. È possibile passare un nome utente, un nome di entità servizio o un contesto per specificare come destinazione una determinata entità di sicurezza.

Disconnect-AzureRmAccount user1@contoso.org

Uso degli ambiti dei contesti

In alcuni casi può essere opportuno selezionare, modificare o rimuovere un contesto in una sessione di PowerShell senza influire su altre sessioni. Per modificare il comportamento predefinito dei cmdlet per il contesto, usare il parametro Scope. L'ambito Process esegue l'override del comportamento predefinito determinando l'applicazione solo per la sessione corrente. Al contrario, l'ambito CurrentUser modifica il contesto in tutte le sessioni, anziché solo nella sessione corrente.

Ad esempio, per modificare il contesto predefinito nella sessione di PowerShell corrente senza influire sulle altre finestre o sul contesto usato alla successiva apertura di una sessione, usare:

Select-AzureRmContext Contoso1 -Scope Process

Memorizzazione dell'impostazione di salvataggio automatico del contesto

L'impostazione di salvataggio automatico del contesto viene salvata nella directory di Azure PowerShell dell'utente (%AppData%\Roaming\Windows Azure PowerShell). Alcune tipologie di account computer potrebbero non avere accesso a tale directory. In tali scenari, è possibile usare la variabile di ambiente seguente:

$env:AzureRmContextAutoSave=$true

Se impostato su $true, il contesto viene salvato automaticamente. Se impostato su $false, il contesto non viene salvato.

Modifiche apportate al modulo AzureRM.Profile

Nuovi cmdlet per la gestione del contesto

Modifiche apportate ai cmdlet per i profili esistenti

  • Add-AzureRmAccount: consente di limitare l'ambito dell'accesso al processo o all'utente corrente, nonché di denominare il contesto predefinito dopo l'autenticazione.
  • Import-AzureRmContext: consente di limitare l'ambito dell'accesso al processo o all'utente corrente.
  • Set-AzureRmContext: consente di selezionare contesti denominati esistenti e limitare l'ambito delle modifiche al processo o all'utente corrente.