Das Prinzip sicherer Kennwörter beruht auf dem Grundsatz, dass in Produktionsskripten wichtige Kennwörter nicht im Klartext angegeben werden sollten. Das stellt ein gravierenden Mangel an Sicherheit dar. Mit PowerShell können wir also ein Kennwort sichern oder zumindest die Sichtbarkeit von Kennwörtern reduzieren. Wir erörtern zunächst allgemeine Aspekte der sicheren Zeichenfolge und gehen dann darauf ein, wie der Dell Command PowerShell Provider (DCPP) die der PowerShell inhärente Funktion zur Sicherung des Kennworts nutzt.
Nehmen Sie an, dass wir den Nutzernamen und das Kennwort des/der NutzerIn an der Konsole ablesen möchten. Wir wissen, dass der Nutzernamen in der Regel keine Sicherheitsmaßnahmen erfordert und für alle sichtbar sein kann. Aber beim Kennwort sollten wir nicht zulassen, dass Fremde das Kennwort des/der NutzerIn erfahren. Diese Anforderung können wir mit den unten aufgeführten Befehlen erfüllen:
$user = Read-Host "Enter Username" $pass = Read-Host "Enter Password" -AsSecureString
Die obige Übersicht zeigt, wie wir für mehr Sicherheit sorgen können, wenn wir kritische Informationen wie ein Kennwort schützen müssen. Im obigen Beispiel ist die Variable „$pass“ vom Typ System.Security.SecureString
. Wir erhalten eine Einführung in zwei weitere häufig verwendete Cmdlets, die PowerShell bereitstellt, um sichere Felder zu vereinfachen, bevor wir auf Aspekte von DCPP eingehen.
Die beiden Befehle sind ConvertTo-SecureString
und ConvertFrom-SecureString
. ConvertTo-SecureString
konvertiert Klartext in Typ System.Security.SecureString
. Ein Beispiel ist im folgenden dargestellt:
"P@ssword1" | ConvertTo-SecureString -AsPlainText -Force
Im obigen Beispiel wird der Klartext P@assword1
in Typ System.Security.SecureString
konvertiert. Dies dient nur zur Information und wird möglicherweise nicht häufig verwendet.
Das nächste Cmdlet ConvertFrom-SecureString
ist ein weiter verbreitetes Cmdlet, das verwendet wird, um sichere Zeichenfolgen in verschlüsselte Standardzeichenfolgen zu konvertieren. Die Haupteinschränkung von ConvertTo-SecureString
ist, dass seine Ausgabe nicht für die zukünftige Verwendung direkt in eine Datei geschrieben werden kann. Wir müssen ConvertFrom-SecureString
verwenden, das System.Security.SecureString
in eine verschlüsselten Standardzeichenfolge konvertiert, die in einer Datei gespeichert werden kann, um diese Einschränkung zu überwinden.
Wir konvertieren Klartext P@ssword1
in eine sichere Zeichenfolge und speichern die Ausgabe in ConvertFrom-SecureString
, um eine verschlüsselte Zeichenfolge zu erhalten, die sicher und bequem in einer Datei gespeichert werden kann.
Angenommen, auf einem Computer wurde das Admin-Kennwort festgelegt, das wir in einer Datei speichern müssen. Wir können dies folgendermaßen tun:
Read-Host "Enter Admin Password" -AsSecureString | ConvertFrom-SecureString | Out-File "C:\Scripts\AdminPassword.txt"
Wir können dieses Admin-Kennwort wie folgt als sicheres Objekt in eine Variable abrufen:
$pass = Get-Content "C:\Scripts\AdminPassword.txt" | ConvertTo-SecureString
Überlegen Sie nun, wie Sie ein sicheres Kennwort für DCPP nutzen können. Wenn für den Computer des/der NutzerIn in DCPP entweder ein System- oder ein Administratorkennwort festgelegt ist, müssen wie für alle set
-Befehle das entsprechende Kennwort eingeben. Wenn Sie dieses Kennwort als Klartext angeben, verstößt dies gegen die Sicherheit. Wir müssen das Kennwort als System.Security.SecureString
übergeben. Außerdem müssen wir beim Übergeben eines SecureString
-Kennworts dieses mit einem -PasswordSecure
-Switch und nicht dem normalen –Password
übergeben werden. Unten sehen Sie ein Beispiel, in dem der/die NutzerIn versucht, AdvancedBatteryChargeCfg
to Disabled
festzulegen und das SecureString
Kennwort zu übergeben.
Set-item AdvancedBatteryChargeCfg disabled –PasswordSecure $pass
Hier enthält „$pass“ das System- und Administratorkennwort und ist vom Typ System.Security.SecureString
. Ähnlich wie in der obigen Diskussion können wir $pass
lesen als:
$pass = Read-Host "Enter system/admin password" –AsSecureString
Wir können $pass
bei Bedarf in einer Datei speichern als:
$pass| ConvertFrom-SecureString | Out-File "C:\Scripts\AdminPassword.txt
Zugehörige Artikel: