Init: RoggioApp Architecture, Prisma Schema, API MVP
This commit is contained in:
@@ -0,0 +1,29 @@
|
||||
# RoggioApp - Replikation & Hardcore-Datenschutz (Online vs. On-Premise)
|
||||
|
||||
## Die Anforderung
|
||||
Zwei aktive Datenbanken (Cloud bei Hetzner + On-Premise auf dem Gelände).
|
||||
**Das Ziel:** Sensible Daten (Ausweisnummern, IBANs, Kreditkarten) dürfen **niemals** in der Cloud-Datenbank liegen. Die Cloud hat nur Pointer (Referenzen) auf diese Daten. Die echte Entschlüsselung und Speicherung findet nur im Safe (On-Premise) statt.
|
||||
|
||||
## Die Lösungsarchitektur (Der Hybrid-Ansatz)
|
||||
|
||||
Wir können nicht einfach eine blinde PostgreSQL-Replikation (Master-Slave) einschalten. Wenn die Cloud der Master ist, hat sie alle Daten. Wenn wir das verhindern wollen, müssen wir die Applikations-Architektur anpassen.
|
||||
|
||||
### 1. Tokenisierung (Das Pointer-Konzept)
|
||||
Die Cloud-Datenbank (Hetzner) speichert keine JSONB-Traits mit sensiblen Daten.
|
||||
Anstatt: `traits: { iban: "DE1234...", passport: "X123" }`
|
||||
Speichert die Cloud: `traits: { secure_vault_id: "vault_abc123" }`
|
||||
|
||||
### 2. Der Vault (On-Premise)
|
||||
Auf dem Server im Gelände läuft ein isolierter "Vault-Service" (z.B. HashiCorp Vault oder eine eigene hochsichere Micro-Postgres-Instanz).
|
||||
Dort liegt die Tabelle `Vault_Data` mit den Inhalten für `vault_abc123`.
|
||||
|
||||
### 3. Wie die API damit umgeht
|
||||
* **Der Cloud-API-Server (Hetzner):** Handelt nur Termine, Namen (ohne Ausweise), Unit-Kapazitäten und Buchungs-Slots. Wenn ein Gast via WordPress bucht und seine IBAN eintippt, schickt die Cloud-API diese IBAN *direkt* durch einen verschlüsselten Tunnel (WireGuard) an den Vault On-Premise, holt sich eine generierte `vault_id` zurück und speichert *nur diese ID* in der Cloud-Datenbank.
|
||||
* **Der On-Premise-API-Server (Das Kollektiv-Cockpit):** Wenn du zu Hause im Netzwerk die Buchung aufmachst, lädt das Frontend die Buchung (aus der Cloud-DB) PLUS die sensiblen Daten (aus dem lokalen Vault) und fügt sie in deinem Browser zusammen.
|
||||
|
||||
### 4. Was passiert bei Internet-Ausfall?
|
||||
Wenn das Gelände offline ist, kann die Cloud immer noch fröhlich neue Buchungen über WordPress annehmen. Sie speichert die sensiblen Daten (z.B. Ausweisfotos) temporär hochverschlüsselt (asymmetrisch, z.B. mit PGP) zwischen. Sobald die On-Premise-Kiste wieder online geht, zieht sie sich die verschlüsselten Pakete, entschlüsselt sie mit ihrem privaten Offline-Key, speichert sie im Vault und sagt der Cloud: "Hab ich, du kannst das Original jetzt löschen."
|
||||
|
||||
## Claras Einschätzung
|
||||
Das ist Enterprise-Level Security (Zero Trust für die Cloud).
|
||||
Für Prisma bedeutet das: Wir trennen die sensiblen Traits strikt ab. Wir können das relativ elegant bauen, indem wir für sensible Traits eine eigene Prisma-Logik verwenden, die immer mit einem On-Prem-Service redet, statt sie ins normale Cloud-JSONB-Feld zu kippen.
|
||||
Reference in New Issue
Block a user