Gli script di PowerShell spesso necessitano di autorizzazioni elevate per essere eseguiti. Sebbene questo non costituisca un problema per gli script interattivi, poiché possono richiedere all'amministratore di immettere la password quando necessario, diventa più difficile per gli script automatizzati che richiedono credenziali.
Nella maggior parte dei casi, gli script automatizzati che richiedono autorizzazioni elevate vengono eseguiti su sistemi sicuri. Tuttavia, crittografare la password nello script è una cattiva idea. Mentre Crittografia della password In un file è un'opzione, tali file sono solo marginalmente migliori di una password in linea con testo in chiaro. Questo perché chiunque abbia accesso al file può utilizzarlo per autenticarsi senza dover conoscere la password effettiva.
Per fornire credenziali più sicure agli script PowerShell automatizzati, è possibile progettare lo script in modo che disponga delle autorizzazioni di Gestione credenziali Windows.
Prima di spiegare come funziona, vale la pena notare che presumo che lo script PowerShell in questione verrà eseguito su un sistema aggiunto a un dominio. Sebbene Windows Credential Manager esista su sistemi autonomi, a volte può essere un po' strano. Ad esempio, se un sistema autonomo è configurato senza password (nessuna autenticazione), le credenziali memorizzate nella cache nel gestore credenziali spesso non riusciranno a concedere l'accesso alle unità di rete mappate, anche se le credenziali archiviate sono corrette.
Utilizza account pubblicitari personalizzati per gli script PowerShell
Il primo passo del processo è l'apertura Utenti e computer di Active Directory Console e crea un account personalizzato per lo script PowerShell in questione per ottenere le autorizzazioni necessarie. Sebbene alcune organizzazioni creino un account dedicato utilizzabile da tutti gli script PowerShell, questa pratica può indebolire la sicurezza.
Il motivo è che l'utilizzo di un account PowerShell per uso generico viola il principio dell'accesso minimo da parte dell'utente. L'accesso utente minimo impone che un account disponga solo delle autorizzazioni necessarie per completare l'attività assegnata, né più né meno. Poiché gli script PowerShell spesso eseguono operazioni distinte, la creazione di un singolo account per servire tutti gli script creerà essenzialmente un account amministratore globale. Se un utente malintenzionato compromette uno script e ottiene l'accesso a tale account, le conseguenze potrebbero essere devastanti per l'organizzazione.
Il mio consiglio invece è di crearne di separati Account di Active Directory Per script di PowerShell. Puoi sempre archiviare questi account in una cartella Active Directory dedicata per evitare di ingombrare la cartella Utenti. Assicurati solo di nominare e descrivere ciascun account in un modo che ne indichi chiaramente lo scopo.
Configura Gestione credenziali di Windows
Detto questo, diamo un'occhiata a come utilizzare Gestione credenziali di Windows. Per questo articolo ho creato un account utente standard chiamato [email protected] Si accede a un sistema aggiunto a un dominio che esegue Windows 11. Si tenta quindi di creare un utente Active Directory, ma come è possibile vedere nella Figura 1, il processo non riesce a causa di autorizzazioni insufficienti.
Figura 1. Il comando non è riuscito a causa di autorizzazioni insufficienti.
Per configurare PowerShell per l'utilizzo delle credenziali archiviate, è necessario aprire una sessione con privilegi elevati (temporaneamente effettuato l'accesso con autorizzazioni di amministratore) e installare il modulo Credential Manager. Utilizzare il comando seguente per installare il modulo:
Install-Module CredentialManager
Figura 2. Hai installato il modulo Credential Manager.
Aggiungi credenziali a Gestione credenziali di Windows
Dopo aver installato il modulo, puoi aggiungere le credenziali archiviate a Gestione credenziali di Windows. A scopo dimostrativo, lo sto facendo in una finestra di PowerShell non elevata utilizzando un account utente standard. I comandi che ho utilizzato, che potete vedere in Figura 3, sono i seguenti:
$Username = [email protected] $Password = ConvertTo-SecureString “P@ssw0rd” -AsPlainText -Force $Credential = New-Object -TypeName PSCredential -ArgumentList $UserName, $Password New-StoredCredential -Target PowerShell -Credential $Credential -Type Generic -Persist LocalMachine
Va notato che il parametro target utilizzato nell'ultimo comando imposta essenzialmente un nome descrittivo per la credenziale. Puoi nominare l'obiettivo come preferisci. Tuttavia, è importante ricordare il nome della destinazione personalizzata poiché sarà necessario farvi riferimento ogni volta che si utilizzano le credenziali archiviate.
Figura 3. Le credenziali vengono scritte in Gestione credenziali di Windows.
Recuperare le credenziali archiviate è semplicemente questione di utilizzare questo comando:
Get-StoredCredential -Target
Crea un utente Active Directory
All'inizio di questo articolo, hai provato a creare un nuovo account utente di Active Directory da una sessione di PowerShell non elevata utilizzando un account utente standard. Naturalmente questa operazione fallì. Ora ripetiamo il test utilizzando le credenziali memorizzate. L'unica cosa che faccio diversamente è aggiungere un parametro -Credential al cmdlet New-ADUser per specificare le credenziali archiviate. I comandi che ho utilizzato sono:
$Cred = Get-StoredCredential -Target PowerShell
New-ADUser -Credential $Cred -Name “TestUser” -SamAccountName “TestUser” -UserPrincipalName [email protected] -AccountPassword (ConvertTo-SecureString “P@ssw0rd” -AsPlainText -Force) -Enabled $True
Una breve nota è che mentre nel comando New-ADUser viene visualizzata una password in chiaro, questa è la password impostata per il nuovo account utente che creo. Non viene utilizzato per elevare le mie autorizzazioni in modo da poter creare l'account. L'elevazione dei privilegi viene gestita dal parametro -Credential.
Dopo aver creato il nuovo account, ho confermato il successo del processo utilizzando questo comando:
Get-ADUser -Filter {SamAccountName -eq “TestUser”}
È possibile vedere i risultati finali nella Figura 4.
Figura 4. Il nuovo account Active Directory è stato creato.
“Esploratore. Scrittore appassionato. Appassionato di Twitter. Organizzatore. Amico degli animali ovunque.”