Neues PowerShell-Modul für die Verwaltung von Kennwörtern SecretsManagement in der PowerShell

Autor / Redakteur: Thomas Joos / Peter Schmitz

Administratoren müssen in der PowerShell sehr häufig Anmeldedaten inklusive Kennwörter speichern. Dazu wird aktuell auf Secure Strings gesetzt. Diese Vorgehensweise ist aber weder sicher noch komfortabel. Mit dem neuen PowerShell-Modul „SecretsManagement“ lassen sich Anmeldedaten in einem sicheren Tresor speichern und die Daten dann über Schnittstellen an Passwort-Tools übermitteln.

Mit dem neuen Modul „SecretsManagement“ will Microsoft die Verwaltung und Verwendung von Anmeldedaten und Kennwörtern in der PowerShell verbessern.
Mit dem neuen Modul „SecretsManagement“ will Microsoft die Verwaltung und Verwendung von Anmeldedaten und Kennwörtern in der PowerShell verbessern.
(Bild: gemeinfrei / Pixabay )

Aktuell nutzen Administratoren zur Speicherung von Anmeldedaten in der PowersShell Befehle in der Form „Install-HgsServer -HgsDomainName „hostgs.com“ -SafeModeAdministratorPassword (read-host -prompt Kennwort -assecurestring) -Restart“ oder „$certificatePassword = ConvertTo-SecureString -AsPlainText $certificatePasswd -Force”. Wenn die Daten in Skripten genutzt werden sollen, müssen Anmeldedaten in verschlüsselte Zeichenketten umgewandelt werden, zum Beispiel mit „ConvertFrom-SecureString“. Diese Vorgehensweise ist komplex, fehleranfällig und kaum dauerhaft praktikabel.

Mit dem neuen Modul „SecretsManagement“ will Microsoft die Verwaltung und Verwendung von Anmeldedaten und Kennwörtern verbessern. Das Modul befindet sich derzeit noch in der Entwicklung, kann aber bereits genutzt werden. In den ersten Schritten wird das Modul unter Windows funktionieren. Es ist aber geplant, dass durch den Einsatz mit PowerShell 7.x auch der Betrieb auf Linux und macOS möglich wird. Der klare Fokus des Moduls ist das sichere Speichern und der sichere Zugriff auf Anmeldedaten und Kennwörter für Cmdlets und Skripte in der PowerShell.

Bildergalerie
Bildergalerie mit 5 Bildern

Passwort-Manager mit der PowerShell verknüpfen

Das neue Modul „SecretsManagement“ kann über Schnittstellen auf Passwort-Manager zugreifen, um sicher Daten für Anmeldungen zu übernehmen. Zum Lieferumfang des Moduls gehört ein systeminterner Tresor (Vault) der als Speicher für Kennwörter genutzt werden kann. Sobald das Modul auf Linux genutzt werden kann, wird hier Gnome-Keyring für das Speichern von Kennwörtern genutzt. Es ist aber zu erwarten, dass in Zukunft die meisten Kennwort-Manager einen Provider für das Modul bieten werden, sodass Kennwörter zentral im Unternehmen gespeichert und durch PowerShell-Skripte sicher abgerufen werden können. In Zukunft soll auch die Unterstützung von Azure KeyVault in das Modul integriert werden. Dadurch können Anmeldedaten auch in der Cloud gespeichert werden und sind daher überall zugreifbar.

Dabei bleiben die Anmeldedaten im sicheren Passwort-Manager gespeichert und müssen nicht kompliziert in einem Skript und Dateien abgelegt werden. Das Modul kann in der PowerShell über die Paketverwaltung installiert werden. Dazu wird der folgende Befehl verwendet:

Install-Module -Name Microsoft.PowerShell.SecretsManagement -RequiredVersion 0.2.0-alpha1 -AllowPrerelease

Alternativ wird der folgende Befehl verwendet. Dieser Befehl kann eine veraltete Testversion auch zur aktuellen Version aktualisieren:

