Zum Inhalt springen

Anmeldeinformationen und Geheimnisse

Core
Lernziele
  • PSCredential-Objekte erzeugen und verwenden
  • Verstehen, was SecureString leistet (und was nicht)
  • Geheimnisse mit SecretManagement ablegen und abrufen

Skripte brauchen oft Zugangsdaten: für Remoting, Web-APIs oder Dienstkonten. Passwörter im Klartext im Skript sind der häufigste Fehler.

Terminal-Fenster
$cred = Get-Credential
$cred.UserName

Get-Credential fragt Benutzername und Passwort ab und liefert ein PSCredential-Objekt. Viele Cmdlets akzeptieren es über -Credential:

Terminal-Fenster
Invoke-Command -ComputerName PSLAB-02 -Credential $cred -ScriptBlock { whoami }

Das Passwort steckt als SecureString im PSCredential. Du kannst einen SecureString aus Text erzeugen:

Terminal-Fenster
$secure = ConvertTo-SecureString "NurFuerDieUebung" -AsPlainText -Force
$cred = [PSCredential]::new("PSLAB\teilnehmer01", $secure)

-AsPlainText -Force ist ein Warnschild: Das Klartextpasswort stand dafür in deinem Skript. Das ist nur für Übungen akzeptabel.

Das Modul Microsoft.PowerShell.SecretManagement bietet eine einheitliche Schnittstelle (Set-Secret, Get-Secret). Dahinter steckt ein Tresor deiner Wahl: lokal (SecretStore), Azure Key Vault, KeePass, Bitwarden u. a.

Terminal-Fenster
Install-PSResource Microsoft.PowerShell.SecretManagement, Microsoft.PowerShell.SecretStore
Register-SecretVault -Name LokalerTresor -ModuleName Microsoft.PowerShell.SecretStore -DefaultVault
Set-Secret -Name LabApiToken -Secret (Read-Host -AsSecureString -Prompt "Token")
Get-Secret -Name LabApiToken # liefert einen SecureString
Get-Secret -Name LabApiToken -AsPlainText # nur wenn wirklich nötig
Get-SecretInfo

Ein PSCredential legst du direkt ab: Set-Secret -Name LabAdmin -Secret (Get-Credential).

  • Die Daten sind verschlüsselt gespeichert und nur im Kontext deines Benutzers lesbar.
  • Standardmäßig fragt der SecretStore nach einem Passwort. Das ist die sichere Einstellung.
  • Mit Set-SecretStoreConfiguration -Authentication None -Interaction None entfällt die Abfrage. Der Schlüssel liegt dann mit auf der Platte. Jeder Prozess unter deinem Konto kann lesen. Das passt für Automatisierung auf einem gesicherten Rechner, nicht für wertvolle Geheimnisse.
  • Für Skripte, die länger laufen, kannst du den Tresor für einen Zeitraum entsperren: Unlock-SecretStore -Password $pw -PasswordTimeout 600 (Sekunden).
  • Für Automatisierung in Unternehmen nutzt man meist einen Tresor wie Azure Key Vault und eine verwaltete Identität.
  • Get-Credential für interaktive Abfragen, PSCredential für -Credential-Parameter.
  • SecureString schützt vor Zufallsausgabe, nicht vor Angreifern.
  • SecretManagement (Set-Secret, Get-Secret) legt Geheimnisse in einem Tresor ab.