Defense in Depth
Wie read-only-Architektur, AES-256-Verschlüsselung und RLS zu einem Sicherheitsmodell zusammenwirken
Sicherheit ist bei Manalyx kein Feature-Regal, sondern eine Architekturentscheidung, die in jedes Modul hineinwirkt. Die Anwendung ist strukturell read-only gegenüber externen Quellen (keine Broker-API-Write-Scopes, keine PSD2-Write-Tokens, keine Krypto-Signier-Schicht), sensible Felder werden vor der Datenbank verschlüsselt, und Postgres Row-Level Security stellt sicher, dass Abfragen eines Nutzers nur dessen Zeilen zurückliefern. Selbst ein Worst-Case-Server-Kompromiss kann keine Gelder bewegen und keine fremden Daten in deine Sicht spülen.
Row-Level Security als letzte Verteidigungslinie
Jede Tabelle mit Nutzerdaten trägt eine RLS-Policy auf auth.uid(). Anfragen aus dem App-Kontext werden automatisch gefiltert — kein clientseitiger Filter, den ein vergessenes WHERE umgehen könnte. Rollen wie admin liegen in einer eigenen user_roles-Tabelle hinter einer SECURITY-DEFINER-Hilfsfunktion, um Self-Elevation auszuschließen.
Edge Functions als einziger Weg zu externen APIs
API-Keys für CoinGecko, Helius, Stripe und ähnliche Dienste liegen ausschließlich in Supabase-Secrets und werden in Edge Functions gelesen. Der Browser sieht sie nie. Eine gestohlene Browser-Session kann keine Keys exfiltrieren, und Rate-Limit-Missbrauch bleibt auf das beschränkt, was die Cron-Jobs bewusst senden.
Audit-Log: append-only abgesichert
Die Tabelle audit_logs protokolliert sicherheitsrelevante Aktionen (Auth-Events, Encryption-Key-Reads, Konfigurationsänderungen). Die RLS-Policies erlauben Inserts, blockieren aber Updates und Deletes — auch für privilegierte Rollen. Im Ernstfall bleibt die Spur per Design erhalten, nicht per Vertrauen.