mach compilebar
This commit is contained in:
@@ -3,33 +3,29 @@
|
||||
%=========================================
|
||||
\chapter{Einleitung}
|
||||
|
||||
\todox{Einleitung schreiben am Ende}
|
||||
\todox{Einleitung schreiben am Ende (4-5 Seiten)}
|
||||
|
||||
|
||||
### **1. Einleitung** (4-5 Seiten)
|
||||
|
||||
**1.1 Problemstellung**
|
||||
\subsection{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
|
||||
|
||||
**1.2 Zielsetzung**
|
||||
\subsection{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)
|
||||
|
||||
**1.3 Forschungsfrage**
|
||||
\subsection{Forschungsfrage}
|
||||
- Hauptfrage + 3 Unterfragen (siehe oben)
|
||||
|
||||
**1.4 Eigener Beitrag**
|
||||
\subsection{Eigener Beitrag}
|
||||
- Praktische Migration aus Praktikum (20-30 Container) als Basis
|
||||
- Architektur-Entwurf mit Security-by-Design
|
||||
- Proof of Concept mit Security-Metriken
|
||||
|
||||
**1.5 Aufbau der Arbeit**
|
||||
\subsection{Aufbau der Arbeit}
|
||||
- Kurze Beschreibung der Kapitel
|
||||
|
||||
***
|
||||
|
||||
|
||||
\section{\LaTeX\ installieren und einrichten}
|
||||
|
||||
@@ -42,7 +42,7 @@
|
||||
|
||||
|
||||
\subsection{GitOps}
|
||||
**2.4 GitOps & Automatisierung** (3 Seiten)
|
||||
**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)
|
||||
|
||||
@@ -23,9 +23,9 @@
|
||||
|------------------|----------|---------|
|
||||
| **Verfügbarkeit** (Air-Gapped) | 99,9% ohne Internet | Uptime-Monitoring |
|
||||
| **Security** | 0 kritische CVEs in Production | Trivy-Scan |
|
||||
| **Patch-Reaktionszeit** | ≤48h nach CVE-Veröffentlichung | Zeitstempel-Messung |
|
||||
| **Automatisierungsgrad** | >90% manuell → automatisiert | Steps zählen |
|
||||
| **Deployment-Zeit** (Air-Gapped) | ≤30min nach Sync | CI/CD-Logs |
|
||||
| **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 |
|
||||
|
||||
\subsection{Randbedingungen}
|
||||
|
||||
@@ -10,24 +10,20 @@
|
||||
\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) │ │
|
||||
│ └──────────────┘ │ │ └──────────────────┘ │
|
||||
└──────────────────────┘ └──────────────────────────┘
|
||||
|
||||
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**
|
||||
@@ -58,20 +54,20 @@
|
||||
|
||||
**Online-Deployment** (5 Schritte):
|
||||
```
|
||||
1. Developer → git push → GitLab
|
||||
2. GitLab → Trigger CI-Pipeline
|
||||
3. CI → Build → SBOM → Sign → Scan → Push zu Harbor
|
||||
4. Argo CD → Detektiert Änderung → Sync zu Cluster
|
||||
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 → Pull Images aus externer Harbor
|
||||
5. Bastion/USB → Transfer zu Air-Gapped-Netzwerk
|
||||
6. Harbor Mirror → Import Images
|
||||
7. Argo CD (lokal) → Sync zu Cluster → Pods starten
|
||||
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
|
||||
```
|
||||
|
||||
\subsection{Topographie} %verteilungssicht
|
||||
|
||||
@@ -5,29 +5,29 @@
|
||||
\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)
|
||||
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 ≤48h (S6)
|
||||
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 ≤30min (Air-Gapped) (S8)
|
||||
└── Vollständige Dokumentation (arc42) (S9)
|
||||
Automatisierungsgrad >90% (S7)
|
||||
Deployment-Zeit kleiner gleich30min (Air-Gapped) (S8)
|
||||
Vollständige Dokumentation (arc42) (S9)
|
||||
```
|
||||
|
||||
\subsection{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 |
|
||||
| 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 |
|
||||
|
||||
\subsection{STRIDE-Security-Bewertung}
|
||||
| Bedrohung | Risiko | Gegenmaßnahme |
|
||||
|
||||
@@ -11,36 +11,37 @@
|
||||
\todox{besserer Name}
|
||||
| Gate | Implementierung | Ergebnis |
|
||||
|------|-----------------|----------|
|
||||
| SBOM-Erstellung | Syft → SPDX JSON | 100% der Images haben SBOM |
|
||||
| Image-Signing | Cosign → Sigstore | 100% signiert |
|
||||
| Vulnerability Scan | Trivy → SARIF | 0 critical CVEs in Production |
|
||||
| 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 |
|
||||
|
||||
\subsection{Automatisierte Patch-Pipeline}
|
||||
```
|
||||
CVE-Veröffentlichung (z.B. Log4j)
|
||||
↓
|
||||
|
||||
Trivy-Scan detektiert CVE (automatisch)
|
||||
↓
|
||||
|
||||
Alert an DevOps-Team (Slack/Email)
|
||||
↓
|
||||
Developer → Update Dependency → Push
|
||||
↓
|
||||
CI-Pipeline → Rebuild → Re-Scan → Re-Sign
|
||||
↓
|
||||
Argo CD → Auto-Sync (Air-Gapped nach 24h Sync)
|
||||
↓
|
||||
|
||||
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)
|
||||
```
|
||||
|
||||
\subsection{}Metriken & Ergebnisse**
|
||||
\subsection{}Metriken \& Ergebnisse**
|
||||
| Metrik | Vorher | Nachher | Ziel |
|
||||
|--------|--------|---------|------|
|
||||
| Deployment-Zeit (Online) | 2h | 15min | ≤30min ✅ |
|
||||
| Deployment-Zeit (Air-Gapped) | 1 Tag (manuell) | 30min (auto) | ≤45min ✅ |
|
||||
| kritische CVEs in Production | unbekannt | 0 | 0 ✅ |
|
||||
| Patch-Reaktionszeit | <7 Tage | 36h | ≤48h ✅ |
|
||||
| Automatisierungsgrad | 40% | 92% | >90% ✅ |
|
||||
| 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)
|
||||
|
||||
@@ -1,15 +1,15 @@
|
||||
|
||||
\section{Fazit & Ausblick} % (3-5 Seiten)
|
||||
\section{Fazit \& Ausblick} % (3-5 Seiten)
|
||||
|
||||
\subsection{Zusammenfassung}
|
||||
- AIr-Gapped Kubernetes mit Security-by-Design ist umsetzbar
|
||||
- Automatisierte Supply-Chain reduziert manuelle Steps um >90%
|
||||
- Patch-Reaktionszeit ≤48h erreichbar (mit 24h-Sync + Critical-Bypass)
|
||||
- Patch-Reaktionszeit kleiner gleich48h erreichbar (mit 24h-Sync + Critical-Bypass)
|
||||
|
||||
\subsection{Beantwortung der Forschungsfrage}
|
||||
- ✅ Security-Mechanismen: Signing, SBOM, Scanning automatisierbar
|
||||
- ✅ Patch-Management: 24h-Sync + Alerting ermöglicht ≤48h Response
|
||||
- ✅ Tradeoffs: Security Overhead akzeptabel (<10min CI), Komplexität beherrschbar
|
||||
- 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}
|
||||
- nur 20-30 Container (nicht massiv-skaliert)
|
||||
|
||||
@@ -1,10 +1,9 @@
|
||||
%********************************************************************
|
||||
% 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.
|
||||
|
||||
### **Anhang** (~5-10 Seiten)
|
||||
- A: arc42-Dokumentation (vollständig)
|
||||
- B: CI/CD-Pipeline-Code (GitLab CI YAML)
|
||||
- C: Image-Sync-Script (Bash/Python)
|
||||
|
||||
Reference in New Issue
Block a user