Konceptet bakom säkra lösenord är att vi i produktionsskript inte ska skicka viktiga lösenord som oformaterad vy. Detta är en allvarlig brist på säkerhet. Så med hjälp av PowerShell kan vi säkra ett lösenord eller åtminstone minska lösenordets synlighet. Vi diskuterar först allmänna aspekter av säker sträng och sedan hur Dell Command PowerShell Provider (DCPP) utnyttjar den inneboende funktionen i PowerShell för att skydda lösenord.
Tänk på att vi vill läsa användarnamnet och lösenordet från användaren på konsolen. Vi vet att användarnamnet i allmänhet inte kräver någon säkerhet och att det kan vara synligt för alla. Men för lösenord bör vi inte låta främlingar veta användarens lösenord. Vi kan underlätta detta krav med kommandona nedan:
$user = Read-Host "Enter Username" $pass = Read-Host "Enter Password" -AsSecureString
Ovanstående är en översikt över hur vi kan öka säkerheten när vi måste skydda viktig information som lösenord. I exemplet ovan är variabeln $pass av typen System.Security.SecureString
. Vi får en introduktion till två andra ofta använda cmdlets som PowerShell tillhandahåller för att underlätta säkra fält innan vi berör aspekter av DCPP.
De två kommandona är ConvertTo-SecureString
och ConvertFrom-SecureString
. ConvertTo-SecureString
Konverterar en oformaterad text till text System.Security.SecureString
. Nedan visas ett exempel:
"P@ssword1" | ConvertTo-SecureString -AsPlainText -Force
I exemplet ovan är oformaterad text P@assword1
konverteras till typ System.Security.SecureString
. Detta är mer av en information och kan eller kanske inte används i stor utsträckning.
Nästa cmdlet ConvertFrom-SecureString
är en mer allmänt använd cmdlet som används för att konvertera säkra strängar till krypterade standardsträngar. Den huvudsakliga begränsningen av ConvertTo-SecureString
är att dess utdata inte kan skrivas direkt till en fil för framtida användning. Vi måste använda ConvertFrom-SecureString
som konverterar System.Security.SecureString
till en krypterad standardsträng som enkelt kan sparas i en fil för att övervinna denna begränsning.
Vi konverterar oformaterad text P@ssword1
för att säkra strängen och sedan skicka dess utdata till ConvertFrom-SecureString
för att få en krypterad sträng som säkert och bekvämt kan sparas i en fil.
Som ett exempel, låt oss säga på en dator om administratörslösenordet har ställts in och vi måste spara detta 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 återställa 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 fundera på hur du kan utnyttja ett säkert lösenord för DCPP. Om antingen system- eller administratörslösenord har ställts in på användarens dator i DCPP gäller det för alla set
kommandon måste vi skicka respektive lösenord. Så att tillhandahålla detta lösenord som oformaterad text bryter mot säkerheten. Vi måste skicka lösenordet som System.Security.SecureString
. Dessutom, när vi passerar en SecureString
lösenord måste vi skicka det med en -PasswordSecure
switch och inte den normala –Password
strömbrytare. Nedan visas ett exempel där användaren försöker ställa in AdvancedBatteryChargeCfg
till Disabled
och passera SecureString
lösenord:
Set-item AdvancedBatteryChargeCfg disabled –PasswordSecure $pass
Här innehåller $pass system- och administratörslösenordet och är av typen System.Security.SecureString
. I likhet med ovanstående diskussion kan vi läsa $pass
som:
$pass = Read-Host "Enter system/admin password" –AsSecureString
Vi kan spara $pass
till en fil, om det behövs, som:
$pass| ConvertFrom-SecureString | Out-File "C:\Scripts\AdminPassword.txt
Relaterade artiklar: