Proteggere i segreti in Azure PowerShell

Quando si gestiscono Azure risorse con Azure PowerShell, l'output dei comandi potrebbe esporre informazioni riservate da proteggere. Ad esempio, Azure PowerShell potrebbe visualizzare password, token o chiavi nell'output durante la creazione. Alcuni comandi possono anche archiviare l'output nei file di log. Questo scenario è spesso il caso quando si lavora con GitHub Actions o Azure DevOps.

Comprendere il rischio

È fondamentale proteggere i segreti e le informazioni riservate. In caso di gestione errata, possono diventare accessibili a utenti non autorizzati. Gli errori utente, ad esempio script configurati in modo non corretto o l'immissione di segreti in testo normale come valori per i parametri, possono esporre dettagli sensibili nei log, nella cronologia dei comandi o nei sistemi di controllo della versione.

Messaggio di avviso

Azure PowerShell visualizza un messaggio di avviso per impostazione predefinita a partire dalla versione 12.0.0 per proteggere le informazioni riservate quando identifica un potenziale segreto nell'output di un comando.

Disabilitare il messaggio di avviso

Nell'esempio seguente viene usato il Update-AzConfig cmdlet per disabilitare il messaggio di avviso.

Update-AzConfig -DisplaySecretsWarning $false

È anche possibile usare la $Env:AZURE_CLIENTS_SHOW_SECRETS_WARNING variabile di ambiente per disabilitare il messaggio di avviso.

Set-Item -Path Env:\AZURE_CLIENTS_SHOW_SECRETS_WARNING -Value $false

Transizione da stringhe a SecureStrings

Per migliorare la sicurezza e ridurre il rischio di perdite di credenziali, il tipo di output predefinito del Get-AzAccessToken cmdlet è cambiato da un testo String normale a un SecureString, a partire da Az.Accounts versione 5.0.0 e Az versione 14.0.0.

I token di accesso sono credenziali sensibili che concedono l'accesso alle risorse Azure. La restituzione di tali dati come testo normale aumenta il rischio di esposizione accidentale nei log, nelle trascrizioni o nelle sessioni interattive. Passando a SecureString, il cmdlet impedisce la visualizzazione o l'archiviazione dei token in modo non sicuro.

Se lo scenario richiede il token in testo normale, che è fortemente sconsigliato, è possibile convertire manualmente il SecureString. Per indicazioni, vedere Come convertire secureString in testo normale in PowerShell?.