Benutzer-Werkzeuge

Webseiten-Werkzeuge


powershell:allgemein:credentials

Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen angezeigt.

Link zu dieser Vergleichsansicht

Beide Seiten der vorigen RevisionVorhergehende Überarbeitung
Nächste Überarbeitung
Vorhergehende Überarbeitung
powershell:allgemein:credentials [2022/02/21 08:43] – [Zusammenbau des Credential-Objektes] henningpowershell:allgemein:credentials [2024/05/27 08:36] (aktuell) – Externe Bearbeitung 127.0.0.1
Zeile 8: Zeile 8:
 ===== Automatische Anmeldung in einem Skript ===== ===== Automatische Anmeldung in einem Skript =====
 ==== Speichern eines Kennwortes in einer Datei ==== ==== Speichern eines Kennwortes in einer Datei ====
-Das Speichern eines Klartext-Kennwortes in einer Datei ist aus Sicherheitsgründen problematisch. Um das zu umgehen, verwendet die PowerShell das Format des "Secure String". Ein Kennwort kann in einer interaktiven PowerShell-Sitzung mit dem folgenden Verfahren als "Secure String" in einer Datei abgelegt werden.+Das Speichern eines Klartext-Kennwortes in einer Datei ist aus Sicherheitsgründen problematisch. Um das zu umgehen, verwendet die PowerShell das Format des "Secure String". Ein Kennwort kann in einer interaktiven PowerShell-Sitzung mit dem folgenden Verfahren als "Secure String" in einer Datei abgelegt werden. Die Anmeldedaten werden in einer XML-Datei gespeichert, wobei das Kennwort Base64-codiert abgelegt wird.\\
 <code powershell> <code powershell>
-# Kennwort in einer Variable speichern +Get-Credential | Export-CliXml -Path 'C:\ProgramData\Skripte\etc\cred.xml'</code>\\
-[string]$userPassword = 'wichtiges und geheimes Kennwort 123'+
  
-# Credential-Objekt aus dem Kennwort erzeugen +Der in der Datei gespeicherte Inhalt kann dann in Skripten verwendet werden.\\ 
-[SecureString]$secureString $userPassword | ConvertTo-SecureString -AsPlainText -Force +<code powershell>$credential=Import-CliXml -Path C:\ProgramData\Skripte\etc\cred.xml</code>
  
-# Den "Secure String" des Kennworts in eine Variable speichern +==== Aufruf in einem Skript ====
-[string]$stringObject ConvertFrom-SecureString $secureString +
- +
-# Den "Secure String" in einer Datei speichern +
-$stringObject | Set-Content -Path 'C:\ProgramData\Skripte\etc\creds.txt'</code> +
- +
-Es wird ein Base64-codiertes Objekt vom Typ "Secure String" erzeugt, dessen Inhalt in einer Datei gespeichert wird. Dieser Inhalt kann dann in Skripten verwendet werden.\\ +
- +
-==== Zusammensetzen des Credential-Objektes in einem Skript ==== +
- +
-<code> +
-# Benutzername und Secure String des Kennworts eingeben: +
-[string]$userName = 'admin' +
-[string]$passwordText = Get-Content 'C:\ProgramData\Skripte\etc\creds.txt' +
- +
-# Convert to secure string +
-[SecureString]$securePassword = $passwordText | ConvertTo-SecureString  +
- +
-# Create credential object +
-[PSCredential]$credObject = New-Object System.Management.Automation.PSCredential -ArgumentList $userName, $securePassword +
-</code> +
- +
-:!: Wichtig\\ +
-  * Auch wenn das Kennwort nur schwer zurückzurechnen ist, kann es im Kontext des Benutzers auf dem System, auf dem es erzeugt wurde, in anderen Skripten verwendet werden. Jemand mit Zugriff auf ein automatisiert laufendes Skript im entsprechenden Kontext könnte das Skript verändern und dabei das Kennwort benutzen. +
-  * Die Credentials lassen sich nur im Kontext des Benutzers auf dem System verwenden, in dem die Datei erzeugt wurde. Sie müssen auf jedem anderen System und in jedem anderen Kontext neu erzeugt werden. +
- +
- +
- +
- +
- +
- +
-===== Erzeugen der Credential-Datei ===== +
- +
-Die PowerShell muss als der Benutzer gestartet werden, in dessen Kontext die Datei genutzt werden soll.\\ +
-<<code powershell>>read-host -assecurestring | convertfrom-securestring | out-file C:\ProgramData\Skripte\etc\creds.txt</code> +
- +
-Das Kennwort des Benutzers eingeben. +
- +
-==== Zusammensetzen von Credentials in einem Skript ====+
 <code powershell> <code powershell>
 $smtpServer = smtp.office365.com  $smtpServer = smtp.office365.com 
Zeile 60: Zeile 21:
 $smtpTo = logs@domain.com  $smtpTo = logs@domain.com 
 $sender = admin@domain.com  $sender = admin@domain.com 
-$password Get-Content 'C:\ProgramData\Skripte\etc\creds.txt' |ConvertTo-SecureString  +$credential=Import-CliXml -Path C:\ProgramData\Skripte\etc\cred.xml
-$Creds = New-Object -TypeName System.Management.Automation.PSCredential -ArgumentList $sender $password+
  
-Send-MailMessage -From $smtpFrom -To $smtpTo -Subject $messagesubject -Body $messagebody -SmtpServer $smtpServer -Credential $Creds -UseSsl -Port 587+Send-MailMessage -From $smtpFrom -To $smtpTo -Subject $messagesubject -Body $messagebody -SmtpServer $smtpServer -Credential $credential -UseSsl -Port 587
 </code> </code>
powershell/allgemein/credentials.1645429420.txt.gz · Zuletzt geändert: 2024/05/27 08:34 (Externe Bearbeitung)

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki