Il concetto alla base delle password di protezione è che negli script di produzione non dobbiamo passare password importanti in bella vista. Questa è un problema di sicurezza grave. Quindi, utilizzando PowerShell possiamo proteggere una password o almeno ridurre la visibilità della password. Vengono prima discussi gli aspetti generali delle stringhe di protezione e quindi come Dell Command PowerShell Provider (DCPP) sfrutta le funzionalità intrinseche di PowerShell per proteggere le password.
Si supponga di voler leggere il nome utente e la password dell'utente sulla console. Sappiamo che il nome utente generalmente non richiede alcuna sicurezza e può essere visibile a tutti. Ma per la password non dovremmo far conoscere a estranei la password dell'utente. È possibile facilitare questo requisito con i comandi riportati di seguito:
$user = Read-Host "Enter Username" $pass = Read-Host "Enter Password" -AsSecureString
Quanto sopra è una panoramica di come possiamo aggiungere più sicurezza quando dobbiamo proteggere informazioni critiche come una password. Nell'esempio precedente, la variabile $pass è di tipo System.Security.SecureString
. Prima di parlare di alcuni aspetti di DCPP, vengono introdotti altri due cmdlet ampiamente utilizzati forniti da PowerShell per facilitare i campi di protezione.
I due comandi sono ConvertTo-SecureString
e ConvertFrom-SecureString
. ConvertTo-SecureString
converte un testo normale in tipo System.Security.SecureString
. Di seguito viene mostrato un esempio:
"P@ssword1" | ConvertTo-SecureString -AsPlainText -Force
Nell'esempio precedente, il testo normale P@assword1
viene convertito in tipo System.Security.SecureString
. Questa è più di un'informazione e potrebbe o meno essere ampiamente utilizzata.
Il cmdlet successivo ConvertFrom-SecureString
è un cmdlet utilizzato più ampiamente, che consente di convertire stringhe di protezione in stringhe standard crittografate. La limitazione principale di ConvertTo-SecureString
è che il relativo output non può essere scritto direttamente in un file per un uso futuro. Occorre utilizzare ConvertFrom-SecureString
che converte System.Security.SecureString
in una stringa standard crittografata che può essere comodamente salvata in un file, per superare questa limitazione.
Stiamo convertendo il testo normale P@ssword1
in stringa di protezione e indirizzando il relativo output a ConvertFrom-SecureString
per ottenere una stringa crittografata che può essere salvata in modo sicuro e comodo in un file.
Ad esempio, supponiamo che la password amministratore sia stata impostata su un computer e che dobbiamo salvarla in un file. A tale scopo, possiamo utilizzare:
Read-Host "Enter Admin Password" -AsSecureString | ConvertFrom-SecureString | Out-File "C:\Scripts\AdminPassword.txt"
Possiamo recuperare questa password amministratore in una variabile come oggetto protetto come:
$pass = Get-Content "C:\Scripts\AdminPassword.txt" | ConvertTo-SecureString
Ora, consideriamo come utilizzare una password di protezione per DCPP. In DCPP, se sul computer dell'utente è impostata una password di sistema o di amministratore, per tutti i comandi set
dobbiamo passare la rispettiva password. Pertanto, se forniamo questa password come testo normale violiamo la sicurezza. Dobbiamo passare la password come System.Security.SecureString
. Inoltre, quando passiamo una password SecureString
dobbiamo passarla con uno switch -PasswordSecure
e non il normale switch –Password
. Di seguito è riportato un esempio in cui l'utente sta tentando di impostare AdvancedBatteryChargeCfg
su Disabled
e passando la password SecureString
:
Set-item AdvancedBatteryChargeCfg disabled –PasswordSecure $pass
Qui $pass contiene la password di sistema e amministratore ed è di tipo System.Security.SecureString
. Analogamente a quanto detto sopra, possiamo leggere $pass
come:
$pass = Read-Host "Enter system/admin password" –AsSecureString
Possiamo salvare $pass
in un file, se necessario, come:
$pass| ConvertFrom-SecureString | Out-File "C:\Scripts\AdminPassword.txt
Articoli correlati: