Número del artículo: 000146459
Gäller ej
Konceptet bakom säkra lösenord är att vi i produktionsskript inte ska skicka viktiga lösenord som vanligt. Det här är en allvarlig brist på säkerhet. Med PowerShell kan vi skydda ett lösenord eller åtminstone minska lösenordssynlighet. Vi tar först upp allmänna aspekter av en säker sträng och diskuterar sedan hur Dell Command PowerShell Provider (DCPP) använder Innate-funktionen i PowerShell för att skydda lösenord.
Tänk på att vi vill läsa användarnamn och lösenord från användaren på konsolen. Vi är medvetna om att användarnamnet i allmänhet inte kräver någon säkerhet och det kan vara synligt för alla. Men för lösenord ska vi inte meddela användarens lösenord. Vi kan underlätta detta krav med kommandona enligt nedan:
$user = Read-Host "Enter Username" $pass = Read-Host "Enter Password" -AsSecureString
Ovanstående är en översikt över hur vi kan lägga till mer säkerhet när vi måste skydda viktig information, till exempel ett lösenord. I exemplet ovan är variabeln $pass av typ System.Security.SecureString
. Vi får en introduktion till två andra cmdlets som används ofta i PowerShell för att underlätta säkra fält innan vi vidrör aspekter av DCPP.
De två kommandona är ConvertTo-SecureString
och ConvertFrom-SecureString
. ConvertTo-SecureString
konverterar oformaterad text till typ System.Security.SecureString
. Nedan visas ett exempel:
"P@ssword1" | ConvertTo-SecureString -AsPlainText -Force
I exemplet ovan konverteras oformaterad text P@assword1
till att skriva System.Security.SecureString
. Det här är mer av en information och kanske inte används i stor utsträckning.
Nästa cmdlet ConvertFrom-SecureString
är en mer vanlig cmdlet som används för att konvertera säkra strängar till krypterade standardsträngar. Den största begränsningen ConvertTo-SecureString
är att dess utdata inte kan skrivas direkt i en fil för framtida användning. Vi måste använda ConvertFrom-SecureString
dem för att omvandla dem System.Security.SecureString
till en krypterad standardsträng som enkelt kan sparas i en fil för att lösa den här begränsningen.
Vi konverterar oformaterad text P@ssword1
till säker sträng och skickar sedan utdata för att ConvertFrom-SecureString
få en krypterad sträng som enkelt och bekvämt kan sparas i en fil.
Vi kan till exempel säga på en dator om administratörslösenordet har ställts in och vi måste spara det i en fil. Vi kan göra detta med hjälp av:
Read-Host "Enter Admin Password" -AsSecureString | ConvertFrom-SecureString | Out-File "C:\Scripts\AdminPassword.txt"
Vi kan hämta tillbaka det här administratörslösenordet till en variabel som ett säkert objekt som:
$pass = Get-Content "C:\Scripts\AdminPassword.txt" | ConvertTo-SecureString
Nu ska du överväga hur du använder ett säkert lösenord för DCPP. Om användarens dator har ett system- eller administratörslösenord inställt i DCPP måste vi, för alla set
kommandon, skicka respektive lösenord. Det innebär att det här lösenordet är ett oformaterad text som bryter mot säkerheten. Så vi måste skicka lösenordet som System.Security.SecureString
. När vi skickar ett SecureString
lösenord måste vi även skicka det med en -PasswordSecure
switch och inte med den vanliga –Password
switchen. Nedan visas ett exempel där användaren försöker ställa in AdvancedBatteryChargeCfg
Disabled
och skicka SecureString
lösenord:
Set-item AdvancedBatteryChargeCfg disabled –PasswordSecure $pass
Här $pass innehåller system- och administratörslösenordet och är av typ System.Security.SecureString
. Liknande den ovanstående diskussionen kan vi läsa $pass
som:
$pass = Read-Host "Enter system/admin password" –AsSecureString
Vi kan vid behov spara $pass
till en fil som:
$pass| ConvertFrom-SecureString | Out-File "C:\Scripts\AdminPassword.txt
Dell Command | Powershell Provider
11 sept 2023
7
Solution