← Portal · Doku · 01 · 02 · 03 · 04 · 05 · 06 05 – Vollständiger Prüfkatalog
Generiert aus catalog.js (Version 1.0.0). 211 Prüffragen in 12 Kapiteln. Alle Befehle sind ausschließlich lesend.
A – Windows Server (13)
Basis des Betriebs: Version, Ressourcen, Netz, Updates, Backup, Umgebungstrennung. Gate: SERVER
A01 Windows-Server-Version, Edition und Build
Antworttyp: version
Warum wichtig? Bestimmt unterstützte IIS-Version, HTTP/2, TLS 1.3, .NET-Runtimes und den Support-Zeitraum.
GUI-/Menüpfad: Einstellungen → System → Info (oder Ausführen: winver)
Lesender Befehl (powershell):
Get-ComputerInfo | Select-Object WindowsProductName, WindowsEditionId, OsVersion, OsBuildNumber, OsArchitecture
Erwartbare Ergebnisse: 2016 = IIS 10.0 (HTTP/2 ja, TLS 1.3 nein). 2019 = IIS 10 v1809. 2022 = IIS 10 mit TLS 1.3, HTTP/3 möglich. 2012 R2 = EOL (Okt 2023) → Blocker für neue Produktion.
Architekturauswirkung: Server < 2016: kein HTTP/2, kein TLS 1.3, eingeschränkte .NET-Unterstützung. EOL-Version = organisatorischer Blocker.
A02 Virtuelle Maschine oder physischer Server?
Antworttyp: single – vm_vmware VM (VMware) · vm_hyperv VM (Hyper-V) · vm_andere VM (andere Plattform) · physisch Physisch · unbekannt Unbekannt
Warum wichtig? Snapshots ermöglichen Rollback vor Deployments und Test-Klone.
GUI-/Menüpfad: Server-Manager → Lokaler Server → Hardware / Geräte-Manager
Lesender Befehl (powershell):
Get-CimInstance Win32_ComputerSystem | Select-Object Manufacturer, Model, TotalPhysicalMemory
Erwartbare Ergebnisse: „VMware, Inc.“ / „Microsoft Corporation – Virtual Machine“ = VM.
Architekturauswirkung: VM: Snapshot-basiertes Rollback als Deployment-Sicherheitsnetz möglich (Abstimmung mit IT).
A03 CPU-Kerne und Arbeitsspeicher
Antworttyp: text
Warum wichtig? Grenzt die Zahl paralleler App-Pools, Worker-Prozesse und In-Memory-Caches ein.
GUI-/Menüpfad: Task-Manager → Leistung
Lesender Befehl (powershell):
Get-CimInstance Win32_ComputerSystem | Select-Object NumberOfLogicalProcessors, @{n='RAM_GB';e={[math]::Round($_.TotalPhysicalMemory/1GB)}}
Erwartbare Ergebnisse: z. B. 4 Kerne / 8 GB. Unter 4 GB frei: keine zusätzlichen Dienste (Redis, Node) ohne Ausbau.
Architekturauswirkung: Wenig RAM → schlank bleiben: ein App-Pool, Jobs als Scheduled Task statt dauerhafter Dienste.
A04 Laufwerke, freier Speicher, Ablageort für Anwendungen
Antworttyp: text
Warum wichtig? Anwendungsordner, Logs, Uploads und Backups brauchen definierten, überwachten Platz.
GUI-/Menüpfad: Explorer → Dieser PC
Lesender Befehl (powershell):
Get-PSDrive -PSProvider FileSystem | Select-Object Name, @{n='FreeGB';e={[math]::Round($_.Free/1GB,1)}}, @{n='UsedGB';e={[math]::Round($_.Used/1GB,1)}}
Erwartbare Ergebnisse: Datenlaufwerk (D:) für inetpub/Apps üblich. < 10 GB frei = Risiko für Logs/Uploads.
Architekturauswirkung: Bestimmt Upload-Konzept (Dateisystem vs. DB), Log-Rotation und Aufbewahrung.
A05 Welche weiteren Anwendungen laufen auf demselben Server?
Antworttyp: multi – nur_iis Nur IIS/Webanwendungen · andere_web Andere produktive Webanwendungen · db_lokal Datenbankserver lokal · fachanwendungen Fachanwendungen/Dienste Dritter · unbekannt Unbekannt
Warum wichtig? Geteilte Server erhöhen das Risiko von Seiteneffekten (Neustarts, Ports, Ressourcen, Updates).
GUI-/Menüpfad: Server-Manager → Rollen und Features; IIS-Manager → Sites
Lesender Befehl (powershell):
Get-Service | Where-Object Status -eq 'Running' | Where-Object StartType -eq 'Automatic' | Select-Object Name, DisplayName | Sort-Object Name
Erwartbare Ergebnisse: Dienstliste zeigt DB-Server, Fachanwendungen, Agenten.
Architekturauswirkung: Shared Host → eigener App-Pool zwingend, keine serverweiten IIS-Änderungen ohne Abstimmung.
A06 Hostname, FQDN, DNS-Namen, unter denen die Anwendung erreichbar sein soll
Antworttyp: text
Warum wichtig? Bindings, Zertifikat-SAN, Kerberos-SPN, Cookies und PWA-Scope hängen am Hostnamen.
GUI-/Menüpfad: Systemeigenschaften → Computername; DNS-Manager (IT)
Lesender Befehl (powershell):
[System.Net.Dns]::GetHostEntry($env:COMPUTERNAME).HostName; Get-DnsClientServerAddress -AddressFamily IPv4 | Select-Object InterfaceAlias, ServerAddresses
Erwartbare Ergebnisse: FQDN wie srv-web01.intern.example. Ein eigener DNS-Alias (app.intern) ist wünschenswert.
Architekturauswirkung: Ohne eigenen Hostnamen: Betrieb als Unteranwendung (/app) → relative URLs, Cookie-Path, kein eigener PWA-Scope.
A07 Wird ausgehender Verkehr über einen Proxy geleitet?
Antworttyp: ynu – ja Ja · nein Nein · unbekannt Unbekannt
Warum wichtig? Proxy-Pflicht beeinflusst NuGet/npm-Restore auf dem Server, externe APIs und Update-Downloads.
GUI-/Menüpfad: Einstellungen → Netzwerk → Proxy; Internetoptionen → Verbindungen → LAN-Einstellungen
Lesender Befehl (powershell):
netsh winhttp show proxy; [System.Net.WebRequest]::DefaultWebProxy.GetProxy('https://www.microsoft.com')
Erwartbare Ergebnisse: „Direkter Zugriff“ = kein Proxy. Sonst Proxy-Adresse; Auth-Proxys blockieren Dienste ohne Anmeldedaten.
Architekturauswirkung: Proxy → alle Server-Prozesse (App-Pool, Dienste) müssen Proxy explizit kennen; Builds nicht auf dem Server.
A08 Ausgehender Internetzugriff vom Server
Antworttyp: single – frei Frei (HTTPS) · proxy_allowlist Nur über Proxy/Allowlist · keiner Kein Internetzugriff · unbekannt Unbekannt
Warum wichtig? Entscheidet, ob Paketquellen, CDNs, externe APIs oder Zertifikatsdienste vom Server erreichbar sind.
GUI-/Menüpfad: Browser auf dem Server: https://api.nuget.org/v3/index.json aufrufen
Lesender Befehl (powershell):
Test-NetConnection api.nuget.org -Port 443 | Select-Object ComputerName, TcpTestSucceeded; Test-NetConnection registry.npmjs.org -Port 443 | Select-Object TcpTestSucceeded
Erwartbare Ergebnisse: TcpTestSucceeded True = erreichbar. False = geblockt → Self-Contained-Deployments, keine Runtime-Downloads.
Architekturauswirkung: Kein Internet → alle Assets self-hosted, Builds auf Entwicklungsrechnern, Runtimes per Installer durch IT.
A09 Firewall-Rahmen (eingehend)
Antworttyp: multi – nur_80_443 Nur 80/443 eingehend erlaubt · weitere_ports Weitere Ports freischaltbar (Antrag) · zentrale_fw Zentrale Firewall vor dem Server · lokale_fw_aktiv Windows-Firewall aktiv · unbekannt Unbekannt
Warum wichtig? Zusätzliche Dienste (Kestrel-Port, Node, Redis, WebSocket-Server) brauchen Freischaltungen.
GUI-/Menüpfad: Windows Defender Firewall mit erweiterter Sicherheit → Eingehende Regeln
Lesender Befehl (powershell):
Get-NetFirewallProfile | Select-Object Name, Enabled, DefaultInboundAction; Get-NetFirewallRule -Enabled True -Direction Inbound -Action Allow | ForEach-Object { $p = $_ | Get-NetFirewallPortFilter; [pscustomobject]@{Rule=$_.DisplayName; Port=$p.LocalPort; Proto=$p.Protocol} } | Where-Object { $_.Port -and $_.Port -ne 'Any' } | Sort-Object Port -Unique
Erwartbare Ergebnisse: Typisch: 80, 443, 3389, 5985. Alles Weitere = Antrag.
Architekturauswirkung: Nur 80/443 → alles hinter IIS (In-Process/ARR), kein direkter Zugriff auf Kestrel/Node-Ports.
A10 Update-Prozess des Servers
Antworttyp: single – wsus_automatisch WSUS/automatisch mit Wartungsfenster · manuell Manuell durch IT · keiner Kein geregelter Prozess · unbekannt Unbekannt
Warum wichtig? Neustarts und Patchstände wirken auf Verfügbarkeit, Runtime-Sicherheitsupdates (Hosting Bundle) und Testfenster.
GUI-/Menüpfad: Einstellungen → Windows Update → Updateverlauf
Lesender Befehl (powershell):
Get-HotFix | Sort-Object InstalledOn -Descending | Select-Object -First 5 HotFixID, InstalledOn
Erwartbare Ergebnisse: Letzte Updates < 60 Tage = gepflegt. Ältere Stände → Sicherheitsrisiko, Klärung.
Architekturauswirkung: Runtime-Updates (.NET) müssen in den Patchprozess integriert werden; Application Initialization für Warmstart nach Reboot.
A11 Backup/Restore des Servers
Antworttyp: single – vm_snapshot VM-Backup/Snapshots · agent_backup Agentenbasiertes Backup (Veeam, Commvault, …) · windows_backup Windows Server Backup · keins Kein Backup · unbekannt Unbekannt
Warum wichtig? Ohne belastbares Restore keine Produktionsfreigabe für operative Daten.
GUI-/Menüpfad: Backup-Konsole der IT; Server-Manager → Tools → Windows Server-Sicherung
Lesender Befehl (powershell):
Get-Service | Where-Object DisplayName -match 'Backup|Veeam|Acronis|Commvault|Arcserve' | Select-Object Name, DisplayName, Status; wbadmin get versions
Erwartbare Ergebnisse: Backup-Agent-Dienst aktiv oder wbadmin-Versionen vorhanden. Wichtig: Wurde ein Restore je getestet?
Architekturauswirkung: Backup-Konzept muss App-Ordner, Uploads, Konfiguration und DB konsistent abdecken.
A12 Vorhandene DEV/TEST/PROD-Trennung
Antworttyp: single – drei_umgebungen DEV, TEST und PROD getrennt · test_und_prod TEST und PROD · nur_prod Nur PROD · unbekannt Unbekannt
Warum wichtig? Bestimmt, ob Änderungen vor Produktion realistisch verprobt werden können.
GUI-/Menüpfad: Serverliste/CMDB der IT; IIS-Manager → Sites (Test-Site vorhanden?)
Lesender Befehl (powershell):
Get-IISSite | Select-Object Name, State, @{n='Bindings';e={($_.Bindings | ForEach-Object bindingInformation) -join '; '}}
Erwartbare Ergebnisse: Separater Test-Server ideal; Test-Site auf demselben Server akzeptabel; nur PROD = hohes Risiko.
Architekturauswirkung: Nur PROD → Feature-Flags, Blue/Green per Ordnerwechsel, konservative Releases.
A13 Wartungsfenster und Neustartmöglichkeiten
Antworttyp: text
Warum wichtig? IIS-Rollen-Installationen und Hosting-Bundle-Updates erfordern teils IIS-Neustart.
GUI-/Menüpfad: Betriebsvereinbarung / Change-Prozess der IT
Lesender Befehl (text):
(organisatorische Frage – kein Befehl)
Erwartbare Ergebnisse: z. B. „Dienstag 18–20 Uhr nach Ankündigung“ oder „jederzeit nach Absprache“.
Architekturauswirkung: Bestimmt Deploymentfrequenz und ob Zero-Downtime-Verfahren nötig sind.
B – Active Directory (12)
Authentifizierung, SSO, Gruppen, Service-Konten, Zugriff der App-Pool-Identität. Gate: SECURITY
B01 Ist der Webserver Mitglied der AD-Domäne?
Antworttyp: ynu – ja Ja · nein Nein · unbekannt Unbekannt
Warum wichtig? Voraussetzung für Windows Authentication, gMSA, Kerberos und gruppenbasierte Autorisierung.
GUI-/Menüpfad: Systemeigenschaften → Computername → Domäne
Lesender Befehl (powershell):
Get-CimInstance Win32_ComputerSystem | Select-Object Name, Domain, PartOfDomain
Erwartbare Ergebnisse: PartOfDomain True + Domänenname.
Architekturauswirkung: Nein → nur Forms/LDAP-Bind-Auth, keine integrierte Windows-Authentifizierung.
B02 Domänencontroller erreichbar, Domänenname, Standort
Antworttyp: text
Warum wichtig? LDAP/Kerberos-Erreichbarkeit vom Webserver ist Voraussetzung für SSO und Gruppenabfragen.
GUI-/Menüpfad: Active Directory-Benutzer und -Computer (IT)
Lesender Befehl (cmd):
nltest /dsgetdc:$env:USERDNSDOMAIN
Erwartbare Ergebnisse: DC-Name, Adresse, Site. Fehler = Netz-/DNS-Problem.
Architekturauswirkung: Legt Ziel für LDAP-Abfragen und SPN-Registrierung fest.
Folgefrage: wird nur angezeigt, wenn v => v('B01') === 'ja'
B03 Ist die IIS-Rolle „Windows-Authentifizierung“ installiert?
Antworttyp: ynu – ja Ja · nein Nein · unbekannt Unbekannt
Warum wichtig? Ermöglicht transparentes SSO für Domänenbenutzer ohne eigene Passwortverwaltung.
GUI-/Menüpfad: Server-Manager → Rollen → Webserver (IIS) → Sicherheit → Windows-Authentifizierung
Lesender Befehl (powershell):
Get-WindowsFeature Web-Windows-Auth | Select-Object Name, InstallState
Erwartbare Ergebnisse: InstallState Installed. „Available“ = installierbar (Antrag an IT).
Architekturauswirkung: Vorhanden → AD-SSO (Negotiate/Kerberos) als bevorzugte Auth. Fehlt → Antrag oder Forms-Auth mit LDAP.
Folgefrage: wird nur angezeigt, wenn v => v('B01') !== 'nein'
B04 Gewünschtes/zulässiges Authentifizierungsmodell für die neue Anwendung
Antworttyp: single – sso_ad Windows-SSO (Negotiate/Kerberos) · forms_ldap Login-Formular mit AD/LDAP-Prüfung · lokale_konten Anwendungseigene Konten · oidc OpenID Connect / Entra ID / ADFS · unbekannt Unbekannt
Warum wichtig? Auth-Modell bestimmt Benutzererlebnis auf mobilen Clients, Sicherheitsfreigabe und Rollenmodell.
GUI-/Menüpfad: Abstimmung mit IT-Security; IIS-Manager → Site → Authentifizierung
Lesender Befehl (powershell):
Get-WebConfiguration -Filter 'system.webServer/security/authentication/*' -PSPath 'IIS:\Sites\Default Web Site' | Select-Object SectionPath, enabled
Erwartbare Ergebnisse: Zeigt, welche Auth-Module an bestehenden Sites aktiv sind (Muster der Organisation).
Architekturauswirkung: SSO muss im realen Zugriffspfad (MobileIron/Tunnel) funktionieren – siehe Kapitel L.
Folgefrage: wird nur angezeigt, wenn v => v('B01') !== 'nein'
B05 Kerberos oder NTLM im praktischen Einsatz?
Antworttyp: single – kerberos Kerberos (SPNs gepflegt) · ntlm Überwiegend NTLM · beides Beides je nach Client · unbekannt Unbekannt
Warum wichtig? Kerberos braucht korrekte SPNs und funktioniert nur bei Hostnamen mit Domänen-Trust; NTLM ist Fallback mit Mehrfach-Roundtrips.
GUI-/Menüpfad: Auf einem Client nach Zugriff auf eine Windows-Auth-Site: Eingabeaufforderung
Lesender Befehl (cmd):
klist | findstr /i HTTP
setspn -Q HTTP/<fqdn-des-webservers>
Erwartbare Ergebnisse: klist zeigt HTTP/-Ticket = Kerberos. Kein Ticket, Zugriff klappt trotzdem = NTLM.
Architekturauswirkung: Eigener DNS-Alias erfordert SPN-Registrierung (IT-Aufgabe). Mobile Clients nutzen häufig nur NTLM oder gar kein SSO.
Folgefrage: wird nur angezeigt, wenn v => v('B03') === 'ja' || v('B04') === 'sso_ad'
B06 Muss die Anwendung mit Benutzeridentität auf Backend-Ressourcen zugreifen (Double Hop / Delegation)?
Antworttyp: ynu – ja Ja · nein Nein · unbekannt Unbekannt
Warum wichtig? Delegation (Kerberos Constrained Delegation) ist aufwendig; meist reicht Zugriff über die Dienstidentität.
GUI-/Menüpfad: AD-Benutzer und -Computer → Computerobjekt → Delegierung (IT)
Lesender Befehl (cmd):
setspn -L <computername>
Erwartbare Ergebnisse: In der Regel „nein“: App greift mit eigenem Service-Konto auf DB/SMB zu.
Architekturauswirkung: Ja → KCD-Konfiguration durch IT; Nein → Service-Konto/gMSA für Backend-Zugriffe.
Folgefrage: wird nur angezeigt, wenn v => v('B04') === 'sso_ad'
B07 LDAP/LDAPS vom Webserver erreichbar?
Antworttyp: single – ldaps_636 LDAPS (636) erreichbar · ldap_389 Nur LDAP (389) · keins Nicht erreichbar · unbekannt Unbekannt
Warum wichtig? Für Gruppenauflösung, Benutzersuche, Forms-Login gegen AD.
GUI-/Menüpfad: IT-Firewall-Regelwerk
Lesender Befehl (powershell):
$dc = (nltest /dsgetdc:$env:USERDNSDOMAIN | Select-String 'DC:').ToString().Split('\\')[-1].Trim(); Test-NetConnection $dc -Port 636 | Select-Object ComputerName, TcpTestSucceeded; Test-NetConnection $dc -Port 389 | Select-Object TcpTestSucceeded
Erwartbare Ergebnisse: 636 True = LDAPS möglich (bevorzugt). Nur 389 = Klartext-LDAP, für Anmeldungen ungeeignet.
Architekturauswirkung: LDAPS → Forms-Auth gegen AD und Gruppenabfragen möglich. Keins → nur Windows-Auth-Token oder lokale Konten.
Folgefrage: wird nur angezeigt, wenn v => v('B01') !== 'nein'
B08 Können AD-Gruppen für Anwendungsrollen angelegt/genutzt werden?
Antworttyp: single – eigene_gruppen Ja, eigene Gruppen je Anwendung/Rolle · bestehende Nur bestehende Gruppen (OE-Gruppen) · nein Nein · unbekannt Unbekannt
Warum wichtig? Gruppenbasierte Autorisierung vermeidet eigene Rollenverwaltung, braucht aber einen Pflegeprozess.
GUI-/Menüpfad: AD-Benutzer und -Computer → OU für Anwendungsgruppen (IT)
Lesender Befehl (cmd):
whoami /groups | findstr /i APP
:: mit RSAT:
powershell -c "Get-ADGroup -Filter \"Name -like '*APP*'\" | Select-Object Name"
Erwartbare Ergebnisse: Konvention wie „APP--“ zeigt Praxis.
Architekturauswirkung: Eigene Gruppen → Rollen = Gruppen. Nur bestehende → Rollenmapping in der App-DB nötig (Single Source of Truth klären).
Folgefrage: wird nur angezeigt, wenn v => v('B01') !== 'nein'
B09 Wer pflegt Gruppenmitgliedschaften und wie schnell?
Antworttyp: text
Warum wichtig? Operative Rollen (z. B. Führungsfunktion) ändern sich schnell – Ticket-Laufzeiten von Tagen sind unbrauchbar.
GUI-/Menüpfad: Prozessdokumentation IT / Servicedesk
Lesender Befehl (text):
(organisatorische Frage)
Erwartbare Ergebnisse: Self-Service, Fachadmin oder IT-Ticket mit SLA.
Architekturauswirkung: Langsame Pflege → operative Rollen in der App halten, AD nur für Grundzugang.
Folgefrage: wird nur angezeigt, wenn v => ['eigene_gruppen', 'bestehende'].includes(v('B08'))
B10 Service Accounts / gMSA für App-Pools und Dienste
Antworttyp: single – gmsa gMSA verfügbar · service_account Klassisches Dienstkonto (Passwort) · keins Nur lokale Identitäten (ApplicationPoolIdentity) · unbekannt Unbekannt
Warum wichtig? gMSA vermeidet Passwortverwaltung und erlaubt Zugriff auf Netzressourcen/DB mit integrierter Auth.
GUI-/Menüpfad: AD-Verwaltungscenter → Verwaltete Dienstkonten (IT)
Lesender Befehl (powershell):
Get-KdsRootKey | Select-Object KeyId, EffectiveTime; Get-ADServiceAccount -Filter * | Select-Object Name
Erwartbare Ergebnisse: KDS-Root-Key vorhanden = gMSA-fähig. Befehle brauchen RSAT/AD-Rechte – sonst IT fragen.
Architekturauswirkung: gMSA → App-Pool und Windows-Service ohne Secrets; Keins → Secrets-Handling (J10) wird kritisch.
Folgefrage: wird nur angezeigt, wenn v => v('B01') !== 'nein'
B11 Darf die App-Pool-Identität auf Netzwerkressourcen (SMB, DB mit integrierter Auth) zugreifen?
Antworttyp: ynu – ja Ja · nein Nein · unbekannt Unbekannt
Warum wichtig? Entscheidet, ob Importe von Netzlaufwerken und Auth ohne Klartext-Passwort möglich sind.
GUI-/Menüpfad: IIS-Manager → Anwendungspools → Erweiterte Einstellungen → Identität
Lesender Befehl (powershell):
Get-IISAppPool | Select-Object Name, @{n='Identity';e={$_.ProcessModel.IdentityType}}, @{n='User';e={$_.ProcessModel.UserName}}
Erwartbare Ergebnisse: ApplicationPoolIdentity greift als Computerkonto (DOMAIN\HOST$) zu – muss auf Freigaben berechtigt werden.
Architekturauswirkung: Nein → Dateiimporte über Upload/Freigabe-Sync-Dienst; DB-Auth per Benutzer/Passwort.
B12 Funktioniert Windows-SSO auch auf mobilen/verwalteten Clients (MobileIron/@Work)?
Antworttyp: ynu – ja Ja · nein Nein · unbekannt Unbekannt
Warum wichtig? Mobile Browser können oft kein Kerberos; ohne Antwort ist SSO als Baseline nicht belastbar.
GUI-/Menüpfad: Test im realen Zugriffspfad: bestehende Windows-Auth-Site vom Smartphone öffnen
Lesender Befehl (text):
(Test am Gerät – Ergebnis dokumentieren: Login-Dialog? Fehler 401? transparent?)
Erwartbare Ergebnisse: Transparente Anmeldung = SSO tunnelfähig. Basic-Dialog/401 = kein SSO auf Mobilgeräten.
Architekturauswirkung: Nein → Auth muss Formular-Fallback oder Token-basierten Weg bieten.
Folgefrage: wird nur angezeigt, wenn v => v('B04') === 'sso_ad'
C – IIS (41)
Detaillierte Bestandsaufnahme des Webservers: Rollen, Sites, Pools, Module, Limits, Delegation. Gate: SERVER
C01 IIS-Version
Antworttyp: version
Warum wichtig? IIS 10 (2016+) bringt HTTP/2, WebSocket, Application Initialization ohne Zusatzmodule.
GUI-/Menüpfad: IIS-Manager → Hilfe → Info
Lesender Befehl (powershell):
Get-ItemProperty 'HKLM:\SOFTWARE\Microsoft\InetStp' | Select-Object MajorVersion, MinorVersion, VersionString, SetupString
Erwartbare Ergebnisse: 10.0 = 2016/2019/2022. 8.5 = 2012 R2 (EOL).
Architekturauswirkung: < 8.0 kein WebSocket; < 10 kein HTTP/2.
C02 Installierte IIS-Rollendienste
Antworttyp: multi – static Statischer Inhalt · default_doc Standarddokument · http_errors HTTP-Fehler · http_logging HTTP-Protokollierung · tracing Ablaufverfolgung (FRT) · static_compression Statische Komprimierung · dynamic_compression Dynamische Komprimierung · request_filtering Anforderungsfilterung · basic_auth Standardauthentifizierung · windows_auth Windows-Authentifizierung · client_cert Clientzertifikat-Auth · ip_restrictions IP- und Domäneneinschränkungen · url_auth URL-Autorisierung · aspnet45 ASP.NET 4.x · net_ext45 .NET-Erweiterbarkeit 4.x · isapi_ext ISAPI-Erweiterungen · isapi_filter ISAPI-Filter · cgi CGI (FastCGI) · websocket WebSocket-Protokoll · appinit Anwendungsinitialisierung · webdav WebDAV-Veröffentlichung · mgmt_console IIS-Verwaltungskonsole · mgmt_service Verwaltungsdienst (Remote) · unbekannt Unbekannt
Warum wichtig? Die Rollendienste sind die harte Grenze, was ohne Antrag nutzbar ist.
GUI-/Menüpfad: Server-Manager → Rollen und Features → Webserver (IIS)
Lesender Befehl (powershell):
Get-WindowsFeature Web-* | Where-Object Installed | Select-Object Name, DisplayName
Erwartbare Ergebnisse: Liste installierter Web-* Features. Fehlende Features sind mit Add-WindowsFeature installierbar (Admin-Aufgabe, nicht hier ausführen).
Architekturauswirkung: Jeder fehlende Dienst = Antrag: WebSocket (Realtime), CGI (PHP/Python), AppInit (Warmstart), Windows-Auth (SSO).
C03 Vorhandene Sites, Zustand, physische Pfade
Antworttyp: text
Warum wichtig? Zeigt Nutzungsmuster und ob Platz für eine eigene Site besteht.
GUI-/Menüpfad: IIS-Manager → Sites
Lesender Befehl (powershell):
Import-Module IISAdministration; Get-IISSite | Select-Object Name, Id, State, @{n='Path';e={$_.Applications['/'].VirtualDirectories['/'].PhysicalPath}}
Erwartbare Ergebnisse: „Default Web Site“ plus Fachanwendungen; Pfade unter C:\inetpub oder D:\Apps.
Architekturauswirkung: Bestimmt Ablageort-Konvention und ob Sites/Apps von Dritten betroffen sein können.
C04 Bindings: Hostnamen, Ports, HTTPS, SNI
Antworttyp: text
Warum wichtig? Hostheader-Bindings erlauben mehrere Anwendungen auf 443; SNI erlaubt mehrere Zertifikate.
GUI-/Menüpfad: IIS-Manager → Site → Bindungen…
Lesender Befehl (powershell):
Get-WebBinding | Select-Object protocol, bindingInformation, sslFlags, certificateHash
Erwartbare Ergebnisse: :443:app.intern mit sslFlags 1 (SNI). Nur :80:* = kein HTTPS.
Architekturauswirkung: Eigenes HTTPS-Binding mit Hostnamen ist Voraussetzung für Secure Cookies, Service Worker, Clipboard-API.
C05 Wie kann die neue Anwendung eingehängt werden?
Antworttyp: single – eigene_site_hostname Eigene Site mit eigenem Hostnamen (HTTPS) · eigene_site_port Eigene Site auf eigenem Port · app_unter_site Als Anwendung unter bestehender Site (/app) · unbekannt Unbekannt
Warum wichtig? Unteranwendungen erben Konfiguration, teilen Cookies/Session-Domain und schränken PWA/Routing ein.
GUI-/Menüpfad: IIS-Manager → Sites → Rechtsklick → Website hinzufügen / Anwendung hinzufügen
Lesender Befehl (powershell):
Get-WebApplication | Select-Object path, applicationPool, PhysicalPath
Erwartbare Ergebnisse: Konvention der Organisation erkennen.
Architekturauswirkung: /app-Betrieb → PathBase/relative Links, keine Root-Cookies, eingeschränkte Isolation; eigener Hostname bevorzugt.
C06 HTTPS vorhanden – Zertifikatsquelle
Antworttyp: single – interne_ca Interne Unternehmens-CA · oeffentliche_ca Öffentliche CA · selbstsigniert Selbstsigniert · kein_https Kein HTTPS · unbekannt Unbekannt
Warum wichtig? Sichere Kontexte (HTTPS) sind Voraussetzung für viele Browser-APIs; interne CAs müssen auf allen Clients (inkl. MDM) vertraut sein.
GUI-/Menüpfad: IIS-Manager → Server → Serverzertifikate
Lesender Befehl (powershell):
Get-ChildItem Cert:\LocalMachine\My | Select-Object Subject, Issuer, NotAfter, HasPrivateKey, Thumbprint; netsh http show sslcert
Erwartbare Ergebnisse: Issuer = interne CA (z. B. CN=Firma-Root-CA). NotAfter in der Zukunft.
Architekturauswirkung: Interne CA → Vertrauensstellung auf MobileIron-Geräten prüfen (Kapitel L). Kein HTTPS → kein Service Worker, kein Secure Cookie.
C07 Zertifikatsprozess: Beantragung, Laufzeit, Verlängerung, Wildcard/SAN
Antworttyp: text
Warum wichtig? Abgelaufene Zertifikate sind die häufigste Ausfallursache interner Webanwendungen.
GUI-/Menüpfad: PKI-Prozess der IT (Zertifikatsvorlagen, Autoenrollment)
Lesender Befehl (powershell):
Get-ChildItem Cert:\LocalMachine\My | Select-Object Subject, NotAfter, @{n='DaysLeft';e={($_.NotAfter - (Get-Date)).Days}}, @{n='SAN';e={($_.Extensions | Where-Object {$_.Oid.FriendlyName -eq 'Subject Alternative Name'}).Format($false)}}
Erwartbare Ergebnisse: Autoenrollment oder Ticket; Laufzeit 1–2 Jahre.
Architekturauswirkung: Ohne Prozess → Monitoring der Ablaufdaten in die Betriebsdoku aufnehmen.
Folgefrage: wird nur angezeigt, wenn v => v('C06') !== 'kein_https'
C08 Application Pools: Runtime, Pipeline, Identität, Start Mode
Antworttyp: text
Warum wichtig? Zeigt, welche Runtimes tatsächlich produktiv laufen und wie Isolation gehandhabt wird.
GUI-/Menüpfad: IIS-Manager → Anwendungspools
Lesender Befehl (powershell):
Get-IISAppPool | Select-Object Name, State, ManagedRuntimeVersion, ManagedPipelineMode, StartMode, @{n='Identity';e={$_.ProcessModel.IdentityType}}, @{n='IdleMin';e={$_.ProcessModel.IdleTimeout.TotalMinutes}}
Erwartbare Ergebnisse: ManagedRuntimeVersion leer = „No Managed Code“ (ASP.NET Core/PHP). v4.0 = .NET Framework.
Architekturauswirkung: Vorhandene No-Managed-Code-Pools deuten auf ASP.NET Core/PHP-Praxis hin.
C09 Kann ein eigener Application Pool für die neue Anwendung angelegt werden?
Antworttyp: ynu – ja Ja · nein Nein · unbekannt Unbekannt
Warum wichtig? Eigener Pool = Prozessisolation, eigene Identität, eigenes Recycling, unabhängige Neustarts.
GUI-/Menüpfad: IIS-Manager → Anwendungspools → Anwendungspool hinzufügen (Rechte prüfen)
Lesender Befehl (powershell):
(Get-IISAppPool).Count; whoami /groups | findstr /i 'IIS_IUSRS Administrators'
Erwartbare Ergebnisse: Organisatorische Zusage der IT dokumentieren.
Architekturauswirkung: Nein → geteilter Pool mit fremden Anwendungen: Recycling/Absturz-Kopplung, Runtime-Zwang.
C10 Verfügbare Pipeline-Modi / CLR-Versionen
Antworttyp: multi – integrated Integrated Pipeline · classic Classic Pipeline · clr4 .NET CLR v4.0 · clr2 .NET CLR v2.0 · no_managed No Managed Code · unbekannt Unbekannt
Warum wichtig? ASP.NET Core braucht „No Managed Code“ + Integrated; .NET Framework braucht CLR v4.0.
GUI-/Menüpfad: IIS-Manager → Anwendungspools → Grundeinstellungen → .NET CLR-Version
Lesender Befehl (powershell):
Get-IISAppPool | Select-Object ManagedRuntimeVersion, ManagedPipelineMode | Sort-Object -Unique ManagedRuntimeVersion, ManagedPipelineMode
Erwartbare Ergebnisse: Fehlt v4.0 → ASP.NET 4.x-Rolle nicht installiert.
Architekturauswirkung: Bestimmt, ob .NET Framework und/oder ASP.NET Core gehostet werden können.
C11 Zulässige App-Pool-Identität für die neue Anwendung
Antworttyp: single – apppool_identity ApplicationPoolIdentity (Standard) · gmsa gMSA · domain_service_account Domänen-Dienstkonto · network_service NetworkService · unbekannt Unbekannt
Warum wichtig? Identität bestimmt Zugriff auf DB (integrierte Auth), Netzfreigaben, Zertifikate, Event Log.
GUI-/Menüpfad: IIS-Manager → Anwendungspools → Erweiterte Einstellungen → Identität
Lesender Befehl (powershell):
Get-IISAppPool | Select-Object Name, @{n='Identity';e={$_.ProcessModel.IdentityType}}, @{n='User';e={$_.ProcessModel.UserName}} | Sort-Object Identity
Erwartbare Ergebnisse: Praxis in der Organisation ableiten.
Architekturauswirkung: Siehe B10/B11: Identität ohne Netzrechte → Importe/Exports nur per Upload oder separatem Dienst.
C12 Dürfen Recycling, Idle-Timeout und Start Mode für den eigenen Pool angepasst werden?
Antworttyp: ynu – ja Ja · nein Nein · unbekannt Unbekannt
Warum wichtig? In-Process-Hintergrundjobs (Hangfire, IHostedService) brauchen Idle-Timeout 0, StartMode AlwaysRunning, Preload – sonst schlafen Jobs ein.
GUI-/Menüpfad: IIS-Manager → Anwendungspools → Erweiterte Einstellungen → Leerlaufzeitlimit / Startmodus / Wiederverwendung
Lesender Befehl (powershell):
Get-IISAppPool | Select-Object Name, StartMode, @{n='IdleMin';e={$_.ProcessModel.IdleTimeout.TotalMinutes}}, @{n='RecycleTime';e={$_.Recycling.PeriodicRestart.Time}}, @{n='RecycleSchedule';e={($_.Recycling.PeriodicRestart.Schedule | ForEach-Object Time) -join ','}}
Erwartbare Ergebnisse: Standard: Idle 20 min, Recycle 1740 min. AlwaysRunning + Idle 0 nur bei bewusster Konfiguration.
Architekturauswirkung: Nein → Hintergrundjobs zwingend außerhalb IIS (Task Scheduler/Windows Service).
C13 Application Initialization (Preload/Warm-up) installiert?
Antworttyp: ynu – ja Ja · nein Nein · unbekannt Unbekannt
Warum wichtig? Verhindert lange erste Antwortzeit nach Recycling/Neustart und hält Jobs am Leben.
GUI-/Menüpfad: Server-Manager → Rollen → Webserver → Anwendungsentwicklung → Anwendungsinitialisierung
Lesender Befehl (powershell):
Get-WindowsFeature Web-AppInit | Select-Object Name, InstallState
Erwartbare Ergebnisse: Installed / Available.
Architekturauswirkung: Fehlt → Warmstart per Scheduled-Task-Ping oder Jobs extern.
C14 Vorhandene Anwendungen und virtuelle Verzeichnisse
Antworttyp: text
Warum wichtig? Zeigt Pfadkonventionen und Kollisionsgefahr (/api, /app).
GUI-/Menüpfad: IIS-Manager → Site → Inhaltsansicht
Lesender Befehl (powershell):
Get-WebApplication | Select-Object @{n='Site';e={$_.GetParentElement().Attributes['name'].Value}}, path, applicationPool, PhysicalPath; Get-WebVirtualDirectory | Select-Object path, PhysicalPath
Erwartbare Ergebnisse: Liste der Pfade; leer = nur Root.
Architekturauswirkung: Pfadnamen der Module dürfen nicht kollidieren; Reverse-Proxy-Regeln auf Pfadebene planbar.
C15 Handler Mappings (welche Runtimes sind verdrahtet?)
Antworttyp: text
Warum wichtig? Handler wie aspNetCore, PHP-FastCGI, ExtensionlessUrlHandler belegen, was wirklich läuft.
GUI-/Menüpfad: IIS-Manager → Server/Site → Handlerzuordnungen
Lesender Befehl (powershell):
& $env:windir\system32\inetsrv\appcmd.exe list config -section:system.webServer/handlers | Select-String 'name=|modules='
Erwartbare Ergebnisse: „aspNetCore“ = Hosting Bundle aktiv; „PHP_via_FastCGI“ = PHP; „StaticFile“ immer vorhanden.
Architekturauswirkung: Fehlende Handler → Runtime ist entweder nicht installiert oder nicht registriert.
C16 MIME-Typen für moderne Assets vorhanden?
Antworttyp: multi – json .json · woff2 .woff2 · webmanifest .webmanifest · svg .svg · wasm .wasm · mjs .mjs · unbekannt Unbekannt
Warum wichtig? Fehlende MIME-Typen liefern 404 für Fonts, Manifest (PWA) oder WebAssembly (Blazor WASM).
GUI-/Menüpfad: IIS-Manager → Server → MIME-Typen
Lesender Befehl (powershell):
& $env:windir\system32\inetsrv\appcmd.exe list config -section:staticContent | Select-String 'json|woff2|webmanifest|svg|wasm|mjs'
Erwartbare Ergebnisse: IIS 10 hat json/woff2/svg meist; webmanifest/wasm/mjs oft nicht.
Architekturauswirkung: Fehlende Typen per web.config ergänzbar, wenn staticContent delegiert ist (C37) – sonst IT-Aufgabe.
C17 Standarddokumente
Antworttyp: text
Warum wichtig? Relevant für statische Landingpages und Ordner-Routing.
GUI-/Menüpfad: IIS-Manager → Site → Standarddokument
Lesender Befehl (powershell):
& $env:windir\system32\inetsrv\appcmd.exe list config -section:defaultDocument
Erwartbare Ergebnisse: Default.htm, index.html, default.aspx …
Architekturauswirkung: Gering; nur für statische Bereiche.
C18 Request Filtering: Limits, Erweiterungen, Hidden Segments
Antworttyp: text
Warum wichtig? Blockiert unbemerkt Uploads > 30 MB, lange URLs, bestimmte Dateiendungen (z. B. .json, .webmanifest) oder Verben.
GUI-/Menüpfad: IIS-Manager → Site → Anforderungsfilterung → Featureeinstellungen bearbeiten
Lesender Befehl (powershell):
& $env:windir\system32\inetsrv\appcmd.exe list config -section:requestFiltering
Erwartbare Ergebnisse: maxAllowedContentLength 30000000 (Standard), maxUrl 4096, maxQueryString 2048, fileExtensions allowUnlisted=true.
Architekturauswirkung: Muss zu Upload-Anforderungen passen; Änderung per web.config nur bei Delegation.
C19 Erlaubte HTTP-Verben
Antworttyp: multi – get_post GET/POST · put PUT · delete DELETE · patch PATCH · options OPTIONS · unbekannt Unbekannt
Warum wichtig? REST-APIs brauchen PUT/DELETE/PATCH; WebDAV-Modul und Verb-Filter blockieren sie häufig mit 405.
GUI-/Menüpfad: IIS-Manager → Anforderungsfilterung → HTTP-Verben
Lesender Befehl (powershell):
& $env:windir\system32\inetsrv\appcmd.exe list config -section:requestFiltering /text:verbs; & $env:windir\system32\inetsrv\appcmd.exe list module WebDAVModule
Erwartbare Ergebnisse: Leere Verb-Liste mit allowUnlisted=true = alles erlaubt. WebDAVModule geladen = PUT/DELETE-Problem.
Architekturauswirkung: Nur GET/POST → API-Design mit POST-Tunneling oder WebDAV-Modul für die App entfernen (web.config, Delegation nötig).
C20 Komprimierung
Antworttyp: multi – static Statisch aktiv · dynamic Dynamisch aktiv · keine Keine · unbekannt Unbekannt
Warum wichtig? Dynamische Komprimierung puffert Antworten und bricht Server-Sent Events/Streaming; statische spart Bandbreite über Tunnel.
GUI-/Menüpfad: IIS-Manager → Server → Komprimierung
Lesender Befehl (powershell):
& $env:windir\system32\inetsrv\appcmd.exe list config -section:urlCompression; & $env:windir\system32\inetsrv\appcmd.exe list config -section:httpCompression | Select-String 'mimeType|dynamicTypes|staticTypes'
Erwartbare Ergebnisse: doStaticCompression true typisch; doDynamicCompression nur bei installierter Rolle.
Architekturauswirkung: SSE erfordert Deaktivierung dynamischer Komprimierung für den Stream-Endpunkt.
C21 Output-/Kernel-Caching aktiv?
Antworttyp: ynu – ja Ja · nein Nein · unbekannt Unbekannt
Warum wichtig? Caching kann dynamische, benutzerabhängige Inhalte fälschlich ausliefern.
GUI-/Menüpfad: IIS-Manager → Site → Ausgabezwischenspeicherung
Lesender Befehl (powershell):
& $env:windir\system32\inetsrv\appcmd.exe list config -section:caching
Erwartbare Ergebnisse: enabled true, enableKernelCache true (Standard). Keine Regeln = kein Effekt auf dynamische Inhalte.
Architekturauswirkung: Cache-Control-Header konsequent setzen; keine benutzerabhängigen Antworten cachen.
C22 Aktive Authentifizierungsmodule an bestehenden Sites
Antworttyp: multi – anonymous Anonym · windows Windows · basic Standard (Basic) · forms Formular · client_cert Clientzertifikat · unbekannt Unbekannt
Warum wichtig? Zeigt, welche Modelle die Organisation produktiv einsetzt und was die Clients (MDM) bereits bewältigen.
GUI-/Menüpfad: IIS-Manager → Site → Authentifizierung
Lesender Befehl (powershell):
Get-WebConfiguration -Filter 'system.webServer/security/authentication/*' -PSPath 'IIS:\' -Recurse | Select-Object PSPath, SectionPath, enabled | Where-Object enabled
Erwartbare Ergebnisse: Anonym + Windows an internen Apps üblich.
Architekturauswirkung: Praxis der Organisation als Ausgangspunkt für B04.
C23 URL-Autorisierung (Authorization Rules) verfügbar?
Antworttyp: ynu – ja Ja · nein Nein · unbekannt Unbekannt
Warum wichtig? Ermöglicht Gruppenschutz ganzer Pfade ohne Anwendungscode.
GUI-/Menüpfad: IIS-Manager → Site → Autorisierungsregeln
Lesender Befehl (powershell):
Get-WindowsFeature Web-Url-Auth | Select-Object InstallState; & $env:windir\system32\inetsrv\appcmd.exe list config -section:system.webServer/security/authorization
Erwartbare Ergebnisse: Installed + Regeln „Allow All Users“ (Standard).
Architekturauswirkung: Sinnvoll für Admin-Bereiche/Dashboards; ersetzt keine fachliche Autorisierung.
C24 IP-/Domäneneinschränkungen im Einsatz?
Antworttyp: ynu – ja Ja · nein Nein · unbekannt Unbekannt
Warum wichtig? Kann Zugriffe aus VPN-/Tunnel-Segmenten unbeabsichtigt blockieren.
GUI-/Menüpfad: IIS-Manager → Site → IP-Adressen- und Domäneneinschränkungen
Lesender Befehl (powershell):
& $env:windir\system32\inetsrv\appcmd.exe list config -section:ipSecurity
Erwartbare Ergebnisse: Leer = keine Einschränkung.
Architekturauswirkung: Regeln müssen Tunnel-/VPN-Quelladressen berücksichtigen (Kapitel L).
C25 IIS-Logging: Format, Pfad, Felder, Rotation
Antworttyp: text
Warum wichtig? Zugriffsprotokolle für Fehleranalyse und Audit; W3C mit X-Forwarded-For nötig hinter Proxys.
GUI-/Menüpfad: IIS-Manager → Server/Site → Protokollierung
Lesender Befehl (powershell):
Get-WebConfigurationProperty -Filter system.applicationHost/sites/siteDefaults/logFile -Name directory, logFormat, period, enabled, logExtFileFlags | Format-List
Erwartbare Ergebnisse: W3C, täglich, %SystemDrive%\inetpub\logs\LogFiles.
Architekturauswirkung: Aufbewahrung/Löschung klären (I05); Client-IP hinter Tunnel ggf. Gateway-IP.
C26 Failed Request Tracing verfügbar?
Antworttyp: ynu – ja Ja · nein Nein · unbekannt Unbekannt
Warum wichtig? Wichtigstes Werkzeug zur Diagnose von 500/401/Handler-Problemen ohne Codeänderung.
GUI-/Menüpfad: IIS-Manager → Site → Ablaufverfolgungsregeln für Anforderungsfehler
Lesender Befehl (powershell):
Get-WindowsFeature Web-Http-Tracing | Select-Object InstallState
Erwartbare Ergebnisse: Installed / Available.
Architekturauswirkung: Fehlt → Diagnose nur über App-Logs; Antrag empfehlenswert.
C27 WebSocket-Protokoll installiert?
Antworttyp: ynu – ja Ja · nein Nein · unbekannt Unbekannt
Warum wichtig? Voraussetzung für SignalR über WebSockets, Blazor Server und Live-Dashboards ohne Polling.
GUI-/Menüpfad: Server-Manager → Rollen → Webserver → Anwendungsentwicklung → WebSocket-Protokoll
Lesender Befehl (powershell):
Get-WindowsFeature Web-WebSockets | Select-Object InstallState; & $env:windir\system32\inetsrv\appcmd.exe list config -section:system.webServer/webSocket
Erwartbare Ergebnisse: Installed + enabled=true.
Architekturauswirkung: Serverseitig ja ≠ Ende-zu-Ende ja: Tunnel/MDM müssen WebSockets ebenfalls durchlassen (Client-Test).
C28 URL Rewrite Modul installiert?
Antworttyp: ynu – ja Ja · nein Nein · unbekannt Unbekannt
Warum wichtig? Für HTTPS-Redirects, saubere URLs, SPA-Fallback und Header-Manipulation.
GUI-/Menüpfad: IIS-Manager → Site → URL Rewrite (Symbol vorhanden?)
Lesender Befehl (powershell):
Get-WebGlobalModule | Where-Object Name -like '*Rewrite*' | Select-Object Name, Image
Erwartbare Ergebnisse: RewriteModule mit Pfad rewrite.dll.
Architekturauswirkung: Fehlt → Redirects/Routing in der Anwendung lösen; Antrag (kostenloses Microsoft-Modul, Installer nötig).
C29 Application Request Routing (ARR) / Reverse Proxy
Antworttyp: single – installiert_proxy_an Installiert, Proxy aktiviert · installiert_proxy_aus Installiert, Proxy deaktiviert · nicht_installiert Nicht installiert · unbekannt Unbekannt
Warum wichtig? ARR erlaubt, Kestrel/Node/andere Dienste hinter IIS auf 443 zu betreiben.
GUI-/Menüpfad: IIS-Manager → Server → Application Request Routing Cache → Server Proxy Settings
Lesender Befehl (powershell):
Get-WebGlobalModule | Where-Object Name -like '*ApplicationRequestRouting*'; & $env:windir\system32\inetsrv\appcmd.exe list config -section:system.webServer/proxy
Erwartbare Ergebnisse: Modul vorhanden + proxy enabled=true.
Architekturauswirkung: Aktiv → Reverse-Proxy-Architekturen (Out-of-Process, Node, Python) möglich; sonst nur In-Process-Hosting.
C30 Ist ein Reverse Proxy auf lokale Dienste (Kestrel/Node/Python) organisatorisch erlaubt?
Antworttyp: ynu – ja Ja · nein Nein · unbekannt Unbekannt
Warum wichtig? Technische Verfügbarkeit von ARR heißt nicht, dass zusätzliche lokale Listener zugelassen sind.
GUI-/Menüpfad: Abstimmung IT-Betrieb/Security
Lesender Befehl (text):
(organisatorische Frage)
Erwartbare Ergebnisse: Ja / Nein / nur für bestimmte Dienste.
Architekturauswirkung: Nein → Stack auf IIS-native Hosting-Modelle beschränken (ASP.NET Core In-Process, .NET Framework, PHP-FastCGI).
Folgefrage: wird nur angezeigt, wenn v => v('C29') !== 'nicht_installiert'
C31 FastCGI-Konfiguration
Antworttyp: text
Warum wichtig? PHP und Python (wfastcgi) laufen unter IIS über FastCGI; die Einträge zeigen Versionen und Limits.
GUI-/Menüpfad: IIS-Manager → Server → FastCGI-Einstellungen
Lesender Befehl (powershell):
& $env:windir\system32\inetsrv\appcmd.exe list config -section:system.webServer/fastCgi
Erwartbare Ergebnisse: fullPath zu php-cgi.exe/python.exe, instanceMaxRequests, activityTimeout.
Architekturauswirkung: Leer → Runtime zwar installiert, aber nicht an IIS angebunden (Admin-Aufgabe).
Folgefrage: wird nur angezeigt, wenn v => present(v, 'D_php') || present(v, 'D_python')
C32 ISAPI- und CGI-Einschränkungen
Antworttyp: text
Warum wichtig? Nicht freigegebene Erweiterungen (php-cgi, ASP.NET) liefern 404.2.
GUI-/Menüpfad: IIS-Manager → Server → ISAPI- und CGI-Einschränkungen
Lesender Befehl (powershell):
& $env:windir\system32\inetsrv\appcmd.exe list config -section:isapiCgiRestriction
Erwartbare Ergebnisse: allowed="true" für benötigte Pfade; notListedCgisAllowed false (Standard).
Architekturauswirkung: Serverweite Freigabe = Admin-Aufgabe; Delegation nicht möglich.
C33 WebDAV
Antworttyp: single – installiert_aktiv Installiert und aktiv · installiert_inaktiv Installiert, nicht aktiv · nicht Nicht installiert · unbekannt Unbekannt
Warum wichtig? Das WebDAV-Modul beantwortet PUT/DELETE mit 405 und bricht REST-APIs.
GUI-/Menüpfad: IIS-Manager → Module → WebDAVModule
Lesender Befehl (powershell):
Get-WindowsFeature Web-DAV-Publishing | Select-Object InstallState; & $env:windir\system32\inetsrv\appcmd.exe list module WebDAVModule
Erwartbare Ergebnisse: Nicht installiert ideal.
Architekturauswirkung: Installiert → in web.config der App Modul/Handler entfernen (nur bei Delegation) oder Verben auf POST beschränken.
C34 Rolle „Statischer Inhalt“ installiert?
Antworttyp: ynu – ja Ja · nein Nein · unbekannt Unbekannt
Warum wichtig? Ohne diese Rolle liefert IIS keine CSS/JS/Bilder aus.
GUI-/Menüpfad: Server-Manager → Rollen → Webserver → Allgemeine HTTP-Features → Statischer Inhalt
Lesender Befehl (powershell):
Get-WindowsFeature Web-Static-Content | Select-Object InstallState
Erwartbare Ergebnisse: Installed (fast immer).
Architekturauswirkung: Fehlt → Blocker für jede Webanwendung.
C35 Upload-/Request-Limits (maxAllowedContentLength, maxRequestLength, uploadReadAheadSize)
Antworttyp: text
Warum wichtig? Bestimmt maximale Upload-Größe (Fotos, Excel-Importe) und Verhalten bei Client-Zertifikaten.
GUI-/Menüpfad: IIS-Manager → Anforderungsfilterung → Featureeinstellungen; Konfigurations-Editor → system.webServer/serverRuntime
Lesender Befehl (powershell):
& $env:windir\system32\inetsrv\appcmd.exe list config -section:requestFiltering /text:requestLimits.maxAllowedContentLength; & $env:windir\system32\inetsrv\appcmd.exe list config -section:serverRuntime /text:uploadReadAheadSize
Erwartbare Ergebnisse: 30000000 Byte (≈28,6 MB) und 49152 (Standard).
Architekturauswirkung: Größere Uploads → Chunked Upload im Client oder Limit-Erhöhung (Delegation/Admin).
C36 Timeouts: connectionTimeout, executionTimeout, activityTimeout
Antworttyp: text
Warum wichtig? Lange Berichte, Importe, SSE-Streams und Downloads über Tunnel brechen bei knappen Timeouts ab.
GUI-/Menüpfad: IIS-Manager → Site → Erweiterte Einstellungen → Grenzwerte → Verbindungstimeout
Lesender Befehl (powershell):
Get-WebConfigurationProperty -Filter system.applicationHost/sites/siteDefaults/limits -Name connectionTimeout; & $env:windir\system32\inetsrv\appcmd.exe list config -section:system.applicationHost/webLimits
Erwartbare Ergebnisse: connectionTimeout 00:02:00 (Standard).
Architekturauswirkung: Lange Operationen asynchron (Job + Statusabfrage) statt langer Requests planen.
C37 Feature-Delegation: Welche Sektionen darf die web.config überschreiben?
Antworttyp: text
Warum wichtig? Entscheidet, ob das App-Team Handler, Module, Auth, Header, MIME und Limits selbst deployen kann – oder jede Änderung ein IT-Ticket ist.
GUI-/Menüpfad: IIS-Manager → Server → Featuredelegierung
Lesender Befehl (powershell):
foreach ($s in 'system.webServer/handlers','system.webServer/modules','system.webServer/security/authentication/windowsAuthentication','system.webServer/security/authentication/anonymousAuthentication','system.webServer/security/requestFiltering','system.webServer/httpProtocol','system.webServer/staticContent','system.webServer/webSocket','system.webServer/urlCompression','system.webServer/rewrite/rules') { [pscustomobject]@{Section=$s; OverrideMode=(Get-WebConfiguration -Filter $s -PSPath 'IIS:\' -Metadata).OverrideMode} }
Erwartbare Ergebnisse: Allow = per web.config änderbar; Deny = gesperrt (Standard für Auth-Sektionen).
Architekturauswirkung: Viele Deny → jede Konfiguration zentral beantragen; Deployment-Paket muss ohne web.config-Sonderlocken auskommen.
C38 Schreibrechte auf Site-Ordner und web.config für das Deployment
Antworttyp: single – deployer Deploy-Konto/Team hat Schreibrechte · nur_admin Nur Administratoren · unbekannt Unbekannt
Warum wichtig? Bestimmt, ob Deployments ohne IT durchführbar sind.
GUI-/Menüpfad: Explorer → Ordner → Eigenschaften → Sicherheit
Lesender Befehl (cmd):
icacls C:\inetpub\wwwroot
Erwartbare Ergebnisse: Gruppen mit (M)/(F) neben Administratoren.
Architekturauswirkung: Nur Admin → Deployment-Übergabe (ZIP + Anleitung) an IT; Release-Frequenz sinkt.
C39 Dürfen eigene HTTP-Header (CSP, HSTS, X-Frame-Options) gesetzt werden?
Antworttyp: ynu – ja Ja · nein Nein · unbekannt Unbekannt
Warum wichtig? Security-Header sind Teil der Freigabe; CSP beeinflusst Inline-Skripte und externe Ressourcen.
GUI-/Menüpfad: IIS-Manager → Site → HTTP-Antwortheader
Lesender Befehl (powershell):
& $env:windir\system32\inetsrv\appcmd.exe list config -section:httpProtocol
Erwartbare Ergebnisse: customHeaders-Liste; Delegation von httpProtocol (C37) entscheidend.
Architekturauswirkung: Header in der Anwendung (Middleware) setzen, dann unabhängig von IIS-Delegation.
C40 Zugriff des App-Teams auf den IIS-Manager
Antworttyp: single – voll Lokaler/voller Zugriff · delegiert Delegierter Remote-Zugriff auf eigene Site · keiner Kein Zugriff · unbekannt Unbekannt
Warum wichtig? Delegierte Verwaltung beschleunigt Betrieb ohne Adminrechte.
GUI-/Menüpfad: IIS-Manager → Server → Verwaltungsdienst / IIS-Manager-Berechtigungen
Lesender Befehl (powershell):
Get-WindowsFeature Web-Mgmt-Service | Select-Object InstallState; Get-Service WMSVC -ErrorAction SilentlyContinue | Select-Object Status, StartType
Erwartbare Ergebnisse: WMSVC Running = Remote-Verwaltung möglich.
Architekturauswirkung: Keiner → Betriebsdiagnose ausschließlich über App-Logs und IT.
C41 HTTP/2 und TLS-Protokolle am Server
Antworttyp: text
Warum wichtig? HTTP/2 verbessert viele kleine Requests über Tunnel; TLS 1.2+ ist Pflicht.
GUI-/Menüpfad: Browser-Devtools → Netzwerk → Protokoll-Spalte (h2)
Lesender Befehl (powershell):
Get-ItemProperty 'HKLM:\SYSTEM\CurrentControlSet\Services\HTTP\Parameters' -ErrorAction SilentlyContinue | Select-Object EnableHttp2Tls, EnableHttp2Cleartext; Get-ChildItem 'HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols' -Recurse -ErrorAction SilentlyContinue | Get-ItemProperty | Select-Object PSPath, Enabled, DisabledByDefault
Erwartbare Ergebnisse: Keine Registry-Werte = Betriebssystem-Standard (2016+: TLS 1.2 an, HTTP/2 an).
Architekturauswirkung: TLS 1.0/1.1 aktiv → Security-Finding; HTTP/2 aus → Asset-Bundling wichtiger.
D – Laufzeiten (29)
Immer unterscheiden: technisch vorhanden / installierbar / administrativ erlaubt / produktiv freigegeben / unbekannt. Gate: SERVER
D_netfx_tech .NET Framework: technischer Status
Antworttyp: single – installiert Technisch vorhanden (installiert) · installierbar Nicht installiert, aber technisch installierbar · nicht_installierbar Nicht installierbar (Technik/Plattform) · unbekannt Unbekannt
Warum wichtig? Basis für klassisches ASP.NET (MVC 5, Web Forms) und viele Bestandsanwendungen.
GUI-/Menüpfad: Systemsteuerung → Programme → Windows-Features
Lesender Befehl (powershell):
Get-ItemProperty 'HKLM:\SOFTWARE\Microsoft\NET Framework Setup\NDP\v4\Full' | Select-Object Version, Release
Erwartbare Ergebnisse: Release ≥ 528040 = 4.8; ≥ 533320 = 4.8.1.
Architekturauswirkung: Vorhanden auf jedem Server 2016+; konservativer Stack (ASP.NET MVC 5) möglich.
D_netfx_org .NET Framework: organisatorischer Status
Antworttyp: single – prod_freigegeben Produktiv freigegeben · erlaubt Administrativ erlaubt, Produktivfreigabe offen · verboten Organisatorisch nicht zulässig · unbekannt Unbekannt
Warum wichtig? Technisch vorhanden heißt nicht produktiv zugelassen. Freigabe entscheidet über die Architektur.
GUI-/Menüpfad: Software-Whitelist / Betriebshandbuch / Anfrage an IT-Betrieb
Lesender Befehl (text):
(organisatorische Frage)
Erwartbare Ergebnisse: Produktiv freigegeben / erlaubt / verboten.
Architekturauswirkung: Nur bei Freigabe als tragende Komponente einplanen.
Folgefrage: wird nur angezeigt, wenn v => v(base + '_tech') !== 'nicht_installierbar'
D_netfx_ver .NET Framework: Version
Antworttyp: version
Warum wichtig? 4.8 ist die letzte Version; ältere Stände sind Sicherheitsrisiko.
GUI-/Menüpfad: wie oben
Lesender Befehl (powershell):
(Get-ItemProperty 'HKLM:\SOFTWARE\Microsoft\NET Framework Setup\NDP\v4\Full').Release
Erwartbare Ergebnisse: 528040+ → 4.8.
Architekturauswirkung: < 4.7.2 → kein .NET Standard 2.0 → Bibliotheksauswahl eingeschränkt.
Folgefrage: wird nur angezeigt, wenn v => v(base + '_tech') === 'installiert'
D_dotnet_tech Moderne .NET Runtime (8/9/10): technischer Status
Antworttyp: single – installiert Technisch vorhanden (installiert) · installierbar Nicht installiert, aber technisch installierbar · nicht_installierbar Nicht installierbar (Technik/Plattform) · unbekannt Unbekannt
Warum wichtig? Grundlage für ASP.NET Core; LTS-Version entscheidet Supportzeitraum.
GUI-/Menüpfad: Systemsteuerung → Programme → „Microsoft .NET Runtime“
Lesender Befehl (cmd):
dotnet --list-runtimes
Erwartbare Ergebnisse: Microsoft.AspNetCore.App 8.0.x / 10.0.x (LTS). Fehlt „dotnet“ → nicht installiert.
Architekturauswirkung: Ohne Runtime: Self-Contained-Publish möglich, aber Sicherheitsupdates liegen dann beim App-Team.
D_dotnet_org Moderne .NET Runtime (8/9/10): organisatorischer Status
Antworttyp: single – prod_freigegeben Produktiv freigegeben · erlaubt Administrativ erlaubt, Produktivfreigabe offen · verboten Organisatorisch nicht zulässig · unbekannt Unbekannt
Warum wichtig? Technisch vorhanden heißt nicht produktiv zugelassen. Freigabe entscheidet über die Architektur.
GUI-/Menüpfad: Software-Whitelist / Betriebshandbuch / Anfrage an IT-Betrieb
Lesender Befehl (text):
(organisatorische Frage)
Erwartbare Ergebnisse: Produktiv freigegeben / erlaubt / verboten.
Architekturauswirkung: Nur bei Freigabe als tragende Komponente einplanen.
Folgefrage: wird nur angezeigt, wenn v => v(base + '_tech') !== 'nicht_installierbar'
D_dotnet_ver Moderne .NET Runtime (8/9/10): Version
Antworttyp: version
Warum wichtig? LTS (8, 10) bevorzugt.
GUI-/Menüpfad: wie oben
Lesender Befehl (cmd):
dotnet --list-runtimes
Erwartbare Ergebnisse: z. B. Microsoft.AspNetCore.App 8.0.12
Architekturauswirkung: Bestimmt Zielframework.
Folgefrage: wird nur angezeigt, wenn v => v(base + '_tech') === 'installiert'
D_hosting_tech ASP.NET Core Hosting Bundle (ANCM): technischer Status
Antworttyp: single – installiert Technisch vorhanden (installiert) · installierbar Nicht installiert, aber technisch installierbar · nicht_installierbar Nicht installierbar (Technik/Plattform) · unbekannt Unbekannt
Warum wichtig? Ohne Hosting Bundle kann IIS keine ASP.NET-Core-Anwendung In-Process starten.
GUI-/Menüpfad: Systemsteuerung → Programme → „Microsoft ASP.NET Core … Hosting Bundle“; IIS-Manager → Module → AspNetCoreModuleV2
Lesender Befehl (powershell):
Get-ItemProperty HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\*, HKLM:\SOFTWARE\WOW6432Node\Microsoft\Windows\CurrentVersion\Uninstall\* | Where-Object DisplayName -like '*ASP.NET Core*Hosting*' | Select-Object DisplayName, DisplayVersion; Get-WebGlobalModule | Where-Object Name -like 'AspNetCoreModule*'
Erwartbare Ergebnisse: AspNetCoreModuleV2 + Hosting Bundle Version.
Architekturauswirkung: Vorhanden → bevorzugter Stack ASP.NET Core In-Process. Fehlt → wichtigster Antrag („Box erweitern“).
D_hosting_org ASP.NET Core Hosting Bundle (ANCM): organisatorischer Status
Antworttyp: single – prod_freigegeben Produktiv freigegeben · erlaubt Administrativ erlaubt, Produktivfreigabe offen · verboten Organisatorisch nicht zulässig · unbekannt Unbekannt
Warum wichtig? Technisch vorhanden heißt nicht produktiv zugelassen. Freigabe entscheidet über die Architektur.
GUI-/Menüpfad: Software-Whitelist / Betriebshandbuch / Anfrage an IT-Betrieb
Lesender Befehl (text):
(organisatorische Frage)
Erwartbare Ergebnisse: Produktiv freigegeben / erlaubt / verboten.
Architekturauswirkung: Nur bei Freigabe als tragende Komponente einplanen.
Folgefrage: wird nur angezeigt, wenn v => v(base + '_tech') !== 'nicht_installierbar'
D_hosting_ver ASP.NET Core Hosting Bundle (ANCM): Version
Antworttyp: version
Warum wichtig? Modul-Version muss zur Runtime passen.
GUI-/Menüpfad: wie oben
Lesender Befehl (powershell):
Get-WebGlobalModule | Where-Object Name -like 'AspNetCoreModule*' | Select-Object Name, Image
Erwartbare Ergebnisse: V2
Architekturauswirkung: Nur V2 unterstützt In-Process-Hosting.
Folgefrage: wird nur angezeigt, wenn v => v(base + '_tech') === 'installiert'
D_hosting_inproc Laufen bereits ASP.NET-Core-Anwendungen (In-Process) produktiv auf diesem IIS?
Antworttyp: ynu – ja Ja · nein Nein · unbekannt Unbekannt
Warum wichtig? Belegt, dass Betrieb, Updates und Deployment für Core bereits eingespielt sind.
GUI-/Menüpfad: IIS-Manager → Anwendungspools (No Managed Code) + web.config der App (aspNetCore hostingModel)
Lesender Befehl (powershell):
Get-ChildItem C:\inetpub -Recurse -Filter web.config -ErrorAction SilentlyContinue | Select-String 'aspNetCore' | Select-Object Path, Line
Erwartbare Ergebnisse: Treffer mit hostingModel="inprocess".
Architekturauswirkung: Ja → geringes Betriebsrisiko für den bevorzugten Stack.
Folgefrage: wird nur angezeigt, wenn v => v('D_hosting_tech') === 'installiert'
D_sdk_tech .NET SDK (auf Server oder Buildrechner): technischer Status
Antworttyp: single – installiert Technisch vorhanden (installiert) · installierbar Nicht installiert, aber technisch installierbar · nicht_installierbar Nicht installierbar (Technik/Plattform) · unbekannt Unbekannt
Warum wichtig? Builds gehören auf Entwicklungs-/Build-Rechner; SDK auf dem Server ist nicht nötig.
GUI-/Menüpfad: Eingabeaufforderung
Lesender Befehl (cmd):
dotnet --list-sdks
Erwartbare Ergebnisse: Auf PROD-Server idealerweise leer.
Architekturauswirkung: SDK nur auf Buildrechnern → Deployment = publizierter Ordner.
D_sdk_org .NET SDK (auf Server oder Buildrechner): organisatorischer Status
Antworttyp: single – prod_freigegeben Produktiv freigegeben · erlaubt Administrativ erlaubt, Produktivfreigabe offen · verboten Organisatorisch nicht zulässig · unbekannt Unbekannt
Warum wichtig? Technisch vorhanden heißt nicht produktiv zugelassen. Freigabe entscheidet über die Architektur.
GUI-/Menüpfad: Software-Whitelist / Betriebshandbuch / Anfrage an IT-Betrieb
Lesender Befehl (text):
(organisatorische Frage)
Erwartbare Ergebnisse: Produktiv freigegeben / erlaubt / verboten.
Architekturauswirkung: Nur bei Freigabe als tragende Komponente einplanen.
Folgefrage: wird nur angezeigt, wenn v => v(base + '_tech') !== 'nicht_installierbar'
D_ps_tech PowerShell: technischer Status
Antworttyp: single – installiert Technisch vorhanden (installiert) · installierbar Nicht installiert, aber technisch installierbar · nicht_installierbar Nicht installierbar (Technik/Plattform) · unbekannt Unbekannt
Warum wichtig? Für Deployment-Skripte, Scheduled Tasks, Importe und Diagnose.
GUI-/Menüpfad: PowerShell-Fenster
Lesender Befehl (powershell):
$PSVersionTable.PSVersion; Get-ExecutionPolicy -List; Get-Command pwsh -ErrorAction SilentlyContinue | Select-Object Version
Erwartbare Ergebnisse: 5.1 immer; pwsh 7.x optional. ExecutionPolicy Restricted/AllSigned = Skripte nur signiert.
Architekturauswirkung: Signaturpflicht → Skripte durch IT signieren lassen oder Jobs als kompilierte Programme.
D_ps_org PowerShell: organisatorischer Status
Antworttyp: single – prod_freigegeben Produktiv freigegeben · erlaubt Administrativ erlaubt, Produktivfreigabe offen · verboten Organisatorisch nicht zulässig · unbekannt Unbekannt
Warum wichtig? Technisch vorhanden heißt nicht produktiv zugelassen. Freigabe entscheidet über die Architektur.
GUI-/Menüpfad: Software-Whitelist / Betriebshandbuch / Anfrage an IT-Betrieb
Lesender Befehl (text):
(organisatorische Frage)
Erwartbare Ergebnisse: Produktiv freigegeben / erlaubt / verboten.
Architekturauswirkung: Nur bei Freigabe als tragende Komponente einplanen.
Folgefrage: wird nur angezeigt, wenn v => v(base + '_tech') !== 'nicht_installierbar'
D_ps_ver PowerShell: Version
Antworttyp: version
Warum wichtig? PS 7 für moderne Module; 5.1 als Baseline.
GUI-/Menüpfad: wie oben
Lesender Befehl (powershell):
$PSVersionTable.PSVersion
Erwartbare Ergebnisse: 5.1 / 7.x
Architekturauswirkung: Skripte auf 5.1-Kompatibilität halten, solange pwsh fehlt.
Folgefrage: wird nur angezeigt, wenn v => v(base + '_tech') === 'installiert'
D_php_tech PHP: technischer Status
Antworttyp: single – installiert Technisch vorhanden (installiert) · installierbar Nicht installiert, aber technisch installierbar · nicht_installierbar Nicht installierbar (Technik/Plattform) · unbekannt Unbekannt
Warum wichtig? Alternative Runtime unter IIS (FastCGI). Nur relevant, wenn vorhanden oder zulässig.
GUI-/Menüpfad: IIS-Manager → Handlerzuordnungen (PHP_via_FastCGI); Explorer C:\PHP
Lesender Befehl (powershell):
php -v; Get-ChildItem C:\PHP*, 'C:\Program Files\PHP*' -ErrorAction SilentlyContinue | Select-Object FullName
Erwartbare Ergebnisse: Version oder „nicht gefunden“.
Architekturauswirkung: Vorhanden + erlaubt → PHP-Stack als Alternative; sonst PHP-Fragen ausgeblendet.
D_php_org PHP: organisatorischer Status
Antworttyp: single – prod_freigegeben Produktiv freigegeben · erlaubt Administrativ erlaubt, Produktivfreigabe offen · verboten Organisatorisch nicht zulässig · unbekannt Unbekannt
Warum wichtig? Technisch vorhanden heißt nicht produktiv zugelassen. Freigabe entscheidet über die Architektur.
GUI-/Menüpfad: Software-Whitelist / Betriebshandbuch / Anfrage an IT-Betrieb
Lesender Befehl (text):
(organisatorische Frage)
Erwartbare Ergebnisse: Produktiv freigegeben / erlaubt / verboten.
Architekturauswirkung: Verboten → alle PHP-Folgefragen entfallen.
Folgefrage: wird nur angezeigt, wenn v => v(base + '_tech') !== 'nicht_installierbar'
D_php_ver PHP: Version
Antworttyp: version
Warum wichtig? PHP < 8.1 ohne Sicherheitsupdates.
GUI-/Menüpfad: wie oben
Lesender Befehl (cmd):
php -v
Erwartbare Ergebnisse: 8.2+/8.3+.
Architekturauswirkung: EOL-Version = Blocker.
Folgefrage: wird nur angezeigt, wenn v => v(base + '_tech') === 'installiert'
D_php_ext PHP: Extensions (mysqli/pdo_mysql, openssl, mbstring, intl, gd/imagick) und Einschränkungen (disable_functions, open_basedir)
Antworttyp: text
Warum wichtig? Ohne pdo_mysql keine DB, ohne openssl kein TLS zur DB.
GUI-/Menüpfad: php.ini im PHP-Ordner
Lesender Befehl (cmd):
php -m; php -i | findstr /i "disable_functions open_basedir upload_max_filesize post_max_size memory_limit"
Erwartbare Ergebnisse: Modul-Liste; Limits typ. upload 2M/post 8M (zu klein für Fotos).
Architekturauswirkung: Bestimmt Machbarkeit PHP-Stack und Upload-Limits.
Folgefrage: wird nur angezeigt, wenn v => v('D_php_tech') === 'installiert' && notForbidden(v, 'D_php')
D_python_tech Python: technischer Status
Antworttyp: single – installiert Technisch vorhanden (installiert) · installierbar Nicht installiert, aber technisch installierbar · nicht_installierbar Nicht installierbar (Technik/Plattform) · unbekannt Unbekannt
Warum wichtig? Für Importskripte/Jobs oder Web (wfastcgi/Waitress hinter ARR).
GUI-/Menüpfad: Systemsteuerung → Programme
Lesender Befehl (cmd):
python --version; py -0p
Erwartbare Ergebnisse: Version oder Fehler. Beachte Store-Alias „python“ ohne Installation.
Architekturauswirkung: Web-Betrieb unter IIS nur über FastCGI/ARR – meist nicht Erstwahl; für Jobs nutzbar.
D_python_org Python: organisatorischer Status
Antworttyp: single – prod_freigegeben Produktiv freigegeben · erlaubt Administrativ erlaubt, Produktivfreigabe offen · verboten Organisatorisch nicht zulässig · unbekannt Unbekannt
Warum wichtig? Technisch vorhanden heißt nicht produktiv zugelassen. Freigabe entscheidet über die Architektur.
GUI-/Menüpfad: Software-Whitelist / Betriebshandbuch / Anfrage an IT-Betrieb
Lesender Befehl (text):
(organisatorische Frage)
Erwartbare Ergebnisse: Produktiv freigegeben / erlaubt / verboten.
Architekturauswirkung: Nur bei Freigabe als tragende Komponente einplanen.
Folgefrage: wird nur angezeigt, wenn v => v(base + '_tech') !== 'nicht_installierbar'
D_python_ver Python: Version
Antworttyp: version
Warum wichtig? 3.10+ empfohlen.
GUI-/Menüpfad: wie oben
Lesender Befehl (cmd):
python --version
Erwartbare Ergebnisse: 3.x
Architekturauswirkung: Nur unterstützte 3.x-Versionen für Jobs einplanen.
Folgefrage: wird nur angezeigt, wenn v => v(base + '_tech') === 'installiert'
D_node_tech Node.js: technischer Status
Antworttyp: single – installiert Technisch vorhanden (installiert) · installierbar Nicht installiert, aber technisch installierbar · nicht_installierbar Nicht installierbar (Technik/Plattform) · unbekannt Unbekannt
Warum wichtig? Produktiv nur hinter ARR/iisnode relevant; im Build (Tailwind, Bundler) auf Entwicklungsrechnern wichtiger.
GUI-/Menüpfad: Systemsteuerung → Programme
Lesender Befehl (powershell):
node -v; npm -v; Get-WebGlobalModule | Where-Object Name -like '*iisnode*'
Erwartbare Ergebnisse: Version oder Fehler; iisnode selten.
Architekturauswirkung: Auf Server nicht nötig, wenn Assets zur Build-Zeit kompiliert werden (L6).
D_node_org Node.js: organisatorischer Status
Antworttyp: single – prod_freigegeben Produktiv freigegeben · erlaubt Administrativ erlaubt, Produktivfreigabe offen · verboten Organisatorisch nicht zulässig · unbekannt Unbekannt
Warum wichtig? Technisch vorhanden heißt nicht produktiv zugelassen. Freigabe entscheidet über die Architektur.
GUI-/Menüpfad: Software-Whitelist / Betriebshandbuch / Anfrage an IT-Betrieb
Lesender Befehl (text):
(organisatorische Frage)
Erwartbare Ergebnisse: Produktiv freigegeben / erlaubt / verboten.
Architekturauswirkung: Nur bei Freigabe als tragende Komponente einplanen.
Folgefrage: wird nur angezeigt, wenn v => v(base + '_tech') !== 'nicht_installierbar'
D_node_ver Node.js: Version
Antworttyp: version
Warum wichtig? LTS (20/22) für Build-Tooling.
GUI-/Menüpfad: wie oben
Lesender Befehl (cmd):
node -v
Erwartbare Ergebnisse: v20+/v22+
Architekturauswirkung: Build-Toolchain auf LTS festlegen.
Folgefrage: wird nur angezeigt, wenn v => v(base + '_tech') === 'installiert'
D_java_tech Java / Tomcat: technischer Status
Antworttyp: single – installiert Technisch vorhanden (installiert) · installierbar Nicht installiert, aber technisch installierbar · nicht_installierbar Nicht installierbar (Technik/Plattform) · unbekannt Unbekannt
Warum wichtig? Nur relevant, wenn bereits Java-Anwendungen betrieben werden.
GUI-/Menüpfad: Systemsteuerung → Programme; Dienste (Tomcat)
Lesender Befehl (powershell):
java -version; Get-Service | Where-Object Name -like '*Tomcat*' | Select-Object Name, Status
Erwartbare Ergebnisse: Meist nicht vorhanden.
Architekturauswirkung: Ohne Bestand kein Java-Stack einplanen.
D_java_org Java / Tomcat: organisatorischer Status
Antworttyp: single – prod_freigegeben Produktiv freigegeben · erlaubt Administrativ erlaubt, Produktivfreigabe offen · verboten Organisatorisch nicht zulässig · unbekannt Unbekannt
Warum wichtig? Technisch vorhanden heißt nicht produktiv zugelassen. Freigabe entscheidet über die Architektur.
GUI-/Menüpfad: Software-Whitelist / Betriebshandbuch / Anfrage an IT-Betrieb
Lesender Befehl (text):
(organisatorische Frage)
Erwartbare Ergebnisse: Produktiv freigegeben / erlaubt / verboten.
Architekturauswirkung: Nur bei Freigabe als tragende Komponente einplanen.
Folgefrage: wird nur angezeigt, wenn v => v(base + '_tech') !== 'nicht_installierbar'
D_pkg Paketquellen (NuGet/npm/pip): Zugriff von Entwicklungs-/Buildrechnern
Antworttyp: single – frei Öffentliche Feeds erreichbar · intern_feed Nur interner Feed/Proxy (Artifactory, Nexus, Azure Artifacts) · keiner Kein Zugriff · unbekannt Unbekannt
Warum wichtig? Ohne Paketquellen sind moderne Stacks (ASP.NET Core, Tailwind) praktisch nicht baubar.
GUI-/Menüpfad: Auf dem Entwicklungsrechner: Browser https://api.nuget.org/v3/index.json
Lesender Befehl (powershell):
Test-NetConnection api.nuget.org -Port 443 | Select-Object TcpTestSucceeded; Test-NetConnection registry.npmjs.org -Port 443 | Select-Object TcpTestSucceeded; dotnet nuget list source
Erwartbare Ergebnisse: True/True oder interner Feed konfiguriert.
Architekturauswirkung: Keiner → Vendoring/Offline-Feeds; Stack mit minimalen Abhängigkeiten bevorzugen.
D_devtools Auf Entwicklungsrechnern erlaubte Werkzeuge
Antworttyp: multi – vs Visual Studio · vscode VS Code · dotnet_sdk .NET SDK · node Node.js/npm · git Git-Client · docker Docker Desktop · mysql_client MySQL Workbench/CLI · keine_lokale_installation Keine lokale Installation erlaubt · unbekannt Unbekannt
Warum wichtig? Build-Time-Tooling (Tailwind, Bundling, dotnet publish) muss irgendwo erlaubt sein.
GUI-/Menüpfad: Software-Katalog/Whitelist der IT
Lesender Befehl (cmd):
dotnet --list-sdks; node -v; git --version
Erwartbare Ergebnisse: Versionen auf dem Entwicklungsrechner.
Architekturauswirkung: Keine lokale Installation → Build-Server oder CI zwingend (H03).
E – Datenbanken (21)
MySQL im Detail, andere Systeme nur feststellen. MySQL nicht ohne fachlichen Grund ersetzen. Gate: DATABASE
E01 MySQL: genaue Version (oder MariaDB?)
Antworttyp: version
Warum wichtig? Bestimmt JSON-Funktionen, CTE/Window Functions (8.0+), Auth-Plugins, Connector-Kompatibilität und Support.
GUI-/Menüpfad: MySQL Workbench → Server Status
Lesender Befehl (sql):
SELECT VERSION(), @@version_comment;
Erwartbare Ergebnisse: 8.0.x / 8.4 LTS (gut). 5.7 = EOL Okt 2023 (Blocker für Neuentwicklung). „MariaDB“ im Kommentar = anderes Produkt, Connector beachten.
Architekturauswirkung: ≥ 8.0 → CTEs, Window Functions, JSON, Check Constraints nutzbar; 5.7 → Upgrade als Voraussetzung.
E02 MySQL: Host, Port, Standort (gleicher Server? DB-Segment?)
Antworttyp: text
Warum wichtig? Netzpfad IIS → DB muss offen sein; Latenz beeinflusst Antwortzeiten.
GUI-/Menüpfad: Workbench → Verbindungseinstellungen
Lesender Befehl (sql):
SHOW VARIABLES WHERE Variable_name IN ('hostname','port','bind_address');
Erwartbare Ergebnisse: Hostname + 3306; bind_address 127.0.0.1 = nur lokal.
Architekturauswirkung: Nur lokal erreichbar → App muss auf demselben Server laufen oder Firewall-/Bind-Änderung beantragen.
E03 MySQL: TLS-Verschlüsselung
Antworttyp: single – tls_erzwungen TLS erzwungen · tls_optional TLS verfügbar, optional · kein_tls Kein TLS · unbekannt Unbekannt
Warum wichtig? Personenbezogene Daten über das Netz brauchen Transportverschlüsselung.
GUI-/Menüpfad: Workbench → Server Status → SSL
Lesender Befehl (sql):
SHOW VARIABLES WHERE Variable_name IN ('have_ssl','require_secure_transport','tls_version'); SHOW STATUS LIKE 'Ssl_cipher';
Erwartbare Ergebnisse: have_ssl YES; Ssl_cipher nicht leer = aktuelle Verbindung verschlüsselt.
Architekturauswirkung: Kein TLS + DB auf anderem Host → Security-Finding; Connection String SslMode=Required einplanen.
E04 MySQL: Authentifizierungs-Plugin des App-Kontos
Antworttyp: single – caching_sha2 caching_sha2_password · mysql_native mysql_native_password · ldap_pam LDAP/PAM/Windows-Auth-Plugin · unbekannt Unbekannt
Warum wichtig? Alte Connectoren (ODBC 5.x, PHP < 7.4) scheitern an caching_sha2_password.
GUI-/Menüpfad: Workbench → Users and Privileges
Lesender Befehl (sql):
SELECT user, host, plugin FROM mysql.user WHERE user = SUBSTRING_INDEX(CURRENT_USER(),'@',1);
Erwartbare Ergebnisse: caching_sha2_password (8.0-Standard).
Architekturauswirkung: Connector-Version muss passen (MySqlConnector/Pomelo ok; ODBC 8.x ok).
E05 MySQL: Rechte des vorgesehenen App-Kontos
Antworttyp: multi – select SELECT · dml INSERT/UPDATE/DELETE · create_table CREATE/ALTER/DROP TABLE · create_db CREATE DATABASE · create_view CREATE VIEW · trigger TRIGGER · routine CREATE ROUTINE · execute EXECUTE · event EVENT · index INDEX · lock LOCK TABLES · grant GRANT OPTION · unbekannt Unbekannt
Warum wichtig? Migrationen (EF Core, Flyway) brauchen DDL-Rechte; Historisierung per Trigger braucht TRIGGER.
GUI-/Menüpfad: Workbench → Users and Privileges → Schema Privileges
Lesender Befehl (sql):
SHOW GRANTS FOR CURRENT_USER();
Erwartbare Ergebnisse: GRANT ALL ON appdb.* = komfortabel; nur SELECT/DML = Migrationen durch DBA.
Architekturauswirkung: Ohne DDL → Migrations-Skripte als IT-Aufgabe; ohne TRIGGER → Historisierung in der App-Schicht.
E06 Eigenes Schema/Datenbank je Modul anlegbar?
Antworttyp: single – selbst Ja, durch das App-Team · per_antrag Per Antrag durch DBA · nein Nein, ein Schema für alles · unbekannt Unbekannt
Warum wichtig? Modulgrenzen und Single Source of Truth lassen sich mit eigenen Schemas sauber abbilden.
GUI-/Menüpfad: Abstimmung DBA
Lesender Befehl (sql):
SHOW DATABASES;
Erwartbare Ergebnisse: Sichtbare Schemas zeigen die Konvention (z. B. app_).
Architekturauswirkung: Ein Schema für alles → Modultrennung per Tabellenpräfix und klaren Ownership-Regeln.
E07 Wer verwaltet DB-Konten/Rechte und wie lange dauert es?
Antworttyp: text
Warum wichtig? Rollout je Modul braucht Konten; lange Laufzeiten bremsen vertikale Lieferungen.
GUI-/Menüpfad: Prozessdoku DBA/IT
Lesender Befehl (text):
(organisatorische Frage)
Erwartbare Ergebnisse: Name/Rolle, SLA.
Architekturauswirkung: Konten früh für alle geplanten Module beantragen.
E08 Storage Engine / Transaktionen
Antworttyp: single – innodb InnoDB Standard · myisam MyISAM Standard · unbekannt Unbekannt
Warum wichtig? Nur InnoDB bietet Transaktionen, Fremdschlüssel und Zeilensperren – Pflicht für auditierbare Daten.
GUI-/Menüpfad: Workbench → Server Status
Lesender Befehl (sql):
SHOW ENGINES; SHOW VARIABLES LIKE 'default_storage_engine';
Erwartbare Ergebnisse: InnoDB DEFAULT.
Architekturauswirkung: MyISAM → Engine je Tabelle explizit auf InnoDB setzen.
E09 Charset/Collation
Antworttyp: single – utf8mb4 utf8mb4 · utf8 utf8 (3-Byte) · latin1 latin1 · unbekannt Unbekannt
Warum wichtig? utf8mb4 ist Voraussetzung für vollständiges Unicode (Namen, Emojis, Sonderzeichen).
GUI-/Menüpfad: Workbench → Server Status
Lesender Befehl (sql):
SHOW VARIABLES WHERE Variable_name IN ('character_set_server','collation_server');
Erwartbare Ergebnisse: utf8mb4 / utf8mb4_0900_ai_ci (8.0).
Architekturauswirkung: Anders → Charset je Schema/Tabelle explizit setzen.
E10 Event Scheduler aktiv (zeitgesteuerte DB-Jobs)?
Antworttyp: ynu – ja Ja · nein Nein · unbekannt Unbekannt
Warum wichtig? Ermöglicht Aufräum-/Archivierungsjobs ohne externen Scheduler.
GUI-/Menüpfad: Workbench → Server Status
Lesender Befehl (sql):
SHOW VARIABLES LIKE 'event_scheduler';
Erwartbare Ergebnisse: ON/OFF.
Architekturauswirkung: Nur Ergänzung; fachliche Jobs gehören in die Anwendung (reproduzierbar, versioniert).
E11 MySQL: Backup/Restore-Verfahren
Antworttyp: single – dump_regelmaessig Regelmäßiger mysqldump/Enterprise Backup · vm_snapshot Nur VM-Snapshot · keins Kein Backup · unbekannt Unbekannt
Warum wichtig? Point-in-Time-Restore braucht Binlog; VM-Snapshots allein sind für Datenbanken riskant.
GUI-/Menüpfad: Backup-Konsole/DBA
Lesender Befehl (sql):
SHOW VARIABLES WHERE Variable_name IN ('log_bin','binlog_expire_logs_seconds','datadir');
Erwartbare Ergebnisse: log_bin ON = PITR möglich.
Architekturauswirkung: Kein belastbares Backup → Produktionsfreigabe blockiert.
E12 Restore auf Test-Datenbank / Kopie möglich?
Antworttyp: ynu – ja Ja · nein Nein · unbekannt Unbekannt
Warum wichtig? Für Migrationstests und reproduzierbare Berechnungen mit Echtdaten (pseudonymisiert).
GUI-/Menüpfad: Abstimmung DBA
Lesender Befehl (text):
(organisatorische Frage)
Erwartbare Ergebnisse: Ja/Nein.
Architekturauswirkung: Nein → Testdaten synthetisch erzeugen.
E13 max_connections und aktuelle Auslastung
Antworttyp: number
Warum wichtig? Connection Pooling der App darf das Limit nicht sprengen (mehrere Pools/Module!).
GUI-/Menüpfad: Workbench → Server Status
Lesender Befehl (sql):
SHOW VARIABLES LIKE 'max_connections'; SHOW STATUS WHERE Variable_name IN ('Threads_connected','Max_used_connections');
Erwartbare Ergebnisse: 151 Standard.
Architekturauswirkung: Pool-Größe je Modul begrenzen (z. B. 10–20).
E14 MySQL vom IIS-Server erreichbar?
Antworttyp: ynu – ja Ja · nein Nein · unbekannt Unbekannt
Warum wichtig? Grundvoraussetzung.
GUI-/Menüpfad: Auf dem IIS-Server ausführen
Lesender Befehl (powershell):
Test-NetConnection <mysql-host> -Port 3306 | Select-Object ComputerName, TcpTestSucceeded
Erwartbare Ergebnisse: True.
Architekturauswirkung: False → Firewall-Antrag (Blocker).
E15 MySQL von Entwicklungsrechnern erreichbar?
Antworttyp: single – direkt Direkt · vpn Über VPN · nein Nein · unbekannt Unbekannt
Warum wichtig? Entwicklung gegen eine Test-DB braucht Zugriff; sonst lokale DB (Docker/MySQL lokal).
GUI-/Menüpfad: Vom Entwicklungsrechner
Lesender Befehl (powershell):
Test-NetConnection <mysql-host> -Port 3306 | Select-Object TcpTestSucceeded
Erwartbare Ergebnisse: True/False.
Architekturauswirkung: Nein → lokale MySQL-Instanz je Entwickler; Migrationen versioniert.
E16 Verfügbare Connectoren/Treiber
Antworttyp: multi – odbc MySQL ODBC (Server) · mysqlconnector_nuget MySqlConnector/Pomelo (NuGet) · oracle_connector_net MySQL Connector/NET · php_pdo PHP pdo_mysql/mysqli · python_driver Python mysql-connector/PyMySQL · node_driver Node mysql2 · unbekannt Unbekannt
Warum wichtig? NuGet-basierte Treiber brauchen keine Serverinstallation; ODBC muss der Admin installieren.
GUI-/Menüpfad: ODBC-Datenquellen (64-Bit) → Treiber
Lesender Befehl (powershell):
Get-OdbcDriver | Where-Object Name -like '*MySQL*' | Select-Object Name, Platform
Erwartbare Ergebnisse: MySQL ODBC 8.x Unicode Driver oder leer.
Architekturauswirkung: .NET: MySqlConnector via NuGet (keine Serverinstallation nötig).
E17 MySQL: Logging/Audit
Antworttyp: multi – general_log General Log · slow_log Slow Query Log · audit_plugin Audit-Plugin · binlog Binlog · keins Keins · unbekannt Unbekannt
Warum wichtig? DB-seitiges Audit ergänzt, ersetzt aber nicht die fachliche Historisierung.
GUI-/Menüpfad: Workbench → Server Status
Lesender Befehl (sql):
SHOW VARIABLES WHERE Variable_name IN ('general_log','slow_query_log','log_bin'); SHOW PLUGINS;
Erwartbare Ergebnisse: slow_query_log ON sinnvoll.
Architekturauswirkung: Fachliche Historie (alt/neu/Benutzer/Zeit/Quelle) in Anwendungstabellen realisieren.
E18 SQL Server vorhanden/zulässig?
Antworttyp: single – vorhanden_nutzbar Vorhanden und nutzbar · vorhanden_nicht_freigegeben Vorhanden, nicht freigegeben · nicht_vorhanden Nicht vorhanden · unbekannt Unbekannt
Warum wichtig? Nur feststellen – MySQL wird nicht ohne fachlichen Grund ersetzt.
GUI-/Menüpfad: Dienste → SQL Server (…)
Lesender Befehl (powershell):
Get-Service | Where-Object Name -like 'MSSQL*' | Select-Object Name, Status
Erwartbare Ergebnisse: Dienst vorhanden oder leer.
Architekturauswirkung: Nur als Alternativvariante dokumentieren.
E19 PostgreSQL vorhanden/zulässig?
Antworttyp: single – vorhanden_nutzbar Vorhanden und nutzbar · vorhanden_nicht_freigegeben Vorhanden, nicht freigegeben · nicht_vorhanden Nicht vorhanden · unbekannt Unbekannt
Warum wichtig? Nur feststellen.
GUI-/Menüpfad: Dienste → postgresql-x64-…
Lesender Befehl (powershell):
Get-Service | Where-Object Name -like 'postgres*' | Select-Object Name, Status
Erwartbare Ergebnisse: Meist leer.
Architekturauswirkung: Nur „Außerhalb der Box“-Variante.
E20 Weitere Datenhaltung: SQLite-Dateien, LocalDB, Access, Dateien?
Antworttyp: text
Warum wichtig? Zeigt Praxis und ob dateibasierte Speicherung für kleine Module toleriert wird.
GUI-/Menüpfad: —
Lesender Befehl (text):
(Nachfrage bei IT/Fachbereich)
Erwartbare Ergebnisse: Freitext.
Architekturauswirkung: SQLite kann für Prototypen dienen, nicht für Single Source of Truth mit Mehrbenutzer-Schreibzugriff.
E21 Zeitzone von DB und Server
Antworttyp: text
Warum wichtig? Audit-Zeitstempel müssen eindeutig sein (UTC speichern, lokal anzeigen).
GUI-/Menüpfad: Datum/Uhrzeit-Einstellungen
Lesender Befehl (sql):
SHOW VARIABLES LIKE '%time_zone%'; -- PowerShell: (Get-TimeZone).Id
Erwartbare Ergebnisse: SYSTEM / Europe/Berlin.
Architekturauswirkung: Konvention: UTC in DB, Umrechnung in der Anwendung.
F – Schnittstellen (24)
Je Schnittstelle: vorhanden, erreichbar, erlaubt, Authentifizierung, Verantwortlicher, Dokumentation. Gate: NETWORK
F01 Interne REST/HTTPS-APIs anderer Fachsysteme
Antworttyp: single – verfuegbar_erlaubt Vorhanden, erreichbar und erlaubt · verfuegbar_ungeklaert Vorhanden/erreichbar, Nutzung organisatorisch ungeklärt · nicht_erreichbar Vorhanden, aber vom Webserver nicht erreichbar · nicht_vorhanden Nicht vorhanden / nicht zulässig · unbekannt Unbekannt
Warum wichtig? Datenquellen für Importe (Stammdaten, Personal, Fahrzeuge).
GUI-/Menüpfad: Schnittstellenkatalog der IT
Lesender Befehl (powershell):
Invoke-WebRequest https://<api-host>/ -UseBasicParsing -Method Head | Select-Object StatusCode
Erwartbare Ergebnisse: 200/401 = erreichbar; Timeout = Netz.
Architekturauswirkung: Vorhanden → Importe als Hintergrundjob über HTTPS statt Dateiaustausch.
F01_det Interne REST/HTTPS-APIs anderer Fachsysteme: Authentifizierung, Verantwortlicher, Dokumentation
Antworttyp: text
Warum wichtig? Ohne Ansprechpartner und Doku ist eine Schnittstelle nicht betriebsfähig.
GUI-/Menüpfad: —
Lesender Befehl (text):
(Nachfrage)
Erwartbare Ergebnisse: Auth-Verfahren, Name/Team, Link zur Doku.
Architekturauswirkung: Verantwortlicher = Freigabeinstanz für Datenkonsum anderer Module.
Folgefrage: wird nur angezeigt, wenn v => ['verfuegbar_erlaubt', 'verfuegbar_ungeklaert', 'nicht_erreichbar'].includes(v(id))
F02 Zentraler Reverse Proxy / WAF / Gateway vor dem IIS
Antworttyp: single – verfuegbar_erlaubt Vorhanden, erreichbar und erlaubt · verfuegbar_ungeklaert Vorhanden/erreichbar, Nutzung organisatorisch ungeklärt · nicht_erreichbar Vorhanden, aber vom Webserver nicht erreichbar · nicht_vorhanden Nicht vorhanden / nicht zulässig · unbekannt Unbekannt
Warum wichtig? Beeinflusst Header (X-Forwarded-*), Timeouts, WebSockets, Client-IP, Auth-Durchleitung.
GUI-/Menüpfad: Netzwerkdoku/IT
Lesender Befehl (powershell):
Invoke-WebRequest https://<app-host>/ -UseBasicParsing -Method Head | Select-Object -ExpandProperty Headers
Erwartbare Ergebnisse: Server-/Via-Header zeigen Proxy.
Architekturauswirkung: Vorhanden → Forwarded Headers Middleware; WebSocket/SSE am Gateway prüfen (Client-Test).
F02_det Zentraler Reverse Proxy / WAF / Gateway vor dem IIS: Authentifizierung, Verantwortlicher, Dokumentation
Antworttyp: text
Warum wichtig? Ohne Ansprechpartner und Doku ist eine Schnittstelle nicht betriebsfähig.
GUI-/Menüpfad: —
Lesender Befehl (text):
(Nachfrage)
Erwartbare Ergebnisse: Auth-Verfahren, Name/Team, Link zur Doku.
Architekturauswirkung: Verantwortlicher = Freigabeinstanz für Datenkonsum anderer Module.
Folgefrage: wird nur angezeigt, wenn v => ['verfuegbar_erlaubt', 'verfuegbar_ungeklaert', 'nicht_erreichbar'].includes(v(id))
F03 LDAP/LDAPS (aus der Anwendung)
Antworttyp: single – verfuegbar_erlaubt Vorhanden, erreichbar und erlaubt · verfuegbar_ungeklaert Vorhanden/erreichbar, Nutzung organisatorisch ungeklärt · nicht_erreichbar Vorhanden, aber vom Webserver nicht erreichbar · nicht_vorhanden Nicht vorhanden / nicht zulässig · unbekannt Unbekannt
Warum wichtig? Benutzersuche, Gruppenauflösung.
GUI-/Menüpfad: siehe B07
Lesender Befehl (powershell):
Test-NetConnection <dc> -Port 636 | Select-Object TcpTestSucceeded
Erwartbare Ergebnisse: True.
Architekturauswirkung: Siehe B07.
F03_det LDAP/LDAPS (aus der Anwendung): Authentifizierung, Verantwortlicher, Dokumentation
Antworttyp: text
Warum wichtig? Ohne Ansprechpartner und Doku ist eine Schnittstelle nicht betriebsfähig.
GUI-/Menüpfad: —
Lesender Befehl (text):
(Nachfrage)
Erwartbare Ergebnisse: Auth-Verfahren, Name/Team, Link zur Doku.
Architekturauswirkung: Verantwortlicher = Freigabeinstanz für Datenkonsum anderer Module.
Folgefrage: wird nur angezeigt, wenn v => ['verfuegbar_erlaubt', 'verfuegbar_ungeklaert', 'nicht_erreichbar'].includes(v(id))
F04 SMB/Netzlaufwerke (Import/Export-Ablagen)
Antworttyp: single – verfuegbar_erlaubt Vorhanden, erreichbar und erlaubt · verfuegbar_ungeklaert Vorhanden/erreichbar, Nutzung organisatorisch ungeklärt · nicht_erreichbar Vorhanden, aber vom Webserver nicht erreichbar · nicht_vorhanden Nicht vorhanden / nicht zulässig · unbekannt Unbekannt
Warum wichtig? Häufigster Austauschweg für CSV/Excel aus Fachsystemen.
GUI-/Menüpfad: Explorer → Netzlaufwerke
Lesender Befehl (powershell):
Get-SmbMapping; net use; Test-NetConnection <fileserver> -Port 445 | Select-Object TcpTestSucceeded
Erwartbare Ergebnisse: Freigaben und Erreichbarkeit; Zugriff der App-Pool-Identität separat (B11).
Architekturauswirkung: Import-Jobs lesen aus Freigabe; UNC-Pfade statt Laufwerksbuchstaben.
F04_det SMB/Netzlaufwerke (Import/Export-Ablagen): Authentifizierung, Verantwortlicher, Dokumentation
Antworttyp: text
Warum wichtig? Ohne Ansprechpartner und Doku ist eine Schnittstelle nicht betriebsfähig.
GUI-/Menüpfad: —
Lesender Befehl (text):
(Nachfrage)
Erwartbare Ergebnisse: Auth-Verfahren, Name/Team, Link zur Doku.
Architekturauswirkung: Verantwortlicher = Freigabeinstanz für Datenkonsum anderer Module.
Folgefrage: wird nur angezeigt, wenn v => ['verfuegbar_erlaubt', 'verfuegbar_ungeklaert', 'nicht_erreichbar'].includes(v(id))
F05 SMTP/Exchange (Mailversand)
Antworttyp: single – verfuegbar_erlaubt Vorhanden, erreichbar und erlaubt · verfuegbar_ungeklaert Vorhanden/erreichbar, Nutzung organisatorisch ungeklärt · nicht_erreichbar Vorhanden, aber vom Webserver nicht erreichbar · nicht_vorhanden Nicht vorhanden / nicht zulässig · unbekannt Unbekannt
Warum wichtig? Benachrichtigungen, Berichte.
GUI-/Menüpfad: Exchange-Admin/IT
Lesender Befehl (powershell):
Test-NetConnection <smtp-host> -Port 25 | Select-Object TcpTestSucceeded; Test-NetConnection <smtp-host> -Port 587 | Select-Object TcpTestSucceeded
Erwartbare Ergebnisse: Relay-Erlaubnis für Server-IP/Konto klären.
Architekturauswirkung: Vorhanden → E-Mail als Benachrichtigungskanal; sonst Teams-Webhook/In-App.
F05_det SMTP/Exchange (Mailversand): Authentifizierung, Verantwortlicher, Dokumentation
Antworttyp: text
Warum wichtig? Ohne Ansprechpartner und Doku ist eine Schnittstelle nicht betriebsfähig.
GUI-/Menüpfad: —
Lesender Befehl (text):
(Nachfrage)
Erwartbare Ergebnisse: Auth-Verfahren, Name/Team, Link zur Doku.
Architekturauswirkung: Verantwortlicher = Freigabeinstanz für Datenkonsum anderer Module.
Folgefrage: wird nur angezeigt, wenn v => ['verfuegbar_erlaubt', 'verfuegbar_ungeklaert', 'nicht_erreichbar'].includes(v(id))
F06 Microsoft Graph / Microsoft 365
Antworttyp: single – verfuegbar_erlaubt Vorhanden, erreichbar und erlaubt · verfuegbar_ungeklaert Vorhanden/erreichbar, Nutzung organisatorisch ungeklärt · nicht_erreichbar Vorhanden, aber vom Webserver nicht erreichbar · nicht_vorhanden Nicht vorhanden / nicht zulässig · unbekannt Unbekannt
Warum wichtig? Nur relevant bei Entra-ID-Umgebung (Kalender, Teams, Mail).
GUI-/Menüpfad: Entra-Admin-Center (IT)
Lesender Befehl (powershell):
Test-NetConnection graph.microsoft.com -Port 443 | Select-Object TcpTestSucceeded
Erwartbare Ergebnisse: Erreichbar + App-Registrierung möglich?
Architekturauswirkung: Optional; keine Abhängigkeit im Kern.
F06_det Microsoft Graph / Microsoft 365: Authentifizierung, Verantwortlicher, Dokumentation
Antworttyp: text
Warum wichtig? Ohne Ansprechpartner und Doku ist eine Schnittstelle nicht betriebsfähig.
GUI-/Menüpfad: —
Lesender Befehl (text):
(Nachfrage)
Erwartbare Ergebnisse: Auth-Verfahren, Name/Team, Link zur Doku.
Architekturauswirkung: Verantwortlicher = Freigabeinstanz für Datenkonsum anderer Module.
Folgefrage: wird nur angezeigt, wenn v => ['verfuegbar_erlaubt', 'verfuegbar_ungeklaert', 'nicht_erreichbar'].includes(v(id))
F07 Webhooks (eingehend/ausgehend, z. B. Teams)
Antworttyp: single – verfuegbar_erlaubt Vorhanden, erreichbar und erlaubt · verfuegbar_ungeklaert Vorhanden/erreichbar, Nutzung organisatorisch ungeklärt · nicht_erreichbar Vorhanden, aber vom Webserver nicht erreichbar · nicht_vorhanden Nicht vorhanden / nicht zulässig · unbekannt Unbekannt
Warum wichtig? Leichtgewichtige Benachrichtigung/Integration.
GUI-/Menüpfad: —
Lesender Befehl (powershell):
Test-NetConnection <webhook-host> -Port 443 | Select-Object TcpTestSucceeded
Erwartbare Ergebnisse: Ausgehend erlaubt?
Architekturauswirkung: Ausgehende Webhooks als Job (Retry), eingehende nur mit Signaturprüfung.
F07_det Webhooks (eingehend/ausgehend, z. B. Teams): Authentifizierung, Verantwortlicher, Dokumentation
Antworttyp: text
Warum wichtig? Ohne Ansprechpartner und Doku ist eine Schnittstelle nicht betriebsfähig.
GUI-/Menüpfad: —
Lesender Befehl (text):
(Nachfrage)
Erwartbare Ergebnisse: Auth-Verfahren, Name/Team, Link zur Doku.
Architekturauswirkung: Verantwortlicher = Freigabeinstanz für Datenkonsum anderer Module.
Folgefrage: wird nur angezeigt, wenn v => ['verfuegbar_erlaubt', 'verfuegbar_ungeklaert', 'nicht_erreichbar'].includes(v(id))
F08 WebSockets Ende-zu-Ende (Client → Gateway/Tunnel → IIS)
Antworttyp: single – verfuegbar_erlaubt Vorhanden, erreichbar und erlaubt · verfuegbar_ungeklaert Vorhanden/erreichbar, Nutzung organisatorisch ungeklärt · nicht_erreichbar Vorhanden, aber vom Webserver nicht erreichbar · nicht_vorhanden Nicht vorhanden / nicht zulässig · unbekannt Unbekannt
Warum wichtig? Realtime-Dashboards; serverseitige Rolle (C27) allein reicht nicht.
GUI-/Menüpfad: Client Capability Test im realen Zugriffspfad
Lesender Befehl (text):
(siehe Client-Test „WebSocket“)
Erwartbare Ergebnisse: Test-Ergebnis je Clientprofil.
Architekturauswirkung: Nicht Ende-zu-Ende → SSE oder Polling.
F08_det WebSockets Ende-zu-Ende (Client → Gateway/Tunnel → IIS): Authentifizierung, Verantwortlicher, Dokumentation
Antworttyp: text
Warum wichtig? Ohne Ansprechpartner und Doku ist eine Schnittstelle nicht betriebsfähig.
GUI-/Menüpfad: —
Lesender Befehl (text):
(Nachfrage)
Erwartbare Ergebnisse: Auth-Verfahren, Name/Team, Link zur Doku.
Architekturauswirkung: Verantwortlicher = Freigabeinstanz für Datenkonsum anderer Module.
Folgefrage: wird nur angezeigt, wenn v => ['verfuegbar_erlaubt', 'verfuegbar_ungeklaert', 'nicht_erreichbar'].includes(v(id))
F09 Server-Sent Events Ende-zu-Ende
Antworttyp: single – verfuegbar_erlaubt Vorhanden, erreichbar und erlaubt · verfuegbar_ungeklaert Vorhanden/erreichbar, Nutzung organisatorisch ungeklärt · nicht_erreichbar Vorhanden, aber vom Webserver nicht erreichbar · nicht_vorhanden Nicht vorhanden / nicht zulässig · unbekannt Unbekannt
Warum wichtig? Einfachster Push-Kanal (HTTP-Stream), oft tunnelverträglicher als WebSockets.
GUI-/Menüpfad: Client Capability Test
Lesender Befehl (text):
(siehe Client-Test „SSE“)
Erwartbare Ergebnisse: Test-Ergebnis je Clientprofil.
Architekturauswirkung: SSE ok → Live-Updates ohne WebSocket; Puffer-Proxys brechen SSE.
F09_det Server-Sent Events Ende-zu-Ende: Authentifizierung, Verantwortlicher, Dokumentation
Antworttyp: text
Warum wichtig? Ohne Ansprechpartner und Doku ist eine Schnittstelle nicht betriebsfähig.
GUI-/Menüpfad: —
Lesender Befehl (text):
(Nachfrage)
Erwartbare Ergebnisse: Auth-Verfahren, Name/Team, Link zur Doku.
Architekturauswirkung: Verantwortlicher = Freigabeinstanz für Datenkonsum anderer Module.
Folgefrage: wird nur angezeigt, wenn v => ['verfuegbar_erlaubt', 'verfuegbar_ungeklaert', 'nicht_erreichbar'].includes(v(id))
F10 Redis
Antworttyp: single – verfuegbar_erlaubt Vorhanden, erreichbar und erlaubt · verfuegbar_ungeklaert Vorhanden/erreichbar, Nutzung organisatorisch ungeklärt · nicht_erreichbar Vorhanden, aber vom Webserver nicht erreichbar · nicht_vorhanden Nicht vorhanden / nicht zulässig · unbekannt Unbekannt
Warum wichtig? Verteilter Cache/Session-Store – meist nicht vorhanden.
GUI-/Menüpfad: Dienste
Lesender Befehl (powershell):
Test-NetConnection <redis-host> -Port 6379 | Select-Object TcpTestSucceeded
Erwartbare Ergebnisse: Meist nicht vorhanden.
Architekturauswirkung: Nicht vorhanden → In-Memory-Cache je Prozess, Sessions in DB/Cookie.
F10_det Redis: Authentifizierung, Verantwortlicher, Dokumentation
Antworttyp: text
Warum wichtig? Ohne Ansprechpartner und Doku ist eine Schnittstelle nicht betriebsfähig.
GUI-/Menüpfad: —
Lesender Befehl (text):
(Nachfrage)
Erwartbare Ergebnisse: Auth-Verfahren, Name/Team, Link zur Doku.
Architekturauswirkung: Verantwortlicher = Freigabeinstanz für Datenkonsum anderer Module.
Folgefrage: wird nur angezeigt, wenn v => ['verfuegbar_erlaubt', 'verfuegbar_ungeklaert', 'nicht_erreichbar'].includes(v(id))
F11 RabbitMQ / Message Broker / MSMQ
Antworttyp: single – verfuegbar_erlaubt Vorhanden, erreichbar und erlaubt · verfuegbar_ungeklaert Vorhanden/erreichbar, Nutzung organisatorisch ungeklärt · nicht_erreichbar Vorhanden, aber vom Webserver nicht erreichbar · nicht_vorhanden Nicht vorhanden / nicht zulässig · unbekannt Unbekannt
Warum wichtig? Entkopplung zwischen Modulen; in kleinen Umgebungen meist Outbox-Tabelle in MySQL ausreichend.
GUI-/Menüpfad: Dienste
Lesender Befehl (powershell):
Test-NetConnection <broker-host> -Port 5672 | Select-Object TcpTestSucceeded; Get-WindowsFeature MSMQ-Server | Select-Object InstallState
Erwartbare Ergebnisse: Meist nicht vorhanden.
Architekturauswirkung: Nicht vorhanden → Outbox/Polling-Muster über DB.
F11_det RabbitMQ / Message Broker / MSMQ: Authentifizierung, Verantwortlicher, Dokumentation
Antworttyp: text
Warum wichtig? Ohne Ansprechpartner und Doku ist eine Schnittstelle nicht betriebsfähig.
GUI-/Menüpfad: —
Lesender Befehl (text):
(Nachfrage)
Erwartbare Ergebnisse: Auth-Verfahren, Name/Team, Link zur Doku.
Architekturauswirkung: Verantwortlicher = Freigabeinstanz für Datenkonsum anderer Module.
Folgefrage: wird nur angezeigt, wenn v => ['verfuegbar_erlaubt', 'verfuegbar_ungeklaert', 'nicht_erreichbar'].includes(v(id))
F12 Datenaustausch per Datei: Formate und Quellen (Import/Export)
Antworttyp: multi – csv CSV · excel Excel (xlsx) · xml XML · json JSON · pdf_export PDF-Export gefordert · unbekannt Unbekannt
Warum wichtig? Bestimmt Bibliotheken (ClosedXML, CsvHelper) und Validierungsaufwand.
GUI-/Menüpfad: Fachbereich
Lesender Befehl (text):
(Nachfrage)
Erwartbare Ergebnisse: Liste mit Quelle, Rhythmus, Verantwortlichem.
Architekturauswirkung: Import als idempotenter Job mit Protokoll (Quelle, Zeit, Zeilen, Fehler).
F13 Darf die Anwendung ausgehende HTTP-Aufrufe machen?
Antworttyp: single – intern_und_extern Intern und extern · nur_intern Nur intern · keine Keine · unbekannt Unbekannt
Warum wichtig? Grenze für Integrationen, Webhooks, Kartendienste, Lizenzprüfungen.
GUI-/Menüpfad: IT-Security-Richtlinie
Lesender Befehl (powershell):
Test-NetConnection www.microsoft.com -Port 443 | Select-Object TcpTestSucceeded
Erwartbare Ergebnisse: Vom App-Pool-Kontext prüfen (Proxy!).
Architekturauswirkung: Keine → rein interne Architektur, alle Assets lokal.
G – Hintergrundverarbeitung (8)
Belastbarer Weg für automatische Importe, Berechnungen und Benachrichtigungen. Gate: SERVER
G01 Windows Task Scheduler für Anwendungs-Jobs nutzbar?
Antworttyp: single – eigene_tasks Ja, App-Team darf Tasks anlegen · nur_it Nur IT legt Tasks an · nein Nicht zulässig · unbekannt Unbekannt
Warum wichtig? Einfachster belastbarer Weg für zeitgesteuerte Importe/Berechnungen (Konsolenprogramm + Task).
GUI-/Menüpfad: Aufgabenplanung → Aufgabenplanungsbibliothek
Lesender Befehl (powershell):
Get-ScheduledTask | Where-Object { $_.TaskPath -notlike '\Microsoft*' -and $_.State -ne 'Disabled' } | Select-Object TaskName, TaskPath, State, @{n='User';e={$_.Principal.UserId}}
Erwartbare Ergebnisse: Vorhandene Fach-Tasks zeigen Praxis und Konten.
Architekturauswirkung: Nutzbar → Jobs als Konsolen-App (dotnet) mit Task; sonst Windows Service oder In-Process.
G02 Eigener Windows Service installierbar?
Antworttyp: single – ja Ja · per_antrag Per Antrag durch IT · nein Nein · unbekannt Unbekannt
Warum wichtig? Worker Service = robuster Weg für dauerhafte Verarbeitung (Queues, Benachrichtigungen, Berechnungen).
GUI-/Menüpfad: Dienste (services.msc)
Lesender Befehl (powershell):
Get-CimInstance Win32_Service | Where-Object { $_.PathName -notlike '*\Windows\*' } | Select-Object Name, StartMode, State, StartName, PathName
Erwartbare Ergebnisse: Fremd-Dienste mit Konten zeigen Praxis.
Architekturauswirkung: Nein → Task Scheduler (kurz laufende Jobs) oder In-Process mit AlwaysRunning (C12).
G03 Unter welchem Konto dürfen Jobs/Dienste laufen?
Antworttyp: single – gmsa gMSA · service_account Dienstkonto · apppool App-Pool-Identität · lokales_system Lokales System/NetworkService · unbekannt Unbekannt
Warum wichtig? Bestimmt Zugriff auf DB, Freigaben, SMTP.
GUI-/Menüpfad: Aufgabenplanung → Task → Sicherheitsoptionen
Lesender Befehl (powershell):
Get-ScheduledTask | Select-Object TaskName, @{n='User';e={$_.Principal.UserId}}, @{n='LogonType';e={$_.Principal.LogonType}} | Where-Object User
Erwartbare Ergebnisse: gMSA („DOMAIN\svc$“) ideal.
Architekturauswirkung: Siehe B10.
G04 Sind In-Process-Jobs im IIS (Hangfire, IHostedService) zulässig?
Antworttyp: ynu – ja Ja · nein Nein · unbekannt Unbekannt
Warum wichtig? Bequem, aber abhängig von Recycling/Idle-Timeout (C12/C13).
GUI-/Menüpfad: Abstimmung IT
Lesender Befehl (text):
(organisatorische Frage; technisch siehe C12/C13)
Erwartbare Ergebnisse: Ja nur mit AlwaysRunning + Preload + Idle 0.
Architekturauswirkung: Sonst Jobs extern; In-Process nur für unkritische Aufgaben (Cache-Refresh).
G05 Vorgaben zu Laufzeit, Zeitfenstern und Ressourcenlimits für Jobs
Antworttyp: text
Warum wichtig? Nächtliche Importe dürfen Backups/Updates nicht kollidieren.
GUI-/Menüpfad: Betriebshandbuch
Lesender Befehl (text):
(organisatorische Frage)
Erwartbare Ergebnisse: z. B. „nicht 01–03 Uhr (Backup)“.
Architekturauswirkung: Job-Zeitplan; Idempotenz und Wiederaufnahme nach Abbruch.
G06 Neustart-/Wiederherstellungsverhalten von Diensten und Tasks
Antworttyp: text
Warum wichtig? Nach Reboot/Patch müssen Jobs selbst wieder anlaufen.
GUI-/Menüpfad: Dienste → Eigenschaften → Wiederherstellung
Lesender Befehl (cmd):
sc qfailure <dienstname>
Erwartbare Ergebnisse: Restart-Aktionen konfiguriert.
Architekturauswirkung: Recovery-Optionen in Installationsdoku aufnehmen (Admin-Aufgabe).
G07 Monitoring/Alarmierung für Hintergrundjobs
Antworttyp: single – zentral Zentrales Monitoring (PRTG, Zabbix, checkmk, …) · eventlog Nur Event Log · keins Keins · unbekannt Unbekannt
Warum wichtig? Stille Job-Ausfälle sind das größte Betriebsrisiko für Importe/Berechnungen.
GUI-/Menüpfad: Monitoring-Konsole IT
Lesender Befehl (powershell):
Get-Service | Where-Object DisplayName -match 'PRTG|Zabbix|checkmk|SCOM|Nagios|Datadog' | Select-Object Name, Status
Erwartbare Ergebnisse: Agent vorhanden → Health-Endpunkt/Heartbeat anbindbar.
Architekturauswirkung: Keins → Job-Heartbeat-Tabelle + Dashboard-Hinweis „letzter erfolgreicher Lauf“.
G08 Benachrichtigungswege für Nutzer
Antworttyp: multi – smtp E-Mail · teams_webhook Teams/Chat-Webhook · sms SMS-Gateway · push_mdm Push über MDM/App · inapp Nur In-App · keine Keine · unbekannt Unbekannt
Warum wichtig? Benachrichtigungen sind ein Kernnutzen operativer Module.
GUI-/Menüpfad: —
Lesender Befehl (text):
(siehe F05/F07)
Erwartbare Ergebnisse: Liste.
Architekturauswirkung: Kanäle als austauschbare Provider hinter einer Schnittstelle.
H – Deployment (12)
Veröffentlichungsweg, Test, Freigabe, Rollback, Rechte, Wartungsfenster. Gate: SERVER
H01 Aktueller Veröffentlichungsweg
Antworttyp: multi – manuell_kopie Manuelles Kopieren · web_deploy Web Deploy (MSDeploy) · zip_powershell ZIP + PowerShell-Skript · dateifreigabe Dateifreigabe/Drop-Ordner · cicd CI/CD-Pipeline · git_pull Git pull auf dem Server · anderes Anderes · unbekannt Unbekannt
Warum wichtig? Bestimmt Release-Frequenz, Reproduzierbarkeit und Fehlerrisiko.
GUI-/Menüpfad: IT-Betriebshandbuch
Lesender Befehl (powershell):
Get-ItemProperty HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\* | Where-Object DisplayName -like '*Web Deploy*' | Select-Object DisplayName, DisplayVersion; Get-Service MsDepSvc, WMSVC -ErrorAction SilentlyContinue | Select-Object Name, Status
Erwartbare Ergebnisse: Web Deploy 4.0 + WMSVC running = Remote-Publish möglich.
Architekturauswirkung: Manuell → Release-Paket (ZIP, versioniert) + Checkliste; Web Deploy/CI → automatisierte Pipeline.
H02 Git / Quellcodeverwaltung
Antworttyp: single – internes_git Internes Git (GitLab, Gitea, Azure DevOps Server) · extern GitHub/GitLab.com/Azure DevOps Cloud · kein_git Keine Versionsverwaltung · unbekannt Unbekannt
Warum wichtig? Ohne Versionsverwaltung keine Reproduzierbarkeit, kein Rollback auf Codeebene.
GUI-/Menüpfad: —
Lesender Befehl (cmd):
git --version; git remote -v
Erwartbare Ergebnisse: Remote-URL zeigt System.
Architekturauswirkung: Kein Git → Blocker für Teamentwicklung; internes Git als „Box erweitern“.
H03 CI/CD-System vorhanden?
Antworttyp: single – azure_devops Azure DevOps · gitlab_ci GitLab CI · jenkins Jenkins · github_actions GitHub Actions · keins Keins · unbekannt Unbekannt
Warum wichtig? Build-Time-Assets (Tailwind) und reproduzierbare Releases brauchen einen Build-Ort.
GUI-/Menüpfad: —
Lesender Befehl (text):
(Nachfrage IT)
Erwartbare Ergebnisse: System + Agent-Standort (Zugriff auf IIS?).
Architekturauswirkung: Keins → Build auf Entwicklungsrechner mit Skript, Artefakt versioniert ablegen.
H04 Testumgebung für Webanwendungen
Antworttyp: single – eigener_server Eigener Test-Server · eigene_site Test-Site auf demselben Server · keine Keine · unbekannt Unbekannt
Warum wichtig? Siehe A12 – hier konkret für Web/DB.
GUI-/Menüpfad: IIS-Manager → Sites
Lesender Befehl (powershell):
Get-IISSite | Select-Object Name, State
Erwartbare Ergebnisse: Test-Site/-Server.
Architekturauswirkung: Keine → Test-Site beantragen („Box erweitern“, geringer Aufwand).
H05 Freigabeprozess für Produktion
Antworttyp: text
Warum wichtig? Change-Management, Security-Review, Fachfreigabe – Dauer und Beteiligte.
GUI-/Menüpfad: —
Lesender Befehl (text):
(organisatorische Frage)
Erwartbare Ergebnisse: Schritte, Dauer, Formulare.
Architekturauswirkung: Release-Kadenz der Module.
H06 Rollback-Verfahren
Antworttyp: single – vorherige_version_ordner Vorherige Version als Ordner/Paket · vm_snapshot VM-Snapshot · keins Keins · unbekannt Unbekannt
Warum wichtig? Ohne Rollback jede Änderung riskant; DB-Migrationen müssen rückwärtskompatibel sein.
GUI-/Menüpfad: —
Lesender Befehl (text):
(organisatorische Frage)
Erwartbare Ergebnisse: Verfahren.
Architekturauswirkung: Versionierte Release-Ordner + Expand/Contract-Migrationen.
H07 Versionierung/Release-Nummerierung
Antworttyp: text
Warum wichtig? Nachvollziehbarkeit im Betrieb und im Audit (welche Version hat welchen Wert berechnet?).
GUI-/Menüpfad: —
Lesender Befehl (text):
(organisatorische Frage)
Erwartbare Ergebnisse: SemVer, Build-Nummer.
Architekturauswirkung: Version in UI, Logs und Berechnungsprotokollen ausgeben.
H08 Wer darf deployen?
Antworttyp: single – app_team App-Team · nur_it Nur IT · gemeinsam Gemeinsam/4-Augen · unbekannt Unbekannt
Warum wichtig? Siehe C38.
GUI-/Menüpfad: —
Lesender Befehl (text):
(organisatorische Frage)
Erwartbare Ergebnisse: —
Architekturauswirkung: Nur IT → Deployment-Paket mit Anleitung, seltene Releases.
H09 Akzeptable Downtime / Wartungsfenster für Deployments
Antworttyp: text
Warum wichtig? App_offline.htm-Deployments dauern Sekunden bis Minuten.
GUI-/Menüpfad: —
Lesender Befehl (text):
(organisatorische Frage)
Erwartbare Ergebnisse: —
Architekturauswirkung: Zero-Downtime nur mit zwei Sites/ARR.
H10 Build-Tooling (Node/npm, .NET SDK) auf Entwicklungsrechnern erlaubt?
Antworttyp: single – ja Ja · eingeschraenkt Eingeschränkt (Whitelist) · nein Nein · unbekannt Unbekannt
Warum wichtig? Tailwind/Bundler laufen ausschließlich zur Build-Zeit – irgendwo muss das erlaubt sein.
GUI-/Menüpfad: Software-Whitelist
Lesender Befehl (cmd):
node -v; dotnet --version
Erwartbare Ergebnisse: —
Architekturauswirkung: Nein → CI-Server oder vorgefertigtes CSS ohne Tailwind (plain CSS).
H11 AppLocker / Software Restriction / Signaturpflicht auf dem Server?
Antworttyp: ynu – ja Ja · nein Nein · unbekannt Unbekannt
Warum wichtig? Blockiert unsignierte Executables (Kestrel-exe, node.exe, Skripte).
GUI-/Menüpfad: Lokale Sicherheitsrichtlinie → Anwendungssteuerungsrichtlinien
Lesender Befehl (powershell):
Get-AppLockerPolicy -Effective -ErrorAction SilentlyContinue | Select-Object -ExpandProperty RuleCollections | Select-Object RuleCollectionType, EnforcementMode
Erwartbare Ergebnisse: Leer = keine AppLocker-Richtlinie.
Architekturauswirkung: Ja → Deployment-Pfade freigeben oder signieren lassen (IT).
H12 Antivirus-Ausnahmen für Anwendungs-/Upload-Ordner möglich?
Antworttyp: ynu – ja Ja · nein Nein · unbekannt Unbekannt
Warum wichtig? Echtzeitscanner verzögern Deployments und Uploads, sperren Dateien.
GUI-/Menüpfad: AV-Konsole IT
Lesender Befehl (powershell):
Get-MpPreference -ErrorAction SilentlyContinue | Select-Object -ExpandProperty ExclusionPath
Erwartbare Ergebnisse: Ausnahmen für inetpub/Apps.
Architekturauswirkung: Keine → Uploads scannen lassen, Retry-Logik.
I – Logging / Monitoring / Audit (9)
Nachvollziehbarkeit im Betrieb und revisionsnahe Speicherung operativer Daten. Gate: SERVER
I01 Zugriff des App-Teams auf IIS-Logs
Antworttyp: single – lesend Lesend · per_anfrage Per Anfrage · nein Nein · unbekannt Unbekannt
Warum wichtig? Fehleranalyse ohne Logs ist Raten.
GUI-/Menüpfad: Explorer → inetpub\logs\LogFiles → Sicherheit
Lesender Befehl (cmd):
icacls C:\inetpub\logs\LogFiles
Erwartbare Ergebnisse: Leserechte-Gruppe.
Architekturauswirkung: Nein → eigenes Request-Logging in der App.
I02 Darf die Anwendung ins Windows Event Log schreiben (eigene Quelle)?
Antworttyp: ynu – ja Ja · nein Nein · unbekannt Unbekannt
Warum wichtig? Standard-Kanal für Betriebsereignisse, von Monitoring auswertbar; Quelle anlegen braucht einmalig Adminrechte.
GUI-/Menüpfad: Ereignisanzeige → Windows-Protokolle → Anwendung
Lesender Befehl (powershell):
Get-WinEvent -ListLog Application | Select-Object LogName, MaximumSizeInBytes, LogMode, RecordCount
Erwartbare Ergebnisse: LogMode Circular, Größe 20 MB Standard (schnell voll).
Architekturauswirkung: Ja → kritische Ereignisse ins Event Log; Detail-Logs in Datei/DB.
I03 Zentrales Logging
Antworttyp: single – splunk Splunk · elk Elastic/OpenSearch · graylog Graylog · sentinel Microsoft Sentinel/Log Analytics · seq Seq · keins Keins · unbekannt Unbekannt
Warum wichtig? Zentrale Logs vereinfachen Korrelation über Module hinweg.
GUI-/Menüpfad: IT
Lesender Befehl (powershell):
Get-Service | Where-Object DisplayName -match 'Splunk|Elastic|Beats|Graylog|Monitoring Agent' | Select-Object Name, Status
Erwartbare Ergebnisse: Agent vorhanden?
Architekturauswirkung: Keins → strukturierte Datei-Logs (JSON) mit Rotation; später Anbindung möglich.
I04 Monitoring/Health Checks/Alarmierung
Antworttyp: single – prtg PRTG · zabbix Zabbix · checkmk checkmk · scom SCOM · anderes Anderes · keins Keins · unbekannt Unbekannt
Warum wichtig? Health-Endpunkt (/health) kann direkt überwacht werden.
GUI-/Menüpfad: IT
Lesender Befehl (text):
(siehe G07)
Erwartbare Ergebnisse: —
Architekturauswirkung: Health-Endpunkt in jedem Modul; Alarmierungsweg abstimmen.
I05 Aufbewahrungsdauer für Logs (Tage)
Antworttyp: number
Warum wichtig? Datenschutz (Minimierung) vs. Nachvollziehbarkeit.
GUI-/Menüpfad: Löschkonzept
Lesender Befehl (text):
(organisatorische Frage)
Erwartbare Ergebnisse: z. B. 90.
Architekturauswirkung: Rotation und Löschjob entsprechend konfigurieren.
I06 Darf die Anwendung Logdateien im eigenen Ordner schreiben?
Antworttyp: ynu – ja Ja · nein Nein · unbekannt Unbekannt
Warum wichtig? Serilog/NLog-Datei-Logs sind die einfachste Baseline.
GUI-/Menüpfad: Ordner-Sicherheit
Lesender Befehl (cmd):
icacls <app-ordner>\logs
Erwartbare Ergebnisse: Schreibrecht für App-Pool-Identität.
Architekturauswirkung: Nein → DB-Logging oder Event Log.
I07 Audit-Anforderungen an operative Daten
Antworttyp: multi – user_id Benutzer-ID je Änderung · timestamp Zeitstempel · alt_neu Alter/neuer Wert · quelle Quelle (UI/Import/Job) · korrektur Korrekturen nachvollziehbar (kein Überschreiben) · unveraenderbar Unveränderbarkeit/Signatur · unbekannt Unbekannt
Warum wichtig? Bestimmt Datenmodell: Historientabellen/Event-Log statt Update-in-Place.
GUI-/Menüpfad: Fachbereich/Datenschutz
Lesender Befehl (text):
(fachliche Frage)
Erwartbare Ergebnisse: Liste.
Architekturauswirkung: Historisierung im Modell (Append-only, gültig-von/bis), keine Geschäftslogik im Dashboard.
I08 Zeitquelle synchron (NTP) auf Server und DB?
Antworttyp: ynu – ja Ja · nein Nein · unbekannt Unbekannt
Warum wichtig? Audit-Zeitstempel müssen vergleichbar sein.
GUI-/Menüpfad: Datum/Uhrzeit
Lesender Befehl (cmd):
w32tm /query /status
Erwartbare Ergebnisse: Quelle = DC/NTP, Abweichung klein.
Architekturauswirkung: Zeitstempel serverseitig setzen, nie vom Client übernehmen.
I09 Wer darf personenbezogene Logs/Audit-Daten einsehen?
Antworttyp: text
Warum wichtig? Zugriff auf Audit-Trails ist selbst datenschutzrelevant.
GUI-/Menüpfad: Datenschutzkonzept
Lesender Befehl (text):
(organisatorische Frage)
Erwartbare Ergebnisse: Rollen.
Architekturauswirkung: Rollenabhängige Ansichten; Audit-Zugriff protokollieren.
J – Sicherheit / Datenschutz (12)
Netz, Zugriff, MFA, TLS, personenbezogene Daten, Freigaben. Keine Sicherheitsmechanismen umgehen. Gate: SECURITY
J01 Netzsegmentierung: Segment des Webservers, der DB, der Clients
Antworttyp: text
Warum wichtig? Bestimmt Firewall-Anträge und ob Clients den IIS direkt erreichen.
GUI-/Menüpfad: Netzplan IT
Lesender Befehl (powershell):
Get-NetIPConfiguration | Select-Object InterfaceAlias, IPv4Address, IPv4DefaultGateway
Erwartbare Ergebnisse: Server-VLAN, DB-VLAN.
Architekturauswirkung: Alle Pfade Client→IIS→DB in Kapitel L testen.
J02 Zugriffswege zur Anwendung
Antworttyp: multi – nur_intern Nur internes LAN · vpn VPN-Client · mdm_tunnel MDM-App-Tunnel (MobileIron) · extern_reverse_proxy Extern über Reverse Proxy/WAF · unbekannt Unbekannt
Warum wichtig? Jeder Weg ist ein eigenes Clientprofil mit eigenen Einschränkungen.
GUI-/Menüpfad: IT-Security
Lesender Befehl (text):
(organisatorische Frage)
Erwartbare Ergebnisse: Liste.
Architekturauswirkung: Pro Weg ein Profil im Client Capability Test.
J03 MFA-Anforderung
Antworttyp: single – ad_sso_reicht AD-SSO/Gerätevertrauen reicht · mfa_zusaetzlich Zusätzliche MFA gefordert · nein Keine · unbekannt Unbekannt
Warum wichtig? MFA in Eigenbau ist unzulässig; muss über IdP (Entra/ADFS) oder VPN/MDM geleistet werden.
GUI-/Menüpfad: IT-Security
Lesender Befehl (text):
(organisatorische Frage)
Erwartbare Ergebnisse: —
Architekturauswirkung: MFA gefordert → OIDC gegen IdP oder MFA am Tunnel/VPN.
J04 TLS-/Zertifikatsvorgaben
Antworttyp: multi – tls12_min Mind. TLS 1.2 · tls13 TLS 1.3 gefordert · interne_ca Interne CA Pflicht · hsts HSTS gefordert · unbekannt Unbekannt
Warum wichtig? Siehe C41.
GUI-/Menüpfad: IT-Security-Richtlinie
Lesender Befehl (text):
(siehe C41)
Erwartbare Ergebnisse: —
Architekturauswirkung: Header/Redirects in App; Zertifikatsvertrauen auf MDM-Geräten prüfen.
J05 Verarbeitete personenbezogene Daten
Antworttyp: multi – namen Namen/Kontakt · funktionen Funktionen/Rollen · anwesenheit Anwesenheit/Zeiten · gesundheit Gesundheitsdaten · standort Standortdaten · keine Keine · unbekannt Unbekannt
Warum wichtig? Bestimmt DSFA-Bedarf, Verschlüsselung, Zugriffsbeschränkung, Löschkonzept.
GUI-/Menüpfad: Datenschutzbeauftragter
Lesender Befehl (text):
(fachliche Frage)
Erwartbare Ergebnisse: —
Architekturauswirkung: Besondere Kategorien → Verschlüsselung at rest, strenge Rollen, Audit-Zugriff.
J06 Vorgaben zum Rollen-/Rechtemodell
Antworttyp: text
Warum wichtig? Rollenabhängige Dashboards ohne Logik im Dashboard.
GUI-/Menüpfad: Fachbereich
Lesender Befehl (text):
(fachliche Frage)
Erwartbare Ergebnisse: Rollenliste, Datenhoheit.
Architekturauswirkung: Autorisierung serverseitig, Rollen aus AD oder App-DB (B08).
J07 Aufbewahrungs-/Löschkonzept
Antworttyp: text
Warum wichtig? Operative Daten (Besetzungen) sind personenbezogen und zeitlich befristet aufzubewahren.
GUI-/Menüpfad: Datenschutzkonzept
Lesender Befehl (text):
(organisatorische Frage)
Erwartbare Ergebnisse: Fristen je Datenart.
Architekturauswirkung: Löschjobs + Archivierungsstrategie (Historie anonymisieren).
J08 Security-Test/Freigabeprozess
Antworttyp: single – pentest Pentest Pflicht · review Code-/Konfig-Review · keins Keins · unbekannt Unbekannt
Warum wichtig? Planbar als Meilenstein; beeinflusst Wahl bewährter Frameworks.
GUI-/Menüpfad: IT-Security
Lesender Befehl (text):
(organisatorische Frage)
Erwartbare Ergebnisse: —
Architekturauswirkung: Bewährte Framework-Sicherheitsfunktionen (Anti-Forgery, Auth-Middleware) nutzen.
J09 Gibt es Vorgaben zu CSP/Security-Headern?
Antworttyp: ynu – ja Ja · nein Nein · unbekannt Unbekannt
Warum wichtig? Strikte CSP verbietet Inline-Skripte – relevant für HTMX/Alpine/Tailwind-Setups.
GUI-/Menüpfad: IT-Security
Lesender Befehl (powershell):
Invoke-WebRequest https://<bestehende-app>/ -UseBasicParsing | Select-Object -ExpandProperty Headers
Erwartbare Ergebnisse: CSP-Header bestehender Apps als Muster.
Architekturauswirkung: Nonce-basierte CSP einplanen; keine Inline-Handler.
J10 Secrets-Management (Connection Strings, API-Keys)
Antworttyp: single – config_verschluesselt Verschlüsselte Konfig (DPAPI/aspnet_regiis) · env_vars Umgebungsvariablen am App-Pool · vault Vault/Key Vault · klartext Klartext in Konfig · unbekannt Unbekannt
Warum wichtig? Klartext-Secrets sind Security-Finding; gMSA + integrierte Auth vermeidet Secrets.
GUI-/Menüpfad: IIS → Konfigurations-Editor / Umgebungsvariablen
Lesender Befehl (powershell):
Get-ChildItem C:\inetpub -Recurse -Filter appsettings*.json -ErrorAction SilentlyContinue | Select-Object FullName
Erwartbare Ergebnisse: —
Architekturauswirkung: Konvention festlegen, vor erstem Release.
J11 Web-Filter/Proxy/Security-Gateway zwischen Client und IIS?
Antworttyp: single – ja Ja · nein Nein · unbekannt Unbekannt
Warum wichtig? Filter können Skripte, WebSockets, große Antworten oder bestimmte MIME-Typen blockieren.
GUI-/Menüpfad: IT-Security
Lesender Befehl (text):
(Client-Test im realen Pfad)
Erwartbare Ergebnisse: —
Architekturauswirkung: Ja → Client Capability Test zwingend über diesen Pfad.
J12 Explizit verbotene Techniken
Antworttyp: multi – keine_cdn Externe CDN-Ressourcen · kein_websocket WebSockets · kein_local_storage Lokale Speicherung (LocalStorage/IndexedDB) · kein_pwa PWA/Service Worker · keine_kamera Kamera/Geolocation · kein_inline_js Inline-JavaScript · keine Keine Verbote bekannt · unbekannt Unbekannt
Warum wichtig? Organisatorische Verbote gelten unabhängig von technischer Machbarkeit.
GUI-/Menüpfad: IT-Security-Richtlinie
Lesender Befehl (text):
(organisatorische Frage)
Erwartbare Ergebnisse: —
Architekturauswirkung: Verbote setzen Capability-Status auf ROT (organisatorisch).
K – Clients (12)
Browser, Geräte, Richtlinien, Netzabdeckung, Druck. Gate: CLIENT
K01 Unterstützte Browser
Antworttyp: multi – edge Edge (Chromium) · chrome Chrome · firefox Firefox · safari_ios Safari/iOS-WebView · mdm_browser MDM-Browser (Web@Work/verwaltet) · ie11 IE11/IE-Modus · unbekannt Unbekannt
Warum wichtig? IE-Modus oder alte WebViews schließen moderne JavaScript-Features aus.
GUI-/Menüpfad: Browser → Hilfe → Info; edge://version
Lesender Befehl (cmd):
gpresult /r | findstr /i browser
rem Auf Client: edge://policy und chrome://policy im Browser öffnen
Erwartbare Ergebnisse: Liste + Versionen.
Architekturauswirkung: IE11 → nur serverseitiges HTML; sonst Baseline per Client-Test.
K02 Browser-Versionsstand
Antworttyp: single – evergreen Automatisch aktuell (Evergreen) · eingefroren Eingefrorene/alte Versionen · unbekannt Unbekannt
Warum wichtig? Eingefrorene Versionen begrenzen CSS/JS-Features dauerhaft.
GUI-/Menüpfad: edge://version
Lesender Befehl (cmd):
reg query "HKLM\SOFTWARE\Microsoft\Edge\BLBeacon" /v version
Erwartbare Ergebnisse: Aktuelle Major-Version.
Architekturauswirkung: Baseline auf ältesten Pflichtbrowser festlegen.
K03 Zentrale Browserverwaltung (GPO/MDM-Richtlinien)?
Antworttyp: ynu – ja Ja · nein Nein · unbekannt Unbekannt
Warum wichtig? Richtlinien können JavaScript, Cookies, Storage, Downloads, Kamera pro Site steuern.
GUI-/Menüpfad: edge://policy
Lesender Befehl (cmd):
reg query HKLM\SOFTWARE\Policies\Microsoft\Edge /s
Erwartbare Ergebnisse: Richtlinienliste.
Architekturauswirkung: Site-Allowlist für die App beantragen (JavaScriptAllowedForUrls, CookiesAllowedForUrls).
K04 JavaScript per Richtlinie eingeschränkt?
Antworttyp: single – erlaubt Erlaubt · allowlist Nur Allowlist · blockiert Blockiert · unbekannt Unbekannt
Warum wichtig? Kernfrage für Progressive Enhancement.
GUI-/Menüpfad: edge://policy → DefaultJavaScriptSetting / JavaScriptAllowedForUrls
Lesender Befehl (cmd):
reg query HKLM\SOFTWARE\Policies\Microsoft\Edge /v DefaultJavaScriptSetting
Erwartbare Ergebnisse: 1 = erlaubt, 2 = blockiert.
Architekturauswirkung: Allowlist/blockiert → No-JS-Baseline zwingend (L7).
K05 Richtlinien zu Cookies, Local Storage, Downloads, Zwischenablage
Antworttyp: text
Warum wichtig? Sessions brauchen Cookies; Downloads/Exports können blockiert sein.
GUI-/Menüpfad: edge://policy
Lesender Befehl (cmd):
reg query HKLM\SOFTWARE\Policies\Microsoft\Edge /s | findstr /i "Cookie Download Clipboard"
Erwartbare Ergebnisse: —
Architekturauswirkung: Cookie-Blockade → URL-Token/Windows-Auth statt Cookie-Session.
K06 PWA-Installation erlaubt/gewünscht?
Antworttyp: ynu – ja Ja · nein Nein · unbekannt Unbekannt
Warum wichtig? PWA nur mit HTTPS + Service Worker + Richtlinie.
GUI-/Menüpfad: edge://policy → WebAppInstallForceList
Lesender Befehl (text):
(Richtlinie prüfen)
Erwartbare Ergebnisse: —
Architekturauswirkung: Nein → keine Offline-Annahmen.
K07 Gerätetypen im Einsatz
Antworttyp: multi – desktop Desktop · notebook Notebook · tablet Tablet · smartphone Smartphone · dashboard_monitor Großer Dashboard-Monitor · unbekannt Unbekannt
Warum wichtig? Jeder Typ = Clientprofil + Layoutanforderung.
GUI-/Menüpfad: —
Lesender Befehl (text):
(Nachfrage)
Erwartbare Ergebnisse: —
Architekturauswirkung: Responsive, Touch-Ziele ≥ 44 px, Dashboard-Ansicht ohne Interaktion.
K08 Dashboard-Monitore: Gerät, Browser/Kiosk, Auflösung, Auto-Login, Neustartverhalten
Antworttyp: text
Warum wichtig? Kiosk-Geräte brauchen automatische Anmeldung und Auto-Refresh ohne Nutzerinteraktion.
GUI-/Menüpfad: Gerät vor Ort
Lesender Befehl (text):
(Gerät prüfen)
Erwartbare Ergebnisse: —
Architekturauswirkung: Dashboard-Rolle mit Lesezugriff, Auto-Refresh per Meta-Refresh/Polling als Fallback.
Folgefrage: wird nur angezeigt, wenn v => has(v, 'K07', 'dashboard_monitor')
K09 Auflösungen, Touch, Bildschirmgrößen
Antworttyp: text
Warum wichtig? Layout-Baseline.
GUI-/Menüpfad: —
Lesender Befehl (text):
(Nachfrage)
Erwartbare Ergebnisse: —
Architekturauswirkung: Mobile-first Layout, Tabellen mit horizontalem Scroll.
K10 Netzabdeckung/Verbindungsabbrüche im Einsatzumfeld
Antworttyp: single – stabil Stabil · teilweise Teilweise Lücken · haeufig Häufige Abbrüche · unbekannt Unbekannt
Warum wichtig? Bestimmt Bedarf an Wiederholungslogik, Zwischenspeicherung und Offline-Konzept.
GUI-/Menüpfad: —
Lesender Befehl (text):
(Nachfrage; Client-Test „Verbindungsabbruch“)
Erwartbare Ergebnisse: —
Architekturauswirkung: Häufig → kleine Requests, idempotente POSTs, Statusanzeige; Offline nur bei nachgewiesener Storage-Fähigkeit.
K11 Druck/PDF
Antworttyp: single – druck_und_pdf Drucken und PDF-Anzeige · nur_pdf Nur PDF-Anzeige · nichts Weder noch · unbekannt Unbekannt
Warum wichtig? Berichte/Aushänge.
GUI-/Menüpfad: —
Lesender Befehl (text):
(Client-Test „PDF-Anzeige“)
Erwartbare Ergebnisse: —
Architekturauswirkung: PDF serverseitig erzeugen; Druck-CSS.
K12 Benutzergruppen und ihre typischen Clients
Antworttyp: text
Warum wichtig? Bestimmt Pflichtclients für den kleinsten gemeinsamen Nenner.
GUI-/Menüpfad: —
Lesender Befehl (text):
(Nachfrage)
Erwartbare Ergebnisse: z. B. „Führung: Notebook VPN; Einsatzkräfte: iPhone MobileIron“.
Architekturauswirkung: Pflichtprofile im Client-Test markieren.
L – Zugriffspfad / MobileIron / Tunnel (18)
Die Ende-zu-Ende-Kette Client → MDM → VPN/Tunnel → Netz → IIS ist eine gleichwertige Systemgrenze. Ergänzt durch den realen Client Capability Test. Gate: NETWORK
L01 Reale Zugriffspfade (Ende-zu-Ende)
Antworttyp: multi – intern_lan Desktop/Notebook intern (LAN/WLAN) · vpn_client Notebook über VPN-Client · mdm_tunnel Smartphone/Tablet über MobileIron/Ivanti-Tunnel · atwork_browser Web@Work / verwalteter Browser · extern Extern über Gateway · unbekannt Unbekannt
Warum wichtig? Jeder Pfad ist ein Clientprofil, das real getestet werden muss.
GUI-/Menüpfad: MDM-Konsole (Ivanti EPMM) → Konfigurationen
Lesender Befehl (text):
(Nachfrage IT/MDM-Admin)
Erwartbare Ergebnisse: Liste.
Architekturauswirkung: Für jeden Pfad ein Profil im Client Capability Test anlegen.
L02 MobileIron/Ivanti-Version (Core/EPMM, Mobile@Work, Web@Work, Tunnel)
Antworttyp: text
Warum wichtig? Alte Web@Work-Versionen nutzen eingeschränkte WebViews; Tunnel-Versionen unterscheiden sich bei WebSocket-Unterstützung.
GUI-/Menüpfad: Gerät: Mobile@Work-App → Einstellungen → Über; iOS: Einstellungen → Allgemein → VPN & Geräteverwaltung; MDM-Admin: EPMM-Konsole → Einstellungen → Info
Lesender Befehl (text):
(am Gerät ablesen)
Erwartbare Ergebnisse: Versionen.
Architekturauswirkung: Ergebnis nur zusammen mit realem Test belastbar.
Folgefrage: wird nur angezeigt, wenn v => has(v, 'L01', 'mdm_tunnel') || has(v, 'L01', 'atwork_browser') || has(v, 'J02', 'mdm_tunnel')
L03 Browser innerhalb der MDM-Umgebung
Antworttyp: single – web_at_work Web@Work (eigener Browser) · managed_edge Verwalteter Edge · managed_chrome Verwalteter Chrome · safari_per_app_vpn Safari mit Per-App-VPN · unbekannt Unbekannt
Warum wichtig? Web@Work ist eine WebView mit eigenen Regeln (kein Service Worker, eingeschränkte Downloads möglich).
GUI-/Menüpfad: Gerät: App-Liste; MDM-Admin: App-Katalog
Lesender Befehl (text):
(am Gerät ablesen; User-Agent im Client-Test)
Erwartbare Ergebnisse: —
Architekturauswirkung: Baseline nur nach Test in genau diesem Browser.
Folgefrage: wird nur angezeigt, wenn v => has(v, 'L01', 'mdm_tunnel') || has(v, 'L01', 'atwork_browser')
L04 Tunnel-Art auf Mobilgeräten
Antworttyp: single – per_app_vpn Per-App-VPN · device_vpn Geräte-VPN · app_tunnel_proxy AppTunnel/HTTP-Proxy (Sentry) · unbekannt Unbekannt
Warum wichtig? HTTP-Proxy-Tunnel (Sentry/AppTunnel) unterstützen WebSockets/SSE oft nicht oder mit Timeouts.
GUI-/Menüpfad: MDM-Konsole → Tunnel-/Sentry-Konfiguration
Lesender Befehl (text):
(Nachfrage MDM-Admin)
Erwartbare Ergebnisse: —
Architekturauswirkung: Proxy-Tunnel → Realtime nur nach Test; Polling als Fallback.
Folgefrage: wird nur angezeigt, wenn v => has(v, 'L01', 'mdm_tunnel') || has(v, 'L01', 'atwork_browser')
L05 Unterschiede Desktop / Notebook / Tablet / Smartphone im Zugriff
Antworttyp: text
Warum wichtig? Verschiedene Auth, Proxys, Filter je Gerät.
GUI-/Menüpfad: —
Lesender Befehl (text):
(Nachfrage)
Erwartbare Ergebnisse: —
Architekturauswirkung: Profile im Client-Test.
L06 Clientprofile je Benutzergruppe (welche Gruppe nutzt welchen Pfad?) und Pflichtclients
Antworttyp: text
Warum wichtig? Der kleinste gemeinsame Nenner wird über Pflichtclients gebildet.
GUI-/Menüpfad: —
Lesender Befehl (text):
(Nachfrage)
Erwartbare Ergebnisse: Tabelle Gruppe → Profil → Pflicht ja/nein.
Architekturauswirkung: Pflicht-Profile im Client-Test markieren.
L07 JavaScript-Einschränkungen durch MDM-/Browser-Richtlinien
Antworttyp: single – keine Keine bekannt · teilweise Teilweise (Allowlist/Filter) · blockiert Blockiert · unbekannt Unbekannt
Warum wichtig? Kernfrage für die Frontend-Baseline.
GUI-/Menüpfad: MDM-Konsole → Web@Work-/Browser-Konfiguration
Lesender Befehl (text):
(Client-Test „JavaScript“)
Erwartbare Ergebnisse: —
Architekturauswirkung: Unbekannt → Client-Test zwingend vor Frontend-Entscheidung.
L08 Einschränkungen: Downloads, Uploads, Kamera, Zwischenablage, lokale Speicherung
Antworttyp: multi – download_block Downloads blockiert · upload_block Uploads blockiert · kamera_block Kamera blockiert · clipboard_block Zwischenablage eingeschränkt · storage_block Lokale Speicherung eingeschränkt · keine Keine bekannt · unbekannt Unbekannt
Warum wichtig? DLP-Richtlinien in MDM greifen unabhängig vom Browser-Feature-Support.
GUI-/Menüpfad: MDM-Konsole → Sicherheitsrichtlinien/DLP
Lesender Befehl (text):
(Client-Test + Nachfrage)
Erwartbare Ergebnisse: —
Architekturauswirkung: Blockiert → Funktionen serverseitig lösen (PDF per Mail statt Download).
L09 Externe Ressourcen, Proxys, Webfilter, CSP, Security-Gateways im Pfad
Antworttyp: multi – webfilter Webfilter/Proxy · kein_extern Kein Zugriff auf externe Hosts · gateway_csp Gateway setzt/ändert Header (CSP) · tls_inspection TLS-Inspektion · keine Keine bekannt · unbekannt Unbekannt
Warum wichtig? TLS-Inspektion bricht Zertifikats-Pinning/Ws; Header-Manipulation bricht Skripte.
GUI-/Menüpfad: IT-Security
Lesender Befehl (text):
(Client-Test „externe Ressourcen“, „CDN“)
Erwartbare Ergebnisse: —
Architekturauswirkung: Self-hosted Assets; keine CDN-Abhängigkeit.
L10 Wer stellt Testgeräte je Profil bereit und wann?
Antworttyp: text
Warum wichtig? Ohne reale Tests bleibt das CLIENT-Gate GRAU und die Frontend-Entscheidung unzulässig.
GUI-/Menüpfad: —
Lesender Befehl (text):
(organisatorische Frage)
Erwartbare Ergebnisse: Name, Termin.
Architekturauswirkung: Blocker für Gate CLIENT.
L11 Vertraut die MDM-Umgebung dem Zertifikat des Webservers (interne CA)?
Antworttyp: ynu – ja Ja · nein Nein · unbekannt Unbekannt
Warum wichtig? Nicht vertraute Zertifikate blockieren in WebViews jede Verbindung ohne Dialog.
GUI-/Menüpfad: Gerät: HTTPS-Site öffnen; MDM: Zertifikatsprofil
Lesender Befehl (text):
(Client-Test öffnet Seite über HTTPS)
Erwartbare Ergebnisse: Seite lädt ohne Warnung.
Architekturauswirkung: Nein → Root-CA per MDM verteilen (IT-Aufgabe) vor Rollout.
Folgefrage: wird nur angezeigt, wenn v => v('C06') === 'interne_ca' || v('C06') === 'selbstsigniert'
L20 No-JS-Baseline: Navigation möglich?
Antworttyp: single – ja Ja, ohne JavaScript nutzbar · eingeschraenkt Eingeschränkt · nein Nein · unbekannt Nicht geprüft
Warum wichtig? Links und Menüs müssen ohne Skript funktionieren.
GUI-/Menüpfad: Testmodus: /clienttest/nojs.html öffnen (JavaScript im Browser deaktivieren oder Seite ohne Skripte bewerten)
Lesender Befehl (text):
(manueller Test)
Erwartbare Ergebnisse: Bewertung anhand der No-JS-Testseite und der geplanten Kernoberfläche.
Architekturauswirkung: Server-Routing, keine JS-Router.
L21 No-JS-Baseline: Anmeldung möglich?
Antworttyp: single – ja Ja, ohne JavaScript nutzbar · eingeschraenkt Eingeschränkt · nein Nein · unbekannt Nicht geprüft
Warum wichtig? Login als klassisches POST-Formular oder Windows-Auth.
GUI-/Menüpfad: Testmodus: /clienttest/nojs.html öffnen (JavaScript im Browser deaktivieren oder Seite ohne Skripte bewerten)
Lesender Befehl (text):
(manueller Test)
Erwartbare Ergebnisse: Bewertung anhand der No-JS-Testseite und der geplanten Kernoberfläche.
Architekturauswirkung: Kein JS-only-Login (kein SPA-Token-Flow ohne Fallback).
L22 No-JS-Baseline: Formulare nutzbar (Erfassen/Ändern)?
Antworttyp: single – ja Ja, ohne JavaScript nutzbar · eingeschraenkt Eingeschränkt · nein Nein · unbekannt Nicht geprüft
Warum wichtig? Kernfunktion: Besetzung bestätigen.
GUI-/Menüpfad: Testmodus: /clienttest/nojs.html öffnen (JavaScript im Browser deaktivieren oder Seite ohne Skripte bewerten)
Lesender Befehl (text):
(manueller Test)
Erwartbare Ergebnisse: Bewertung anhand der No-JS-Testseite und der geplanten Kernoberfläche.
Architekturauswirkung: GET/POST-Formulare mit serverseitiger Validierung.
L23 No-JS-Baseline: Daten speichern möglich?
Antworttyp: single – ja Ja, ohne JavaScript nutzbar · eingeschraenkt Eingeschränkt · nein Nein · unbekannt Nicht geprüft
Warum wichtig? POST → Redirect → GET.
GUI-/Menüpfad: Testmodus: /clienttest/nojs.html öffnen (JavaScript im Browser deaktivieren oder Seite ohne Skripte bewerten)
Lesender Befehl (text):
(manueller Test)
Erwartbare Ergebnisse: Bewertung anhand der No-JS-Testseite und der geplanten Kernoberfläche.
Architekturauswirkung: PRG-Muster; keine Fetch-Pflicht.
L24 No-JS-Baseline: Tabellen/Listen lesbar?
Antworttyp: single – ja Ja, ohne JavaScript nutzbar · eingeschraenkt Eingeschränkt · nein Nein · unbekannt Nicht geprüft
Warum wichtig? Serverseitig gerenderte Tabellen, Paginierung per Link.
GUI-/Menüpfad: Testmodus: /clienttest/nojs.html öffnen (JavaScript im Browser deaktivieren oder Seite ohne Skripte bewerten)
Lesender Befehl (text):
(manueller Test)
Erwartbare Ergebnisse: Bewertung anhand der No-JS-Testseite und der geplanten Kernoberfläche.
Architekturauswirkung: Keine JS-Tabellenbibliothek im Kern.
L25 No-JS-Baseline: Fehler verständlich?
Antworttyp: single – ja Ja, ohne JavaScript nutzbar · eingeschraenkt Eingeschränkt · nein Nein · unbekannt Nicht geprüft
Warum wichtig? Serverseitige Fehlermeldungen im HTML.
GUI-/Menüpfad: Testmodus: /clienttest/nojs.html öffnen (JavaScript im Browser deaktivieren oder Seite ohne Skripte bewerten)
Lesender Befehl (text):
(manueller Test)
Erwartbare Ergebnisse: Bewertung anhand der No-JS-Testseite und der geplanten Kernoberfläche.
Architekturauswirkung: Validierungs-Summary im Markup.
L26 No-JS-Baseline: Wesentliche operative Informationen abrufbar?
Antworttyp: single – ja Ja, ohne JavaScript nutzbar · eingeschraenkt Eingeschränkt · nein Nein · unbekannt Nicht geprüft
Warum wichtig? Dashboard-Grundansicht muss ohne Skript lesbar sein (Meta-Refresh).
GUI-/Menüpfad: Testmodus: /clienttest/nojs.html öffnen (JavaScript im Browser deaktivieren oder Seite ohne Skripte bewerten)
Lesender Befehl (text):
(manueller Test)
Erwartbare Ergebnisse: Bewertung anhand der No-JS-Testseite und der geplanten Kernoberfläche.
Architekturauswirkung: Dashboard als statisches HTML mit Auto-Refresh, JS nur Komfort.
Client Capability Tests (L2)
ID
Test
Gruppe
html5
HTML5-Grundfunktionen
Basis
css_local
CSS / lokales Stylesheet
Basis
font_local
Lokale Fonts
Basis
icon_local
Lokale Icons (SVG)
Basis
js_basic
JavaScript grundsätzlich
JavaScript
es_modern
Moderne JS-Sprachfeatures (ES2020+)
JavaScript
dom
DOM-Manipulation
JavaScript
secure_context
Sicherer Kontext (HTTPS)
Basis
form_get
Klassisches GET-Formular
Formulare
form_post
Klassisches POST-Formular
Formulare
xhr
XMLHttpRequest
Netzwerk
fetch
Fetch API
Netzwerk
fetch_post
API-/Fetch-POST (JSON)
Netzwerk
internal_api
Interner API-Aufruf
Netzwerk
cookie
Cookies (JS + Session-Cookie)
Speicher
cookie_samesite
SameSite-Verhalten
Speicher
localstorage
LocalStorage
Speicher
sessionstorage
SessionStorage
Speicher
indexeddb
IndexedDB
Speicher
websocket
WebSockets
Realtime
sse
Server-Sent Events
Realtime
serviceworker
Service Worker
PWA
pwa
PWA-Funktionen (Manifest)
PWA
upload
Datei-Upload
Dateien
upload_multi
Mehrfach-Upload
Dateien
download
Download
Dateien
pdf
PDF-Anzeige
Dateien
clipboard
Clipboard API
Geräte-APIs
camera
Kamera / MediaDevices
Geräte-APIs
geolocation
Geolocation
Geräte-APIs
webcrypto
WebCrypto
Geräte-APIs
cors
CORS (Cross-Origin-Request)
Extern
external_https
Externe HTTPS-Ressource
Extern
cdn
CDN-Ressource
Extern
long_request
Langer Request / Timeout
Netz/Tunnel
big_response
Größere Antwort (2 MB)
Netz/Tunnel
connection_drop
Verhalten bei Verbindungsabbruch
Netz/Tunnel
session_lifetime
Session-Lebensdauer
Netz/Tunnel