Compare commits
6 Commits
d1e44872f0
...
main
| Author | SHA1 | Date | |
|---|---|---|---|
| 352c251793 | |||
| 6f5f2534d3 | |||
| f3e0a7ddd4 | |||
| 3dd0611e20 | |||
| 5007e61c88 | |||
| cd2f8fa5d6 |
135
Chapters/01-Einleitung.tex
Normal file
135
Chapters/01-Einleitung.tex
Normal file
@@ -0,0 +1,135 @@
|
||||
%=========================================
|
||||
% Einleitung =
|
||||
%=========================================
|
||||
\chapter{Einleitung}
|
||||
|
||||
\todox{Einleitung schreiben am Ende (4-5 Seiten)}
|
||||
|
||||
\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
|
||||
|
||||
\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)
|
||||
|
||||
\section{Forschungsfrage}
|
||||
- Hauptfrage + 3 Unterfragen (siehe oben)
|
||||
|
||||
\section{Eigener Beitrag}
|
||||
- Praktische Migration aus Praktikum (20-30 Container) als Basis
|
||||
- Architektur-Entwurf mit Security-by-Design
|
||||
- Proof of Concept mit Security-Metriken
|
||||
|
||||
\section{Aufbau der Arbeit}
|
||||
- Kurze Beschreibung der Kapitel
|
||||
|
||||
|
||||
|
||||
\section{\LaTeX\ installieren und einrichten}
|
||||
\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,
|
||||
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.
|
||||
|
||||
\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.
|
||||
|
||||
\section{Entwicklungsumgebungen}
|
||||
|
||||
Hat man die passende Distribution installiert, bieten sich vielerlei Möglichkeiten an ein LaTeX-Projekt anzugehen oder einzelne Dokumente zu editieren. Unter
|
||||
Windows könnten dies folgende sein:
|
||||
|
||||
\begin{description}
|
||||
\item [TeXnicCenter] Umfangreiche Entwicklungsumgebung mit Projektorganisation und Autovervollständigung
|
||||
\item [TeXLipse] Eclipse-Plugin, das alle Vorteile der Eclipseumgebung mit LaTeX verbindet
|
||||
\item [TeXmaker] Einfacher LaTeX-Editor mit Pdf-Direktvorschau
|
||||
\end{description}
|
||||
|
||||
|
||||
Unter Linux stehen bereit:
|
||||
|
||||
\begin{description}
|
||||
\item [Gummi] Ebenfalls einfacher LaTeX-Editor mit Direktvorschau
|
||||
\item [TeXLipse] Auch für Linux erhältlich
|
||||
\item [Kile] Umfangreiche Entwicklungsumgebung, ähnlich wie TeXnicCenter
|
||||
\end{description}
|
||||
|
||||
Nach der Installation muss die Entwicklungsumgebung eingerichtet werden; dazu finden sich viele Anleitungen im Internet, die genau erklären, welche Distribution
|
||||
auf welche Weise eingerichtet wird. Insbesondere sollte der PDF-Viewer festgelegt werden, damit bei Gummi und TeXmaker die Direktvorschau funktioniert. Manchmal kommt es vor, dass die Ausgabe
|
||||
nach dem Kompilieren Umlaute und Sonderzeichen nicht richtig darstellt. Unter Linux hängt dies mit den unterschiedlichen Zeichensätzen zusammen, die unterstützt
|
||||
werden. Um diese Vorlage zu verwenden ist es notwendig, den verwendeten Zeichensatz des Editors bzw. der Entwicklungsumgebung auf den in diesem Dokument
|
||||
verwendeten Zeichensatz umzustellen: UTF-8 ohne BOM (Byte Order Mark).
|
||||
|
||||
\section{Werkzeuge}
|
||||
\label{sec:Werkzeuge}
|
||||
|
||||
\begin{description}
|
||||
\item [\href{http://jabref.sourceforge.net/}{JabRef}] Ein Literaturverwaltungsprogramm, welches das \textit{BibTeX}-Format einsetzt
|
||||
und mithilfe einer graphischen Oberfläche das Anlegen von Literaturverzeichnissen vereinfacht.
|
||||
|
||||
\end{description}
|
||||
|
||||
\section{Struktur und Gebrauch der Vorlage}
|
||||
|
||||
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.
|
||||
|
||||
\section{Struktur der Vorlage}
|
||||
\label{subsec:strukturvorlage}
|
||||
|
||||
%\begin{figure}
|
||||
%\centering
|
||||
%\includegraphics[width=0.85\textwidth]{Examples/strukturvorlage}
|
||||
%\caption{Verzeichnisbaum der Vorlage}
|
||||
%\label{fig:strukturvorlage}
|
||||
%\end{figure}
|
||||
|
||||
|
||||
\begin{description}
|
||||
\item [htw-i-mst-config.tex] Enthält alle zu ladenden Packages, Styleparameter für Hyperlinks, Codelistings und Literaturverzeichnis sowie globale Parameter
|
||||
für Tabellen und Beschriftungen. Im Besonderen befinden sich hier die Variablen für den eigenen Namen, Titel, Datum der Arbeit, den betreuenden Professor etc.
|
||||
|
||||
\item [htw-i-mst-vorlage.tex] Dies ist die Hauptdatei, in der alle notwendigen \textit{*.tex}-Dateien eingebunden werden, die zu dem Dokument gehören. Es empfiehlt sich
|
||||
die interne Struktur \textit{nicht} zu verändern. Eigene Kapitel werden an der dafür markierten Stelle eingebunden.
|
||||
|
||||
\item [Bibliography.bib] Zentrale Datei für die Literaturangaben, welche man z.B. mit JabRef verwalten kann.
|
||||
|
||||
\item [Chapters/] Ablageort für alle selbst angelegten Kapitel der Arbeit. Die Aufteilung in eigene Dateien erleichtert die Übersicht über den Quellcode.
|
||||
|
||||
\item [Graphics/] Ablageort für alle im Dokument benötigten Grafikdateien. Gerne darf man hier Unterverzeichnisse zur besseren Strukturierung anlegen.
|
||||
|
||||
\item [Examples/] Dieser Ordner enthält die in dieser Vorlage beigefügten LaTeX-Beispiele, welche vor der Abgabe der Arbeit selbstverständlich gelöscht werden sollten.
|
||||
|
||||
\item [Frontbackmatter/]
|
||||
In diesem Ordner sind all jene Dateien abgelegt, die -- außer dem Kerntext in \textit{Chapters/} -- die Gesamtheit der Abschlussarbeit ausmachen.
|
||||
\begin{description}
|
||||
\item [Titlepage.tex] Definiert die Titelseite der Abschlussarbeit. Diese Datei muss normalerweise nicht verändert werden.
|
||||
\item [Abbreviations.tex] Hier werden alle Abkürzungen hinterlegt, die im Dokument verwendet werden.
|
||||
\item [Abstract.tex] Eine kurze Zusammenfassung der Abschlussarbeit wird in diese Datei eingefügt.
|
||||
\item [Acknowledgements.tex] Dort finden Danksagungen ihren Platz.
|
||||
\item [ConfidentialityClause.tex] Beinhaltet den Sperrvermerk und ist nur zu verwenden, falls dies beispielsweise vom beteiligten Unternehmen gefordert wird.
|
||||
\item [Contents.tex] Enthält wichtige Eintragungen in die \textit{Table-of-Contents}. Diese Datei muss normalerweise nicht geändert werden.
|
||||
\item [Declaration.tex] Enthält die Selbständigkeitserklärung. Diese Datei darf nicht geändert werden.
|
||||
\item [Colophon.tex] Enthält einen Hinweis auf die Urheber dieser Vorlage. Diese Datei darf nicht geändert werden.
|
||||
\item [ListOfs.tex] Enthält die Einträge für die Tabellen- und Abbildungsverzeichnisse etc. und muss gewöhnlich nicht verändert werden.
|
||||
\end{description}
|
||||
|
||||
\end{description}
|
||||
|
||||
|
||||
\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
|
||||
(LaTeX benötigt mehrere Durchgänge um z.B. Referenzen richtig zuzuordnen).
|
||||
Hat man Änderungen in \textit{Bibliography.bib} bzw. \textit{Bibliography.tex} vorgenommen oder neue Zitate z.B. mittels \lstinline{\cite} eingefügt, muss erst mit
|
||||
\textit{BibLaTeX} und anschließend mitdem entsprechenden LaTeX-nach-PDF-Compiler übersetzt werden.
|
||||
|
||||
|
||||
62
Chapters/02-Grundlagen.tex
Normal file
62
Chapters/02-Grundlagen.tex
Normal file
@@ -0,0 +1,62 @@
|
||||
|
||||
|
||||
|
||||
\chapter{Theoretische Grundlagen} % (16-20 Seiten)
|
||||
|
||||
\section{Kubernetes-Architektur} %(4 Seiten)
|
||||
|
||||
\subsubsection{Control Plane}
|
||||
\todox{(API Server, Scheduler, Controller Manager, etcd)}
|
||||
|
||||
\subsubsection{Worker Nodes}
|
||||
\todox{(Kubelet, Kube-Proxy, Container Runtime)}
|
||||
|
||||
\subsubsection{Workloads}
|
||||
|
||||
\todox{Kernkonzepte: Pods, Deployments, Services, ConfigMaps, Secrets}
|
||||
|
||||
\section{Air-Gapped-Umgebungen} % (4 Seiten)
|
||||
|
||||
\subsubsection{Definition}
|
||||
\todox{Air-Gap vs. Netzwerktrennung vs. restricted network[1]}
|
||||
|
||||
\subsubsection{Herausforderungen}
|
||||
- Herausforderungen: Image-Versorgung, Dependency-Management, Patch-Verfügbarkeit[6][1]
|
||||
|
||||
\subsubsection{Best Practices}
|
||||
- Best Practices für Air-Gapped Kubernetes[7][8][1]
|
||||
|
||||
\section{Container-Supply-Chain Sicherheit} % (4 Seiten)
|
||||
|
||||
\subsubsection{Software Bill of Materials}
|
||||
- **SBOM** (Software Bill of Materials): Format (SPDX, CycloneDX), Tools (Syft)[1]
|
||||
|
||||
\subsubsection{Image-Signing}
|
||||
- **Image-Signing**: Cosign + Sigstore, Notary v2[1]
|
||||
|
||||
\subsubsection{Vulnerability-Scanning}
|
||||
- **Vulnerability Scanning**: Trivy, Grype, Clair[1]
|
||||
|
||||
\subsubsection{Policy Enforcement}
|
||||
- **Policy Enforcement**: OPA Gatekeeper, Kyverno für Image-Verification
|
||||
|
||||
|
||||
\section{GitOps}
|
||||
**2.4 GitOps \& Automatisierung** (3 Seiten)
|
||||
- GitOps-Prinzipien: Declarative Configuration, Continuous Sync[9]
|
||||
- **Flux CD**: Architektur, Sync-Strategien, Multi-Cluster[10][9]
|
||||
- CI/CD-Pipelines für Security Gates (GitLab CI, GitHub Actions)
|
||||
|
||||
\todox{denken ob arc42 oder nciht}
|
||||
**2.5 Softwarearchitektur-Dokumentation** (1.5 Seiten)
|
||||
- **arc42**-Template: 7 Perspektiven für Softwarearchitektur[11]
|
||||
- Anwendung auf Kubernetes-Systeme
|
||||
|
||||
\section{Architekturbewertungsmethoden}
|
||||
**2.6 Architekturbewertungsmethoden** (2.5 Seiten)
|
||||
|
||||
\subsubsection{Architecture Tradeoff Analysis Method}
|
||||
- **ATAM** (Architecture Tradeoff Analysis Method): Utility Tree, Szenarien, Risiken[12][13]
|
||||
|
||||
\subsubsection{STRIDE-Modell}
|
||||
- **STRIDE**-Modell für Security: Spoofing, Tampering, Repudiation, Info Disclosure, DoS, Elevation[1]
|
||||
42
Chapters/03-Anforderungen.tex
Normal file
42
Chapters/03-Anforderungen.tex
Normal file
@@ -0,0 +1,42 @@
|
||||
|
||||
\chapter{Anforderungserhebung} %(10-12 Seiten) %long dash
|
||||
|
||||
\section{Stakeholder-Analyse}
|
||||
- DevOps-Team (Automatisierung, Wartbarkeit)
|
||||
- Sicherheitsteam (Compliance, Audit)
|
||||
- Kunden (Air-Gapped-Betrieb, Support)
|
||||
- Entwickler (CI/CD-Geschwindigkeit)
|
||||
|
||||
\section{Funktionale Anforderungen}
|
||||
| ID | Anforderung | Priorität |
|
||||
|----|-------------|-----------|
|
||||
| FA-1 | Container-Image-Build mit automatischem SBOM | Hoch |
|
||||
| FA-2 | Image-Signing nach Build | Hoch |
|
||||
| FA-3 | Vulnerability-Scan vor Registry-Push | Hoch |
|
||||
| FA-4 | Nur signierte Images deployen (Policy Enforcement) | Hoch |
|
||||
| FA-5 | Automatisierte Image-Sync aus externer Registry (Air-Gapped) | Hoch |
|
||||
| FA-6 | Cluster-Provisioning mit kubeadm in <2h | Mittel |
|
||||
| FA-7 | Rollback bei Failed Deployment | Hoch |
|
||||
|
||||
\section{Qualitative Anforderungen} %(Qualitätsziele)
|
||||
| Qualitätsmerkmal | Zielwert | Messung |
|
||||
|------------------|----------|---------|
|
||||
| **Verfügbarkeit** (Air-Gapped) | 99,9% ohne Internet | Uptime-Monitoring |
|
||||
| **Security** | 0 kritische CVEs in Production | Trivy-Scan |
|
||||
| **Patch-Reaktionszeit** | kleiner gleich48h nach CVE-Veröffentlichung | Zeitstempel-Messung |
|
||||
| **Automatisierungsgrad** | >90% manuell $\rightarrow$ automatisiert | Steps zählen |
|
||||
| **Deployment-Zeit** (Air-Gapped) | kleiner gleich30min nach Sync | CI/CD-Logs |
|
||||
| **Wartbarkeit** | Vollständig dokumentiert (arc42) | Checkliste |
|
||||
|
||||
\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)
|
||||
|
||||
\section{Zielkonflikte}
|
||||
| Konflikt | Auflösung |
|
||||
|----------|-----------|
|
||||
| Security-Scans verlangsamen CI | Parallelisierung, Caching |
|
||||
| Air-Gapped-Sync vs. Aktualität | Automatisiertes Scheduling (alle 24h) |
|
||||
| Automatisierung vs. Komplexität | Dokumentation, Runbooks, Training |
|
||||
87
Chapters/04-Architekturentwurf.tex
Normal file
87
Chapters/04-Architekturentwurf.tex
Normal file
@@ -0,0 +1,87 @@
|
||||
|
||||
\chapter{Architekturentwurf} %(18-22 Seiten)
|
||||
|
||||
\section{Systemkontext}
|
||||
- **Akteure**: DevOps-Engineer, Security-Team, Kubernetes-Cluster (Online/Air-Gapped)
|
||||
- **Fremdsysteme**: GitLab (CI/CD), Harbor (Registry), Vault (Secrets), Prometheus (Monitoring)
|
||||
|
||||
|
||||
\section{Komponenten}
|
||||
\todox{Modulview umbennenen?}
|
||||
**4.2 Bausteinsicht - Ebene 1: Grobarchitektur**
|
||||
```
|
||||
|
||||
GitLab (Quelle der Wahrheit)
|
||||
(GitOps Manifeste, Helm Charts, CI/CD Pipelines, Infrastructure)
|
||||
|
||||
|
||||
Online-Cluster Air-Gapped-Cluster
|
||||
(Cloud/Datacenter) (On-Premise/Offline)
|
||||
|
||||
Argo CD Argo CD (lokal)
|
||||
Harbor Harbor Mirror
|
||||
Trivy (Scan) sync Trivy (lokal)
|
||||
Cosign Cosign (verify)
|
||||
|
||||
|
||||
```
|
||||
|
||||
**4.3 Bausteinsicht - Ebene 2: CI/CD-Pipeline mit Security Gates**
|
||||
| Stage | Tool | Output | Gate |
|
||||
|-------|------|--------|------|
|
||||
| Build | Kaniko/Buildah | Container Image | — |
|
||||
| SBOM | Syft | SBOM (SPDX) | SBOM vorhanden? |
|
||||
| Sign | Cosign | Image + Signature | Signierung erfolgreich? |
|
||||
| Scan | Trivy | Vulnerability Report | 0 kritische CVEs? |
|
||||
| Push | Harbor | Registry | — |
|
||||
| Sync | Script/Argo CD | Air-Gapped Mirror | Sync erfolgreich? |
|
||||
| Deploy | Argo CD | Pods running | Policy Enforcement? |
|
||||
|
||||
**4.4 Bausteinsicht - Ebene 3: Air-Gapped-Komponenten**[14][1]
|
||||
| Komponente | Verantwortung | Tool |
|
||||
|------------|---------------|------|
|
||||
| GitLab (lokal) | Versionskontrolle, CI/CD | GitLab CE On-Premise |
|
||||
| Harbor Mirror | Container-Registry, Image-Verification | Harbor mit Mirror-Feature |
|
||||
| Argo CD (lokal) | GitOps-Controller, Sync | Argo CD |
|
||||
| Trivy (lokal) | Vulnerability Scanning | Trivy Server |
|
||||
| Vault (lokal) | Secrets Management | HashiCorp Vault |
|
||||
| Image-Sync-Script | Pull aus externer Registry, Push lokal | Custom Bash/Python |
|
||||
|
||||
\section{Laufzeit}
|
||||
\todox{Laufzeitsicht umbennenen?}
|
||||
|
||||
**4.5 Laufzeitsicht - Sequenzdiagramme**
|
||||
|
||||
**Online-Deployment** (5 Schritte):
|
||||
```
|
||||
1. Developer $\rightarrow$ git push $\rightarrow$ GitLab
|
||||
2. GitLab $\rightarrow$ Trigger CI-Pipeline
|
||||
3. CI $\rightarrow$ Build $\rightarrow$ SBOM $\rightarrow$ Sign $\rightarrow$ Scan $\rightarrow$ Push zu Harbor
|
||||
4. Argo CD $\rightarrow$ Detektiert Änderung $\rightarrow$ Sync zu Cluster
|
||||
5. Pods starten, Health-Checks
|
||||
```
|
||||
|
||||
**Air-Gapped-Deployment** (7 Schritte):[14]
|
||||
```
|
||||
1-3. Wie Online (extern)
|
||||
4. Sync-Script $\rightarrow$ Pull Images aus externer Harbor
|
||||
5. Bastion/USB $\rightarrow$ Transfer zu Air-Gapped-Netzwerk
|
||||
6. Harbor Mirror $\rightarrow$ Import Images
|
||||
7. Argo CD (lokal) $\rightarrow$ Sync zu Cluster $\rightarrow$ Pods starten
|
||||
```
|
||||
|
||||
\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
|
||||
|
||||
**4.7 Architekturentscheidungen begründen**
|
||||
| Entscheidung | Alternative | Begründung |
|
||||
|--------------|-------------|------------|
|
||||
| **Argo CD** statt Flux | Flux CD | Bessere UI, Active Community, Multi-Cluster [9][10] |
|
||||
| **Harbor** statt Docker Registry | Docker Registry | Enterprise-Features, Image-Verification, Scanning [1] |
|
||||
| **Cosign** statt Notary v1 | Notary v1 | Sigstore-Ökosystem, Keyless Signing, aktueller [1] |
|
||||
| **Trivy** statt Grype | Grype | Schnellere Scans, CI-Integration, aktiver [1] |
|
||||
| **kubeadm** statt Managed K8s | EKS/AKS | Volle Kontrolle für Air-Gapped [7] |
|
||||
|
||||
***
|
||||
57
Chapters/05-Architekturbewertung.tex
Normal file
57
Chapters/05-Architekturbewertung.tex
Normal file
@@ -0,0 +1,57 @@
|
||||
|
||||
\chapter{Architekturbewertung} %(14-18 Seiten)
|
||||
|
||||
\section{ATAM: Utility Tree}
|
||||
\todox{Umbenennen in was gutes}
|
||||
```
|
||||
Verfügbarkeit (Weight: 0.3)
|
||||
Air-Gapped-Betrieb 99,9% ohne Internet (Szenario S1)
|
||||
Failover-Zeit <5 Min bei Cluster-Ausfall (S2)
|
||||
Cluster-Provisioning <2h (S3)
|
||||
|
||||
Security (Weight: 0.4)
|
||||
0 kritische CVEs in Production (S4)
|
||||
Image-Verifizierung (nur signierte Images) (S5)
|
||||
Patch-Reaktionszeit kleiner gleich48h (S6)
|
||||
|
||||
Wartbarkeit (Weight: 0.3)
|
||||
Automatisierungsgrad >90% (S7)
|
||||
Deployment-Zeit kleiner gleich30min (Air-Gapped) (S8)
|
||||
Vollständige Dokumentation (arc42) (S9)
|
||||
```
|
||||
|
||||
\section{Szenarien-Bewertung}
|
||||
\todox{Besserer Titel}
|
||||
| Szenario | Auslöser | Erwartetes Ergebnis | Bewertung |
|
||||
|----------|----------|---------------------|-----------|
|
||||
| S1: Air-Gapped ohne Internet | Netzwerktrennung | System läuft voll funktionsfähig | Gut |
|
||||
| S4: CVE-Veröffentlichung | Critical CVE in Image | Patch innerhalb 48h deployed | Mittel (Risiko) |
|
||||
| S5: Image-Verifikation | Unsigned Image in Registry | Argo CD blockiert Sync | Gut |
|
||||
| S7: Automatisierung | Manuelle Steps zählen | <10% manuelle Intervention | Gut |
|
||||
|
||||
\section{STRIDE-Security-Bewertung}
|
||||
| Bedrohung | Risiko | Gegenmaßnahme |
|
||||
|-----------|--------|---------------|
|
||||
| **Spoofing** (Identity) | Mittel | mTLS, RBAC, OIDC-Auth |
|
||||
| **Tampering** (Image) | Hoch | Image-Signing (Cosign), Verification |
|
||||
| **Repudiation** (Audit) | Niedrig | Audit-Logging (Falco) |
|
||||
| **Info Disclosure** (Secrets) | Hoch | Vault, Encryption at Rest |
|
||||
| **DoS** (Cluster) | Mittel | Resource Limits, Network Policies |
|
||||
| **Elevation** (Privileges) | Hoch | Pod Security Standards, least privilege |
|
||||
|
||||
\section{}Risiken identifizieren**
|
||||
| Risiko | Wahrscheinlichkeit | Auswirkung | Gegenmaßnahme |
|
||||
|--------|-------------------|------------|---------------|
|
||||
| Image-Sync-Lücke (veraltete Images) | Mittel | Hoch | Automatisiertes Scheduling (alle 24h), Alerting |
|
||||
| Man-in-the-Middle bei USB-Transfer | Niedrig | Hoch | Image-Signing, Hash-Verification |
|
||||
| Human Error bei Air-Gapped-Setup | Mittel | Hoch | Runbooks, Dokumentation, Training [7] |
|
||||
| Trivy-Database veraltet (Air-Gapped) | Hoch | Mittel | Automatisierte DB-Sync mit externer Quelle |
|
||||
|
||||
**5.5 Tradeoff-Analyse**
|
||||
| Tradeoff | Lösung |
|
||||
|----------|--------|
|
||||
| Security-Scans verlangsamen CI (5-10min) | Parallelisierung, Caching, Incremental Scans |
|
||||
| Air-Gapped-Aktualität vs. Sicherheit | 24h-Sync + Critical-Patch-Bypass-Prozess |
|
||||
| Automatisierungsgewinn vs. Komplexität | Graduelle Einführung, Documentation First |
|
||||
|
||||
***
|
||||
51
Chapters/06-PoC.tex
Normal file
51
Chapters/06-PoC.tex
Normal file
@@ -0,0 +1,51 @@
|
||||
|
||||
\chapter{Proof of Concept} % Fallstudie (10-14 Seiten)
|
||||
|
||||
\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
|
||||
|
||||
\section{Security-Gates}
|
||||
\todox{besserer Name}
|
||||
| Gate | Implementierung | Ergebnis |
|
||||
|------|-----------------|----------|
|
||||
| SBOM-Erstellung | Syft $\rightarrow$ SPDX JSON | 100\% der Images haben SBOM |
|
||||
| Image-Signing | Cosign $\rightarrow$ Sigstore | 100\% signiert |
|
||||
| Vulnerability Scan | Trivy $\rightarrow$ SARIF | 0 critical CVEs in Production |
|
||||
| Policy Enforcement | OPA Gatekeeper | Blockiert unsigned Images |
|
||||
|
||||
\section{Automatisierte Patch-Pipeline}
|
||||
```
|
||||
CVE-Veröffentlichung (z.B. Log4j)
|
||||
|
||||
Trivy-Scan detektiert CVE (automatisch)
|
||||
|
||||
Alert an DevOps-Team (Slack/Email)
|
||||
|
||||
Developer $\rightarrow$ Update Dependency $\rightarrow$ Push
|
||||
|
||||
CI-Pipeline $\rightarrow$ Rebuild $\rightarrow$ Re-Scan $\rightarrow$ Re-Sign
|
||||
|
||||
Argo CD $\rightarrow$ Auto-Sync (Air-Gapped nach 24h Sync)
|
||||
|
||||
|
||||
Deployed in <48h (gemessen: 36h)
|
||||
```
|
||||
|
||||
\section{}Metriken \& Ergebnisse**
|
||||
| Metrik | Vorher | Nachher | Ziel |
|
||||
|--------|--------|---------|------|
|
||||
| Deployment-Zeit (Online) | 2h | 15min | kleiner gleich30min n |
|
||||
| Deployment-Zeit (Air-Gapped) | 1 Tag (manuell) | 30min (auto) | kleiner gleich45min n |
|
||||
| kritische CVEs in Production | unbekannt | 0 | 0 n |
|
||||
| Patch-Reaktionszeit | <7 Tage | 36h | kleiner gleich48h n |
|
||||
| Automatisierungsgrad | 40% | 92% | >90% n |
|
||||
|
||||
**6.5 Lessons Learned**
|
||||
- Trivy-Database muss separat gemanagt werden (Air-Gapped)
|
||||
- Image-Signing fügt ~2min zu CI-Pipeline hinzu (akzeptabel)
|
||||
- Documentation ist kritisch für Air-Gapped-Setup ( Runbooks schreiben!)
|
||||
|
||||
***
|
||||
24
Chapters/07-Fazit.tex
Normal file
24
Chapters/07-Fazit.tex
Normal file
@@ -0,0 +1,24 @@
|
||||
|
||||
\chapter{Fazit \& Ausblick} % (3-5 Seiten)
|
||||
|
||||
\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)
|
||||
|
||||
\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
|
||||
|
||||
\section{Limitationen}
|
||||
- nur 20-30 Container (nicht massiv-skaliert)
|
||||
- keine Multi-Tenant-Szenarien getestet
|
||||
- Economic Analysis (Kosten) nicht durchgeführt
|
||||
|
||||
\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)
|
||||
|
||||
***
|
||||
@@ -1,10 +1,11 @@
|
||||
%********************************************************************
|
||||
% Appendix
|
||||
%*******************************************************
|
||||
\chapter{Erster Abschnitt des Anhangs}
|
||||
\chapter{Erster Abschnitt des Anhangs} %(~5-10 Seiten)
|
||||
In den Anhang gehören "`Hintergrundinformationen"', also weiterführende Information, ausführliche Listings, Graphen, Diagramme oder Tabellen, die den Haupttext mit detaillierten Informationen ergänzen.
|
||||
|
||||
\blindtext
|
||||
\blindtext
|
||||
\blindtext
|
||||
|
||||
- A: arc42-Dokumentation (vollständig)
|
||||
- B: CI/CD-Pipeline-Code (GitLab CI YAML)
|
||||
- C: Image-Sync-Script (Bash/Python)
|
||||
- D: Argo CD Manifests
|
||||
- E: Trivy Scan-Reports (Beispiele)
|
||||
@@ -6,7 +6,12 @@
|
||||
\addcontentsline{toc}{chapter}{Abkürzungsverzeichnis}
|
||||
%Hier alle benötigten Abkürzungen einfügen
|
||||
\begin{acronym}[WLAN] % LONGEST ACRONYM HERE FOR CORRECT SPACING
|
||||
\acro{WLAN}{Wireless Local Area Network}
|
||||
\acro{K8s}{Kubernetes}
|
||||
\acro{CVE}{Common Vulnerabilities and Exposures}
|
||||
\acro{CVSS}{Common Vulnerability Scoring System}
|
||||
|
||||
%TODO: entfernen wenn beispiele entfernt werden
|
||||
\acro{WLAN}{Wireless Local Area Network}
|
||||
\acro{TCP}{Transmission Control Protocol}
|
||||
\acro{GoF}{Gang of Four}
|
||||
\end{acronym}
|
||||
|
||||
@@ -3,6 +3,7 @@
|
||||
%*******************************************************
|
||||
\pdfbookmark[0]{Zusammenfassung}{Zusammenfassung}
|
||||
\chapter*{Zusammenfassung}
|
||||
\todox{Abstract am Ende schreiben}
|
||||
Kurze Zusammenfassung des Inhaltes in deutscher Sprache, der Umfang beträgt zwischen einer halben und einer ganzen DIN A4-Seite.
|
||||
|
||||
Orientieren Sie sich bei der Aufteilung bzw. dem Inhalt Ihrer Zusammenfassung an Kent Becks Artikel: \url{http://plg.uwaterloo.ca/~migod/research/beckOOPSLA.html}.
|
||||
@@ -3,8 +3,9 @@
|
||||
%*******************************************************
|
||||
\pdfbookmark[0]{Danksagung}{acknowledgments}
|
||||
|
||||
% Beispiel für ein sinnvolles Zitat
|
||||
% Beispiel für ein sinnvolles Zitat
|
||||
\begin{flushright}{\slshape
|
||||
\todox{Sinnvolles Zitat finden das nicht 0815 ist}
|
||||
We have seen that computer programming is an art, \\
|
||||
because it applies accumulated knowledge to the world, \\
|
||||
because it requires skill and ingenuity, and especially \\
|
||||
@@ -19,9 +20,11 @@
|
||||
\let\cleardoublepage\relax
|
||||
\let\cleardoublepage\relax
|
||||
\chapter*{Danksagung}
|
||||
Hier können Sie Personen danken, die zum Erfolg der Arbeit beigetragen haben, beispielsweise Ihren Betreuern in der Firma, Ihren Professoren/Dozenten an der htw saar, Freunden, Familie usw.
|
||||
|
||||
An dieser Stelle möchte ich allen Personen meinen herzlichen Dank aussprechen, die mich während der Erstellung dieser wissenschaftlichen Arbeit unterstützt haben. Mein besonderer Dank gilt meinem Betreuer Christoph Karls für die hilfreichen Anregungen und die wertvollen Rückmeldungen während des gesamten Arbeitsprozesses.
|
||||
Darüber hinaus danke ich \myCompany für ihre Bereitschaft, mich bei der Bachelorarbeit zu unterstützen.
|
||||
|
||||
Ebenso danke ich meiner Familie für ihre Unterstützung, ihre Geduld und die motivierende Begleitung. Ohne ihre Hilfe wäre die Anfertigung dieser Arbeit in dieser Form nicht möglich gewesen.
|
||||
|
||||
|
||||
\endgroup
|
||||
|
||||
@@ -1,12 +0,0 @@
|
||||
\pagestyle{empty}
|
||||
|
||||
\hfill
|
||||
|
||||
\vfill
|
||||
|
||||
|
||||
\pdfbookmark[0]{Colophon}{colophon}
|
||||
\section*{Colophon}
|
||||
%Dieses Dokument wurde mit der \LaTeX-Vorlage für Abschlussarbeiten an der htw saar im Bereich Informatik/Mechatronik-Sensortechnik erstellt (\currentVersion). Die Vorlage wurde von Yves Hary und Andr\'e Miede entwickelt (mit freundlicher Unterstützung von Thomas Kretschmer, Helmut G. Folz und Martina Lehser). Daten: (F)\makeatletter\f@size\makeatother\ -- (B)\the\textwidth\ -- (H)\the\textheight\
|
||||
|
||||
This document has been created with the theses \LaTeX template provided by htw saar, Saarland University of Applied Sciences, Informatics/Mechatronics and Sensor Technology (\currentVersion). This template has been created by Yves Hary and Andr\'e Miede (with kind support from Thomas Kretschmer, Helmut G. Folz and Martina Lehser). Data: (F)\makeatletter\f@size\makeatother\ -- (B)\the\textwidth\ -- (H)\the\textheight\
|
||||
@@ -1,50 +0,0 @@
|
||||
%*******************************************************
|
||||
% Titlepage
|
||||
% [Nicht zu verändern]
|
||||
%*******************************************************
|
||||
\begin{titlepage}\linespread{1.5}\selectfont
|
||||
\noindent\includegraphics[width=3cm]{Graphics/logo-dfhi} \hfill \includegraphics[width=3cm]{Graphics/logo-uni-de-lorraine} \medskip
|
||||
|
||||
\noindent\includegraphics[width=\linewidth]{Graphics/htwsaar_Logo_inwi_head_VF_4C_crop}
|
||||
|
||||
\begin{center}
|
||||
\large
|
||||
\hfill
|
||||
\vfill
|
||||
\begingroup
|
||||
\Large\bfseries\myDegreeType-Thesis
|
||||
\endgroup
|
||||
|
||||
\bigskip
|
||||
|
||||
zur Erlangung des akademischen Grades \\
|
||||
\myDegree \\
|
||||
an der \myUni \\
|
||||
und \\
|
||||
der Université de Lorraine, Metz \\
|
||||
im Studiengang \myDegreeCourse \\
|
||||
des Deutsch-Französischen Hochschulinstituts (DFHI / ISFATES) \\
|
||||
|
||||
\vfill
|
||||
|
||||
\begingroup
|
||||
\Large\bfseries\myTitle
|
||||
\endgroup
|
||||
|
||||
\bigskip
|
||||
|
||||
vorgelegt von \\
|
||||
\myName
|
||||
|
||||
\vfill
|
||||
|
||||
betreut und begutachtet von \\
|
||||
\myFirstProf \\
|
||||
\mySecondProf
|
||||
|
||||
\vfill
|
||||
|
||||
\myLocation, \myTime
|
||||
|
||||
\end{center}
|
||||
\end{titlepage}
|
||||
Binary file not shown.
Binary file not shown.
@@ -8,20 +8,16 @@
|
||||
% ****************************************************************************************************
|
||||
% 1. Personal data and user ad-hoc commands
|
||||
% ****************************************************************************************************
|
||||
\newcommand{\myTitle}{Eine \LaTeX-Vorlage für Abschlussarbeiten im Bereich Informatik/Mechatronik-Sensortechnik (inkl. DFHI) an der htw saar}
|
||||
\newcommand{\myTitle}{Security-Compliant Container-Supply-Chain und Patch-Management in isolierten Kubernetes-Umgebungen}
|
||||
\newcommand{\myDegree}{Bachelor of Science (B.\,Sc.)\xspace}
|
||||
%\newcommand{\myDegree}{Master of Science (M.\,Sc.)\xspace}
|
||||
\newcommand{\myDegreeType}{Bachelor\xspace}
|
||||
%\newcommand{\myDegreeType}{Master\xspace}
|
||||
\newcommand{\myDegreeCourse}{Praktische Informatik}
|
||||
%\newcommand{\myDegreeCourse}{Informatik und Web-Engineering}
|
||||
%\newcommand{\myDegreeCourse}{Kommunikationsinformatik}
|
||||
%\newcommand{\myDegreeCourse}{Produktionsinformatik}
|
||||
\newcommand{\myName}{Max Muster\xspace}
|
||||
\newcommand{\myName}{Tim Wall\xspace}
|
||||
\newcommand{\myUni}{Hochschule für Technik und Wirtschaft des Saarlandes\xspace}
|
||||
\newcommand{\myCompany}{SoftwareCenter Musterhausen\xspace}
|
||||
\newcommand{\myFirstProf}{Prof. Dr.-Ing. André Miede\xspace}
|
||||
\newcommand{\mySecondProf}{Prof. Dr. Thomas Kretschmer\xspace}
|
||||
\newcommand{\myCompany}{psb intralogistics GmbH\xspace}
|
||||
\newcommand{\myFirstProf}{Prof. Dr.-Ing. Steffen Knapp\xspace}
|
||||
\newcommand{\mySecondProf}{Christoph Karls, M.Sc.\xspace}
|
||||
\newcommand{\myLocation}{Saarbrücken\xspace}
|
||||
\newcommand{\myTime}{Tag.~Monat~Jahr\xspace}
|
||||
\newcommand{\currentVersion}{Version 2.25, August 2024\xspace} % TODO: ggf. über git Versionsinformationen automatisch bereitstellen und verwenden
|
||||
|
||||
Binary file not shown.
BIN
thesis.pdf
Normal file
BIN
thesis.pdf
Normal file
Binary file not shown.
@@ -30,9 +30,8 @@
|
||||
% Frontmatter
|
||||
%*******************************************************
|
||||
\include{FrontBackmatter/Titlepage}
|
||||
%\include{FrontBackmatter/Titlepage_dfhi} % <-- für DFHI-Studiengänge
|
||||
\cleardoublepage\include{FrontBackmatter/Declaration}
|
||||
%\cleardoublepage\include{FrontBackmatter/ConfidentialityClause} % <-- sollte in der Regel nicht notwendig sein und mit Betreuer/Unternehmen abgeklärt werden
|
||||
\cleardoublepage\include{FrontBackmatter/ConfidentialityClause} % <-- sollte in der Regel nicht notwendig sein und mit Betreuer/Unternehmen abgeklärt werden
|
||||
\cleardoublepage\include{FrontBackmatter/Abstract}
|
||||
\cleardoublepage\include{FrontBackmatter/Acknowledgments}
|
||||
\cleardoublepage\include{FrontBackmatter/Contents}
|
||||
@@ -44,8 +43,15 @@
|
||||
\pagenumbering{arabic}
|
||||
\pagestyle{headings}
|
||||
%\pagestyle{scrheadings}
|
||||
\cleardoublepage\include{Examples/Einleitung} % Diese Einbindungen werden natürlich entfernt, wenn es an die richtige
|
||||
\cleardoublepage\include{Examples/Beispiele} % Abschlussarbeit geht!
|
||||
\cleardoublepage\include{Chapters/01-Einleitung}
|
||||
\cleardoublepage\include{Chapters/02-Grundlagen}
|
||||
\cleardoublepage\include{Chapters/03-Anforderungen}
|
||||
\cleardoublepage\include{Chapters/04-Architekturentwurf}
|
||||
\cleardoublepage\include{Chapters/05-Architekturbewertung}
|
||||
\cleardoublepage\include{Chapters/06-PoC}
|
||||
\cleardoublepage\include{Chapters/07-Fazit}
|
||||
%\cleardoublepage\include{Examples/Einleitung} % Diese Einbindungen werden natürlich entfernt, wenn es an die richtige
|
||||
%\cleardoublepage\include{Examples/Beispiele} % Abschlussarbeit geht!
|
||||
%\cleardoublepage\include{Chapters/KapitelBachelorarbeit} % <<< Hier alle Chapter der Abschlussarbeit (einzeln) einbinden
|
||||
|
||||
%********************************************************************
|
||||
Reference in New Issue
Block a user