Commit Graph
2 Commits
Author SHA1 Message Date
patrickandClaude Sonnet 5 4fc361b462 TEN-09: registry-h-rtung-zugriffsschutz
Supply-Chain-Scan (Go) / govulncheck (push) Failing after 41s
Haertet die Control-Plane-Registry als eigene Schutzzone:

- Dedizierte Postgres-Rolle nexarch_registry (ohne CREATEDB) fuer
  NEXARCH_REGISTRY_DSN, getrennt von der Provisioning-Rolle nexarch_core
  (deploy/install.sh). Neu angelegte Tenant-Datenbanken entziehen PUBLIC
  explizit das CONNECT-Recht (internal/tenant/provisioner.go), damit die
  Registry-Rolle unter keinen Umstaenden Zugriff auf eine Tenant-Datenbank
  erhaelt (Akzeptanzkriterium 1).
- Auditierte Zugriffsmethoden (*AsActor) fuer Superadmin-Konten
  (internal/user.SuperadminStore) und Verbindungsinformationen
  (internal/tenant.Registry) — jeder lesende/schreibende Zugriff erzeugt
  einen Audit-Event mit Akteur und Zeitstempel, verdrahtet in
  internal/tenantadmin (TEN-05-Konsole) und cmd/core (Akzeptanzkriterium 2).
- Betriebsanleitung docs/TEN-09-REGISTRY-BETRIEB.md dokumentiert
  Rollentrennung und den auf den Core-Dienst beschraenkten Netzwerkzugriff
  (pg_hba.conf, listen_addresses, Firewall-Default-Policy), abgesichert
  durch internal/opsdocs/registry_hardening_test.go (Akzeptanzkriterium 3).

Automatisierte Tests je Akzeptanzkriterium: internal/tenant/isolation_test.go
(negativer Zugriffstest), internal/audit/wiring_test.go
(TestWiring_SuperadminReadIsAudited, TestWiring_RegistryConnectionInfoReadIsAudited),
internal/opsdocs/registry_hardening_test.go.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01QPsyieCYwvbUBsnN598SbP
2026-09-17 01:37:40 +02:00
sysopsandClaude Sonnet 5 e4793303fc IAM-01: benutzer-datenmodell-crud
Benutzer-Datenmodell + CRUD fuer Tenant-User (tenant-scoped, keine
tenant_id-Spalte noetig, Tenant ergibt sich aus der DB-Verbindung, Modell C)
und getrennt dafuer SuperadminStore fuer mandantenuebergreifende Konten in
der Registry-DB — First-Class-Typ statt tenant_id-NULL-Sonderfall im
Tenant-User-Code (bekannter archivdms-Fehler vermieden).

E-Mail-Eindeutigkeit: tenant-scoped fuer normale Benutzer (UNIQUE-Constraint
gilt nur innerhalb der jeweiligen Tenant-DB), global fuer Superadmins
(eine Registry-DB, ein UNIQUE-Constraint).

Pruefungen (ausgefuehrt auf root@192.168.1.131, go build/vet/test PASS):
1. CRUD automatisiert getestet inkl. Negativfaellen — TestTenantUserStore_CRUD
   deckt doppelte E-Mail (ErrEmailTaken) und unbekannte ID ab. PASS.
2. Superadmin-Anlage ohne Tenant-Kontext — TestSuperadminStore_CreateWithoutTenantContext:
   SuperadminStore.Create hat syntaktisch keinen Tenant-Parameter, kein
   if-Zweig fuer "kein Tenant" im Code. PASS.
3. Datenmodell von zweiter Person gegen Dokumentation geprueft — NICHT
   durchgefuehrt (keine zweite Person in dieser Session verfuegbar). Offen.

Tenant-User-Handler ist im Code vorhanden, aber in cmd/core/main.go noch
nicht geroutet — braucht Connection-Routing pro Mandant (TEN-06), das nicht
Teil dieser Kachel ist. Nur der Superadmin-Endpunkt ist verdrahtet.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-08-27 17:57:49 +02:00