Install-Module Microsoft.PowerShell.SecretManagement -AllowPrerelease - AllowClobber

Wer in einer älteren Version Kennwörter gespeichert hat, kann diese in der neuen Version nicht mehr nutzen. Diese müssen also neu eingetragen werden. Zur Installation des Moduls muss auch der dazu passende Secret-Store installiert werden:

Install-Module Microsoft.PowerShell.SecretStore -AllowPrerelease

Um in der neuen Version des Moduls den Secret-Store zu registrieren, wird danach der folgende Befehl eingegeben:

Register-SecretVault -Name SecretStore -ModuleName Microsoft.PowerShell.SecretStore -DefaultVault

Nach der Installation kann das Modul importiert werden:

Import-Module microsoft.powershell.secretsmanagement

Mit dem Befehl „get-command -module microsoft.powershell.secretsmanagement” zeigt die PowerShell die aktuell integrierten Cmdlets des Moduls an. Bei neueren Versionen muss hier natürlich darauf geachtet werden, dass die neuste Version installiert wird. Wer das Modul nicht über die PowerShell-Gallery als Paket installieren will, kann den Download auch manuell durchführen. Nach der Installation ist das Modul einsatzbereit. Ein Beispiel sieht folgendermaßen aus:

Import-Module Microsoft.PowerShell.SecretsManagement# Publish a module to the PowerShell GalleryPublish-Module -Path C:\Modules\Publish\MyNewModule -NuGetApiKey (Get-Secret NuGetApiKey -AsPlainText)# Run management script on multiple machinesInvoke-Command -Cn $machines -FilePath .\MyMgmtScript.ps1 -Credential (Get-Secret MgmtCred)

Kennwörter mit der PowerShell verwalten

Damit das Modul mit der PowerShell Anmeldedaten verwaltet kann, müssen Vaults (Tresore) registriert werden, in denen die Anmeldedaten gespeichert sind. Hierzu wird das Cmdlet „Register-SecretsVault“ verwendet.

Die registrierten Vaults zeigt die PowerShell mit „Get-SecretsVault“ an. Nach der Installation des Moduls ist der integrierte Vault des PowerShell-Moduls bereits als registriert hinterlegt. Seit Preview 3 des Moduls wird dieser Vault getrennt installiert und registriert. Um einen Vault aus der Liste zu entfernen, wird das Cmdlet „Unregister-SecretsVault“ genutzt.

Das Modul kann mit externen Password-Managern zusammenarbeiten, muss es aber nicht. Anmeldedaten und Kennwörter können auch im internen Vault des Moduls gespeichert werden. Diese trägt die Bezeichnung „BuiltInLocalVault. Um Kennwörter im Vault abzulegen wird zum Beispiel der folgende Befehl verwendet:

Add-Secret -Name Admin -Secret "meinkennwort"

Das Cmdlet speichert das Kennwort verschlüsselt als Secure String im internen Vault. Der Zugriff auf das Kennwort ist nur mit dem Benutzerkonto möglich, mit dem das Kennwort im Vault abgelegt wurde. Das gilt auch bei der Registrierung von weiteren Vaults. Auch hier kann nur der Benutzer auf die registrierten Vaults, zum Beispiel Azure KeyVault zugreifen, der den Tresor auch registriert hat.

Um auf die gespeicherten Datenzuzugreifen, wird das Cmdlet „Get-Secret“ verwendet, in diesem Beispiel:

Get-Secret -Name Admin

Der Befehl zeigt aber nicht das Kennwort in Klartext an, sondern nur den Secure String, der zur Anmeldung in der PowerShell genutzt werden kann. Mit dem zusätzlichen Parameter „-AsPlainText“ wird das hinterlegte Kennwort in Textform angezeigt.

(ID:47000255)

Über den Autor

 Thomas Joos

Thomas Joos

Freiberuflicher Autor und Journalist