Aufgaben-Python/courses/powershell/12_sicherheit_und_credentials_management/aufgabe.ps1

122 lines
3.7 KiB
PowerShell

<#
.SYNOPSIS
PS 12: Sicherheit, Execution Policies & Secrets Management
.DESCRIPTION
Lerne professionelles Credential- und Sicherheitsmanagement in PowerShell 7+:
- Typensichere PSCredentials mit [SecureString]
- Ver- und Entschlüsselung sensibler Daten
- Sicherheits-Auditierung (ExecutionPolicy & LanguageMode)
- SecretVault-Simulation nach modernem SecretManagement-Standard
#>
# 🎯 TEILZIEL 1 (TODO 1): New-SecureCredentials
<#
.DESCRIPTION
Wandelt einen Benutzernamen und ein Klartextpasswort in ein sicheres [PSCredential]-Objekt um.
Nutzt ConvertTo-SecureString -AsPlainText -Force.
.OUTPUTS
[PSCredential]
#>
function New-SecureCredentials {
[CmdletBinding()]
param(
[Parameter(Mandatory = $true)]
[string]$UserName,
[Parameter(Mandatory = $true)]
[string]$PlainTextPassword
)
# TODO:
# 1. Konvertiere $PlainTextPassword in einen [SecureString] (ConvertTo-SecureString -AsPlainText -Force).
# 2. Erzeuge und gib ein [PSCredential]::new($UserName, $secureString) zurück.
return $null
}
# 🎯 TEILZIEL 2 (TODO 2): Protect-SensitiveString & Unprotect-SensitiveString
<#
.DESCRIPTION
Verschlüsselt einen Klartextstring in einen geschützten Standard-String und entschlüsselt ihn wieder.
#>
function Protect-SensitiveString {
[CmdletBinding()]
param(
[Parameter(Mandatory = $true)]
[string]$PlainText
)
# TODO:
# 1. Konvertiere $PlainText in SecureString.
# 2. Konvertiere den SecureString mit ConvertFrom-SecureString in einen verschlüsselten String.
return ""
}
function Unprotect-SensitiveString {
[CmdletBinding()]
param(
[Parameter(Mandatory = $true)]
[string]$EncryptedString
)
# TODO:
# 1. Wandle $EncryptedString mit ConvertTo-SecureString zurück in einen SecureString.
# 2. Entschlüssele den Klartext via [System.Net.NetworkCredential]::new('', $secStr).Password
return ""
}
# 🎯 TEILZIEL 3 (TODO 3): Get-SecurityAuditReport
<#
.DESCRIPTION
Prüft die aktuelle Sicherheitskonfiguration der PowerShell-Sitzung.
.OUTPUTS
[PSCustomObject]@{
LanguageMode = [string]
ExecutionPolicy = [string]
IsElevated = [bool]
SecurityScore = [int]
Recommendations = [string[]]
}
#>
function Get-SecurityAuditReport {
[CmdletBinding()]
param()
# TODO:
# 1. Ermittle LanguageMode aus $ExecutionContext.SessionState.LanguageMode.
# 2. Ermittle die ExecutionPolicy (Get-ExecutionPolicy).
# 3. Prüfe, ob administrative Rechte vorliegen.
# 4. Berechne einen SecurityScore (0-100) und Empfehlungen.
return $null
}
# 🎯 TEILZIEL 4 (TODO 4): Invoke-SecretVaultSimulation
<#
.DESCRIPTION
Verwaltet einen sicheren Secret Store (Set, Get, Remove, List) auf Basis von SecureString-Verschlüsselung.
.OUTPUTS
Je nach Aktion: [bool], [string] oder [string[]]
#>
function Invoke-SecretVaultSimulation {
[CmdletBinding()]
param(
[Parameter(Mandatory = $true)]
[ValidateSet('Set', 'Get', 'Remove', 'List')]
[string]$Action,
[Parameter()]
[string]$SecretName,
[Parameter()]
[string]$SecretValue,
[Parameter(Mandatory = $true)]
[hashtable]$VaultStorage
)
# TODO:
# Aktion 'Set': Verschlüssele $SecretValue mit Protect-SensitiveString und speichere in $VaultStorage[$SecretName]. Gib $true zurück.
# Aktion 'Get': Hole den verschlüsselten Wert, entschlüssele ihn mit Unprotect-SensitiveString und gib Klartext zurück.
# Aktion 'Remove': Entferne das Secret aus $VaultStorage. Gib $true zurück falls vorhanden, sonst $false.
# Aktion 'List': Gib alle gespeicherten Secret-Namen als Array zurück ($VaultStorage.Keys).
return $null
}