Konceptet bag sikre adgangskoder er, at vi i produktionsscripts ikke bør videregive vigtige adgangskoder som almindelig visning. Dette er en alvorlig mangel på sikkerhed. Så ved hjælp af PowerShell kan vi sikre en adgangskode eller i det mindste reducere adgangskodens synlighed. Først diskuterer vi generelle aspekter af sikker streng og diskuterer, hvordan Dell Command PowerShell Provider (DCPP) udnytter den indbyggede funktion i PowerShell til at sikre adgangskoden.
Overvej at vi vil læse brugernavnet og adgangskoden fra brugeren på konsollen. Vi ved, at brugernavnet generelt ikke kræver nogen sikkerhed, og det kan være synligt for alle. Men for adgangskode bør vi ikke lade fremmede kende brugerens adgangskode. Vi kan lette dette krav med kommandoerne som nedenfor:
$user = Read-Host "Enter Username" $pass = Read-Host "Enter Password" -AsSecureString
Ovenstående er et overblik over, hvordan vi kan tilføje mere sikkerhed, når vi skal sikre kritiske oplysninger som en adgangskode. I eksemplet ovenfor er variablen $pass af typen System.Security.SecureString
. Vi får en introduktion til to andre udbredte cmdlet'er, som PowerShell leverer til at lette sikre felter, før vi berører aspekter af DCPP.
De to kommandoer er ConvertTo-SecureString
og ConvertFrom-SecureString
. ConvertTo-SecureString
Konverterer almindelig tekst til tekst System.Security.SecureString
. Et eksempel er vist nedenfor:
"P@ssword1" | ConvertTo-SecureString -AsPlainText -Force
I ovenstående eksempel er den almindelige tekst P@assword1
Konverteres til type System.Security.SecureString
. Dette er mere en information og kan eller måske ikke bruges i vid udstrækning.
Den næste cmdlet ConvertFrom-SecureString
er en mere udbredt cmdlet, der bruges til at konvertere sikre strenge til krypterede standardstrenge. Den vigtigste begrænsning af ConvertTo-SecureString
er, at dets output ikke kan skrives direkte ind i en fil til fremtidig brug. Vi er nødt til at bruge ConvertFrom-SecureString
som konverterer System.Security.SecureString
i en krypteret standardstreng, som nemt kan gemmes i en fil for at overvinde denne begrænsning.
Vi konverterer almindelig tekst P@ssword1
for at fastgøre strengen og derefter føre dens output til ConvertFrom-SecureString
for at få en krypteret streng, som sikkert og bekvemt kan gemmes i en fil.
Lad os som et eksempel sige på en computer, hvis administratoradgangskoden er indstillet, og vi skal gemme dette i en fil. Vi kan gøre dette ved hjælp af:
Read-Host "Enter Admin Password" -AsSecureString | ConvertFrom-SecureString | Out-File "C:\Scripts\AdminPassword.txt"
Vi kan hente denne administratoradgangskode tilbage til en variabel som et sikkert objekt som:
$pass = Get-Content "C:\Scripts\AdminPassword.txt" | ConvertTo-SecureString
Nu skal du overveje, hvordan du udnytter en sikker adgangskode til DCPP. I DCPP gælder det, at hvis brugerens computer har enten System- eller administratoradgangskode indstillet, gælder følgende for alle set
kommandoer, vi skal videregive den respektive adgangskode. Så at give denne adgangskode som almindelig tekst bryder sikkerheden. Vi er nødt til at videregive adgangskoden som System.Security.SecureString
. Også, når vi passerer en SecureString
adgangskode, vi er nødt til at videregive den med en -PasswordSecure
switch og ikke det normale –Password
omskifter. Nedenfor vises et eksempel, hvor brugeren forsøger at indstille AdvancedBatteryChargeCfg
til Disabled
og passerer SecureString
kodeord:
Set-item AdvancedBatteryChargeCfg disabled –PasswordSecure $pass
Her indeholder $pass system- og administratoradgangskoden og er af typen System.Security.SecureString
. I lighed med ovenstående diskussion kan vi læse $pass
som:
$pass = Read-Host "Enter system/admin password" –AsSecureString
Vi kan spare $pass
til en fil, hvis det kræves, som:
$pass| ConvertFrom-SecureString | Out-File "C:\Scripts\AdminPassword.txt
Relaterede artikler: