diff --git a/Chapters/01-Einleitung.tex b/Chapters/01-Einleitung.tex index f881de8..9601455 100644 --- a/Chapters/01-Einleitung.tex +++ b/Chapters/01-Einleitung.tex @@ -5,31 +5,31 @@ \todox{Einleitung schreiben am Ende (4-5 Seiten)} -\subsection{Problemstellung} +\section{Problemstellung} - Firmen liefern Software an Kunden mit unterschiedlichen Netzwerkumgebungen (Online vs. Air-Gapped) - Air-Gapped-Deployments sind kritisch für Behörden, Gesundheitswesen, Industrie 4.0[1][2] - Aktuelle Herausforderung: Security-Updates ohne Internetverbindung, manuelle Prozesse fehleranfällig -\subsection{Zielsetzung} +\section{Zielsetzung} - Entwurf einer Softwarearchitektur für hybrides Kubernetes-Deployment (Online + Air-Gapped) - Implementierung automatisierter Container-Supply-Chain mit Security Gates - Automatisiertes Patch-Management mit nachweisbarem CVE-Response (<48h) -\subsection{Forschungsfrage} +\section{Forschungsfrage} - Hauptfrage + 3 Unterfragen (siehe oben) -\subsection{Eigener Beitrag} +\section{Eigener Beitrag} - Praktische Migration aus Praktikum (20-30 Container) als Basis - Architektur-Entwurf mit Security-by-Design - Proof of Concept mit Security-Metriken -\subsection{Aufbau der Arbeit} +\section{Aufbau der Arbeit} - Kurze Beschreibung der Kapitel \section{\LaTeX\ installieren und einrichten} -\subsection{Unter Windows} +\section{Unter Windows} Als LaTeX-Distribution unter Windows steht \href{http://www.miktex.org/}{\textit{MikTeX}} zu Verfügung, die als freie Software im Internet erhältlich ist. \textit{MikTeX} unterstützt Windows XP, Vista und Windows 7. Neben \textit{MikTeX} wird noch ein PostScript-Interpreter benötigt, @@ -37,7 +37,7 @@ z.B. GhostScript, zu finden auf \href{http://www.chip.de}{Chip.de}. \textit{Wichtig:} Bei \textit{MikTeX} unbedingt Vollinstallation auswählen, sonst sind eventuell benötigte Packages nicht vorhanden. -\subsection{Unter Linux} +\section{Unter Linux} Unter Linux existiert die LaTeX-Distribution \textit{texlive}, die als aktuelle Version aus den Paketquellen geladen werden kann (unter Ubuntu mit \lstinline{apt-get install texlive-full}). Auch hier ist ganz wichtig, die volle Distribution zu laden, damit alle Packages zur Verfügung stehen. @@ -81,7 +81,7 @@ verwendeten Zeichensatz umzustellen: UTF-8 ohne BOM (Byte Order Mark). Die vorliegende Vorlage für Abschlussarbeiten besteht aus einer internen Struktur, die grundsätzlich nicht verändert werden sollte. % Außer, der Student weiß genau, was er tut. -\subsection{Struktur der Vorlage} +\section{Struktur der Vorlage} \label{subsec:strukturvorlage} %\begin{figure} @@ -124,7 +124,7 @@ Die vorliegende Vorlage für Abschlussarbeiten besteht aus einer internen Strukt \end{description} -\subsection{Gebrauch der Vorlage} +\section{Gebrauch der Vorlage} Grundsätzlich ist nicht viel zu tun, um die Vorlage für Abschlussarbeiten zu verwenden. Man entpackt den Hauptordner in das gewünschte Verzeichnis und nutzt die Dateien so, wie in \autoref{subsec:strukturvorlage} beschrieben. Danach werden \textit{alle} Dateien gespeichert und die Hauptdatei, \textit{htwsaar-i-mst-vorlage.tex}, mehrfach kompiliert diff --git a/Chapters/02-Grundlagen.tex b/Chapters/02-Grundlagen.tex index 7aff168..5a16f96 100644 --- a/Chapters/02-Grundlagen.tex +++ b/Chapters/02-Grundlagen.tex @@ -1,9 +1,9 @@ -\section{Theoretische Grundlagen} % (16-20 Seiten) +\chapter{Theoretische Grundlagen} % (16-20 Seiten) -\subsection{Kubernetes-Architektur} %(4 Seiten) +\section{Kubernetes-Architektur} %(4 Seiten) \subsubsection{Control Plane} \todox{(API Server, Scheduler, Controller Manager, etcd)} @@ -15,7 +15,7 @@ \todox{Kernkonzepte: Pods, Deployments, Services, ConfigMaps, Secrets} -\subsection{Air-Gapped-Umgebungen} % (4 Seiten) +\section{Air-Gapped-Umgebungen} % (4 Seiten) \subsubsection{Definition} \todox{Air-Gap vs. Netzwerktrennung vs. restricted network[1]} @@ -26,7 +26,7 @@ \subsubsection{Best Practices} - Best Practices für Air-Gapped Kubernetes[7][8][1] -\subsection{Container-Supply-Chain Sicherheit} % (4 Seiten) +\section{Container-Supply-Chain Sicherheit} % (4 Seiten) \subsubsection{Software Bill of Materials} - **SBOM** (Software Bill of Materials): Format (SPDX, CycloneDX), Tools (Syft)[1] @@ -41,7 +41,7 @@ - **Policy Enforcement**: OPA Gatekeeper, Kyverno für Image-Verification -\subsection{GitOps} +\section{GitOps} **2.4 GitOps \& Automatisierung** (3 Seiten) - GitOps-Prinzipien: Declarative Configuration, Continuous Sync[9] - **Flux CD**: Architektur, Sync-Strategien, Multi-Cluster[10][9] @@ -52,7 +52,7 @@ - **arc42**-Template: 7 Perspektiven für Softwarearchitektur[11] - Anwendung auf Kubernetes-Systeme -\subsection{Architekturbewertungsmethoden} +\section{Architekturbewertungsmethoden} **2.6 Architekturbewertungsmethoden** (2.5 Seiten) \subsubsection{Architecture Tradeoff Analysis Method} diff --git a/Chapters/03-Anforderungen.tex b/Chapters/03-Anforderungen.tex index 6e8a5d0..af30595 100644 --- a/Chapters/03-Anforderungen.tex +++ b/Chapters/03-Anforderungen.tex @@ -1,13 +1,13 @@ -\section{Anforderungserhebung} %(10-12 Seiten) %long dash +\chapter{Anforderungserhebung} %(10-12 Seiten) %long dash -\subsection{Stakeholder-Analyse} +\section{Stakeholder-Analyse} - DevOps-Team (Automatisierung, Wartbarkeit) - Sicherheitsteam (Compliance, Audit) - Kunden (Air-Gapped-Betrieb, Support) - Entwickler (CI/CD-Geschwindigkeit) -\subsection{Funktionale Anforderungen} +\section{Funktionale Anforderungen} | ID | Anforderung | Priorität | |----|-------------|-----------| | FA-1 | Container-Image-Build mit automatischem SBOM | Hoch | @@ -18,7 +18,7 @@ | FA-6 | Cluster-Provisioning mit kubeadm in <2h | Mittel | | FA-7 | Rollback bei Failed Deployment | Hoch | -\subsection{Qualitative Anforderungen} %(Qualitätsziele) +\section{Qualitative Anforderungen} %(Qualitätsziele) | Qualitätsmerkmal | Zielwert | Messung | |------------------|----------|---------| | **Verfügbarkeit** (Air-Gapped) | 99,9% ohne Internet | Uptime-Monitoring | @@ -28,13 +28,13 @@ | **Deployment-Zeit** (Air-Gapped) | kleiner gleich30min nach Sync | CI/CD-Logs | | **Wartbarkeit** | Vollständig dokumentiert (arc42) | Checkliste | -\subsection{Randbedingungen} +\section{Randbedingungen} - Bestehender Stack: 20-30 Container aus Praktikum - Team-Kenntnisse: Kubernetes-Basis, wenig Security-Expertise - Budget: Open-Source-Tools bevorzugt - Compliance: BSI-Kritis/ISO 27001 (optional, aber empfohlen) -\subsection{Zielkonflikte} +\section{Zielkonflikte} | Konflikt | Auflösung | |----------|-----------| | Security-Scans verlangsamen CI | Parallelisierung, Caching | diff --git a/Chapters/04-Architekturentwurf.tex b/Chapters/04-Architekturentwurf.tex index 6dff1e7..b6823e9 100644 --- a/Chapters/04-Architekturentwurf.tex +++ b/Chapters/04-Architekturentwurf.tex @@ -1,12 +1,12 @@ -\section{Architekturentwurf} %(18-22 Seiten) +\chapter{Architekturentwurf} %(18-22 Seiten) -\subsection{Systemkontext} +\section{Systemkontext} - **Akteure**: DevOps-Engineer, Security-Team, Kubernetes-Cluster (Online/Air-Gapped) - **Fremdsysteme**: GitLab (CI/CD), Harbor (Registry), Vault (Secrets), Prometheus (Monitoring) -\subsection{Komponenten} +\section{Komponenten} \todox{Modulview umbennenen?} **4.2 Bausteinsicht - Ebene 1: Grobarchitektur** ``` @@ -47,7 +47,7 @@ | Vault (lokal) | Secrets Management | HashiCorp Vault | | Image-Sync-Script | Pull aus externer Registry, Push lokal | Custom Bash/Python | -\subsection{Laufzeit} +\section{Laufzeit} \todox{Laufzeitsicht umbennenen?} **4.5 Laufzeitsicht - Sequenzdiagramme** @@ -70,7 +70,7 @@ 7. Argo CD (lokal) $\rightarrow$ Sync zu Cluster $\rightarrow$ Pods starten ``` -\subsection{Topographie} %verteilungssicht +\section{Topographie} %verteilungssicht - **On-Premise**: Bare Metal oder VMware (3 Nodes: 1 Control Plane + 2 Worker) - **Cloud**: AWS EC2 oder Azure VMs (für Online-Cluster) - **Network**: Air-Gapped = physische Trennung, Transfer per USB/USB-Drive diff --git a/Chapters/05-Architekturbewertung.tex b/Chapters/05-Architekturbewertung.tex index f273cf3..ec5a3e1 100644 --- a/Chapters/05-Architekturbewertung.tex +++ b/Chapters/05-Architekturbewertung.tex @@ -1,7 +1,7 @@ -\section{Architekturbewertung} %(14-18 Seiten) +\chapter{Architekturbewertung} %(14-18 Seiten) -\subsection{ATAM: Utility Tree} +\section{ATAM: Utility Tree} \todox{Umbenennen in was gutes} ``` Verfügbarkeit (Weight: 0.3) @@ -20,7 +20,7 @@ Wartbarkeit (Weight: 0.3) Vollständige Dokumentation (arc42) (S9) ``` -\subsection{Szenarien-Bewertung} +\section{Szenarien-Bewertung} \todox{Besserer Titel} | Szenario | Auslöser | Erwartetes Ergebnis | Bewertung | |----------|----------|---------------------|-----------| @@ -29,7 +29,7 @@ Vollständige Dokumentation (arc42) (S9) | S5: Image-Verifikation | Unsigned Image in Registry | Argo CD blockiert Sync | Gut | | S7: Automatisierung | Manuelle Steps zählen | <10% manuelle Intervention | Gut | -\subsection{STRIDE-Security-Bewertung} +\section{STRIDE-Security-Bewertung} | Bedrohung | Risiko | Gegenmaßnahme | |-----------|--------|---------------| | **Spoofing** (Identity) | Mittel | mTLS, RBAC, OIDC-Auth | @@ -39,7 +39,7 @@ Vollständige Dokumentation (arc42) (S9) | **DoS** (Cluster) | Mittel | Resource Limits, Network Policies | | **Elevation** (Privileges) | Hoch | Pod Security Standards, least privilege | -\subsection{}Risiken identifizieren** +\section{}Risiken identifizieren** | Risiko | Wahrscheinlichkeit | Auswirkung | Gegenmaßnahme | |--------|-------------------|------------|---------------| | Image-Sync-Lücke (veraltete Images) | Mittel | Hoch | Automatisiertes Scheduling (alle 24h), Alerting | diff --git a/Chapters/06-PoC.tex b/Chapters/06-PoC.tex index 5ad9e32..d6790c1 100644 --- a/Chapters/06-PoC.tex +++ b/Chapters/06-PoC.tex @@ -1,13 +1,13 @@ -\section{Proof of Concept} % Fallstudie (10-14 Seiten) +\chapter{Proof of Concept} % Fallstudie (10-14 Seiten) -\subsection{Bestehendes Setup} +\section{Bestehendes Setup} \todox{besserer Name} - Bestehender Stack: 20-30 Container (Liste der Services) - Ursprüngliche Architektur: Monolithisch oder loosen coupled? - Migrationshürden: Stateful Services, Secrets, Network Policies -\subsection{Security-Gates} +\section{Security-Gates} \todox{besserer Name} | Gate | Implementierung | Ergebnis | |------|-----------------|----------| @@ -16,7 +16,7 @@ | Vulnerability Scan | Trivy $\rightarrow$ SARIF | 0 critical CVEs in Production | | Policy Enforcement | OPA Gatekeeper | Blockiert unsigned Images | -\subsection{Automatisierte Patch-Pipeline} +\section{Automatisierte Patch-Pipeline} ``` CVE-Veröffentlichung (z.B. Log4j) @@ -34,7 +34,7 @@ Argo CD $\rightarrow$ Auto-Sync (Air-Gapped nach 24h Sync) Deployed in <48h (gemessen: 36h) ``` -\subsection{}Metriken \& Ergebnisse** +\section{}Metriken \& Ergebnisse** | Metrik | Vorher | Nachher | Ziel | |--------|--------|---------|------| | Deployment-Zeit (Online) | 2h | 15min | kleiner gleich30min n | diff --git a/Chapters/07-Fazit.tex b/Chapters/07-Fazit.tex index f594ad9..00ca384 100644 --- a/Chapters/07-Fazit.tex +++ b/Chapters/07-Fazit.tex @@ -1,22 +1,22 @@ -\section{Fazit \& Ausblick} % (3-5 Seiten) +\chapter{Fazit \& Ausblick} % (3-5 Seiten) -\subsection{Zusammenfassung} +\section{Zusammenfassung} - AIr-Gapped Kubernetes mit Security-by-Design ist umsetzbar - Automatisierte Supply-Chain reduziert manuelle Steps um >90% - Patch-Reaktionszeit kleiner gleich48h erreichbar (mit 24h-Sync + Critical-Bypass) -\subsection{Beantwortung der Forschungsfrage} +\section{Beantwortung der Forschungsfrage} - n Security-Mechanismen: Signing, SBOM, Scanning automatisierbar - n Patch-Management: 24h-Sync + Alerting ermöglicht kleiner gleich48h Response - n Tradeoffs: Security Overhead akzeptabel (<10min CI), Komplexität beherrschbar -\subsection{Limitationen} +\section{Limitationen} - nur 20-30 Container (nicht massiv-skaliert) - keine Multi-Tenant-Szenarien getestet - Economic Analysis (Kosten) nicht durchgeführt -\subsection{Ausblick} +\section{Ausblick} - Erweiterung auf Multi-Cluster (Kandidaten: Kunde A, B, C) - Integration von Service Mesh (Istio) für Zero-Trust - Automatisierte Compliance-Reports (BSI-Kritis)