Wie kann ich ein SecureString durch ein Invoke-Command von einem Hyper-V auf ein VM durchreichen, ohne das Passwort zwischenzuspeichern?

Anonym
2024-12-13T09:33:38+00:00

Einleitung: Hallo Community,
ich arbeite aktuell an einem Skript, das auf einem Hyper-V-Host eine Windows-VM konfiguriert. Dabei möchte ich auf der VM das Cmdlet Install-ADDSForest ausführen und das SafeModeAdministratorPassword als SecureString übergeben.

Problemstellung: Das Problem ist, dass ich den SecureString, der auf dem Hyper-V-Host generiert wird, nicht in einen String konvertieren möchte, um Sicherheitsrisiken zu vermeiden (z. B. das Passwort im Zwischenspeicher). Bisher habe ich versucht, das Passwort direkt per Invoke-Command auf die VM zu übergeben, bin dabei aber auf folgende Schwierigkeiten gestoßen:

  1. Der Invoke-Command lässt nur String durch.
  2. Methoden wie die Konvertierung in einen String oder die Nutzung von Klartext kommen aus Sicherheitsgründen nicht infrage.

Ziel: Mein Ziel ist es, das Passwort sicher von der Host-Maschine auf die VM zu übergeben und Install-ADDSForest zuverlässig auszuführen, ohne Kompromisse bei der Passwortsicherheit einzugehen.

Fragen:

  1. Wie kann ich den SecureString sicher von der Host-Maschine in die VM übergeben?
  2. Welche Ansätze oder Best Practices gibt es für diese Problemstellung?

Systemumgebung:

  • Hyper-V-Host: Windows Server 2019
  • Gast-VM: Windows Server 2019
  • Skript: PowerShell

Ich freue mich über eure Vorschläge und Hinweise, wie ich das Problem lösen kann, und bin für jede Idee dankbar!

Windows Server – Remote- und virtuelle Desktops – PowerShell

Gesperrte Frage. Diese Frage wurde aus der Microsoft-Support-Community migriert. Sie können darüber abstimmen, ob sie hilfreich ist, aber Sie können keine Kommentare oder Antworten hinzufügen oder der Frage folgen. Aus Datenschutzgründen werden Benutzerprofile für migrierte Fragen anonymisiert.

0 Kommentare Keine Kommentare
{count} Stimmen
Akzeptierte Antwort
  1. Anonym
    2024-12-16T01:53:30+00:00

    Diese Antwort wurde automatisch übersetzt. Daher können grammatikalische Fehler oder seltsame Formulierungen vorkommen.

    Hallo

    Wenn Sie eine Standardzeichenfolge nicht in eine sichere Zeichenfolge konvertieren möchten, können Sie das Kennwort auf dem Host als sichere Zeichenfolge eingeben.

    $secureString = Lese-Host -AsSecureString

    Und Sie können diesen sicheren String in einen verschlüsselten Standardstring umwandeln, der in einer Klartextdatei gespeichert werden kann.

     $encryptedString = $secureString | ConvertFrom-SecureString

     $encryptedString | Out-File $file

    Lesen Sie dann die verschlüsselte Zeichenfolge aus einer Datei und konvertieren Sie sie in Ihrem Skript wieder in eine sichere Zeichenfolge.

     $encryptedString = Get-Content $file

     $secureString = $encryptedString | ConvertTo-SecureString

    0 Kommentare Keine Kommentare

1 zusätzliche Antwort

Sortieren nach: Am hilfreichsten
  1. Anonym
    2025-02-14T11:05:58+00:00

    Hallo,

    Danke für die Antwort. Soweit ich das nachvollziehen kann müsste dann aber, anders als gewünscht, die Variable kurzzeitig als String gespeichert werden.

    Dies hätte zur Folge, dass es im Zwischenspeicher des Host landet und dort von jemand dritten ausgelesen werden könnte.

    Leider ist dies genau das, was verhindert werden soll.

    Dennoch vielen Dank

    0 Kommentare Keine Kommentare