Het concept achter veilige wachtwoorden is dat we in productiescripts belangrijke wachtwoorden niet als plain view moeten doorgeven. Dit is een ernstig gebrek aan veiligheid. Met PowerShell kunnen we dus een wachtwoord beveiligen of op zijn minst de zichtbaarheid van wachtwoorden verminderen. We bespreken eerst de algemene aspecten van Secure String en vervolgens hoe Dell Command PowerShell Provider (DCPP) gebruikmaakt van de ingebouwde functie van PowerShell om wachtwoorden te beveiligen.
Houd er rekening mee dat we de gebruikersnaam en het wachtwoord van de gebruiker aan de console willen lezen. We weten dat de gebruikersnaam over het algemeen geen beveiliging vereist en voor iedereen zichtbaar kan zijn. Maar voor een wachtwoord mogen we vreemden het wachtwoord van de gebruiker niet laten weten. We kunnen deze vereiste vergemakkelijken met de onderstaande opdrachten:
$user = Read-Host "Enter Username" $pass = Read-Host "Enter Password" -AsSecureString
Het bovenstaande is een overzicht van hoe we meer beveiliging kunnen toevoegen wanneer we kritieke informatie zoals een wachtwoord moeten beveiligen. In het bovenstaande voorbeeld is de variabele $pass van het type System.Security.SecureString
te installeren. We krijgen een inleiding tot twee andere veelgebruikte cmdlets die PowerShell biedt om beveiligde velden te vergemakkelijken voordat we aspecten van DCPP aanraken.
De twee commando's zijn: ConvertTo-SecureString
als ConvertFrom-SecureString
te installeren. ConvertTo-SecureString
Converteert tekst zonder opmaak naar tekst System.Security.SecureString
te installeren. Hieronder ziet u een voorbeeld:
"P@ssword1" | ConvertTo-SecureString -AsPlainText -Force
In het bovenstaande voorbeeld wordt de tekst zonder opmaak P@assword1
wordt geconverteerd naar type System.Security.SecureString
te installeren. Dit is meer informatie en kan al dan niet op grote schaal worden gebruikt.
De volgende cmdlet ConvertFrom-SecureString
is een meer algemeen gebruikte cmdlet die wordt gebruikt om beveiligde tekenreeksen om te zetten in versleutelde standaardtekenreeksen. De belangrijkste beperking van ConvertTo-SecureString
is dat de uitvoer ervan niet rechtstreeks in een bestand kan worden geschreven voor toekomstig gebruik. We moeten gebruik maken van ConvertFrom-SecureString
die converteert System.Security.SecureString
in een gecodeerde standaardtekenreeks die gemakkelijk kan worden opgeslagen in een bestand, om deze beperking te omzeilen.
We converteren tekst zonder opmaak P@ssword1
om de snaar vast te zetten en vervolgens de uitvoer naar ConvertFrom-SecureString
om een gecodeerde string te krijgen die veilig en gemakkelijk in een bestand kan worden opgeslagen.
Laten we als voorbeeld zeggen op een computer als het beheerderswachtwoord is ingesteld en we dit moeten opslaan in een bestand. Dit doen we met behulp van:
Read-Host "Enter Admin Password" -AsSecureString | ConvertFrom-SecureString | Out-File "C:\Scripts\AdminPassword.txt"
We kunnen dit beheerderswachtwoord terughalen in een variabele als een beveiligd object als:
$pass = Get-Content "C:\Scripts\AdminPassword.txt" | ConvertTo-SecureString
Nu gaan we kijken hoe u een veilig wachtwoord voor DCPP kunt gebruiken. Als in DCPP een systeem- of beheerderswachtwoord is ingesteld op de computer van de gebruiker, geldt voor alle set
commando's die we hebben om het respectievelijke wachtwoord door te geven. Het verstrekken van dit wachtwoord als platte tekst is dus in strijd met de beveiliging. We moeten het wachtwoord doorgeven als System.Security.SecureString
te installeren. Ook als we een SecureString
wachtwoord, moeten we het doorgeven met een -PasswordSecure
schakelaar en niet de normale –Password
schakelaar. Hieronder wordt een voorbeeld getoond waarin de gebruiker probeert in te stellen AdvancedBatteryChargeCfg
Aan Disabled
en het passeren SecureString
wachtwoord:
Set-item AdvancedBatteryChargeCfg disabled –PasswordSecure $pass
Hier bevat $pass het systeem- en beheerderswachtwoord en is van het type System.Security.SecureString
te installeren. Vergelijkbaar met de bovenstaande discussie kunnen we lezen $pass
als:
$pass = Read-Host "Enter system/admin password" –AsSecureString
We kunnen besparen $pass
naar een bestand, indien nodig, als:
$pass| ConvertFrom-SecureString | Out-File "C:\Scripts\AdminPassword.txt
Gerelateerde artikelen: