GOV-07: Unabhängige Tenant-Validierung bei KI-Objekttyp-Registrierung durch DMS/Mail
#238
Merged
patrickmerged 1 commits from feature/gov-07-unabh-ngige-tenant-validierung-bei-ki-objekttyp-registrierung-durch-dms-mail into main2026-09-28 02:50:30 +02:00
ai/internal/moduletype.Registry.Register (GOV-01) nahm Tenant-Kontext bislang gar nicht entgegen und pruefte ihn folglich auch nicht — ein kompromittiertes/fehlkonfiguriertes DMS/Mail haette KI-Funktionen mit falscher Tenant-Zuordnung ausloesen koennen. GOV-07 uebertraegt das etablierte Muster aus Archive RET-12 (und analog Workflow) 1:1: neues ai/internal/tenantregistryclient (HTTP-Client gegen Core TEN-01), TenantVerifier-Interface in moduletype, Register/Get/ListByModule um tenantSlug erweitert, Verifikation vor jedem Insert, fail-closed bei Verifikationsfehler oder unbekanntem Tenant.
Aenderungen
ai/internal/tenantregistryclient: neuer HTTP-Client fuer Core TEN-01 (Muster wie archive/dms)
ai/internal/moduletype: TenantVerifier-Interface, Register/Get/ListByModule verlangen jetzt tenantSlug, Verifikation vor Insert (fail-closed)
ai/migrations/0005_module_objecttypes_tenant_slug.{up,down}.sql: Spalte tenant_slug, Unique-Constraint auf (tenant_slug, module_name, object_type) erweitert
Registrierung mit gueltigem, existierendem Tenant-Kontext wird uebernommen — PASS (TestRegister_ValidExistingTenant_Accepted)
Registrierung mit manipuliertem/fremdem Tenant-Kontext wird abgelehnt (adversarial) — PASS (TestRegister_ForeignOrFakeTenant_Rejected, zusaetzlich TestRegister_TenantVerificationError_FailsClosed fuer fail-closed bei Core-Ausfall)
Regressionstest normaler DMS-/Mail-Registrierungsablauf — PASS (alle GOV-01-Bestandstests gruen, gesamtes ai-Modul go vet + go test ./... -p 1 ohne Regression, Testhost 192.168.1.204)
Registry.Register (ai/internal/moduletype) prueft den mitgelieferten
tenant_slug jetzt ueber einen TenantVerifier (Core TEN-01) unabhaengig
gegen die Core-Tenant-Registry, statt der Angabe von DMS/Mail blind zu
vertrauen - analog zu Archive RET-12. Unbekannter/gefaelschter Tenant-
Kontext wird abgelehnt und protokolliert; ein Verifikationsfehler selbst
fuehrt fail-closed zur Ablehnung, nie zur stillschweigenden Annahme.
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
patrick
merged commit a69dc3c86d into main2026-09-28 02:50:30 +02:00
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
Zusammenfassung
ai/internal/moduletype.Registry.Register(GOV-01) nahm Tenant-Kontext bislang gar nicht entgegen und pruefte ihn folglich auch nicht — ein kompromittiertes/fehlkonfiguriertes DMS/Mail haette KI-Funktionen mit falscher Tenant-Zuordnung ausloesen koennen. GOV-07 uebertraegt das etablierte Muster aus ArchiveRET-12(und analog Workflow) 1:1: neuesai/internal/tenantregistryclient(HTTP-Client gegen Core TEN-01),TenantVerifier-Interface inmoduletype,Register/Get/ListByModuleumtenantSlugerweitert, Verifikation vor jedem Insert, fail-closed bei Verifikationsfehler oder unbekanntem Tenant.Aenderungen
ai/internal/tenantregistryclient: neuer HTTP-Client fuer Core TEN-01 (Muster wie archive/dms)ai/internal/moduletype:TenantVerifier-Interface,Register/Get/ListByModuleverlangen jetzttenantSlug, Verifikation vor Insert (fail-closed)ai/migrations/0005_module_objecttypes_tenant_slug.{up,down}.sql: Spaltetenant_slug, Unique-Constraint auf(tenant_slug, module_name, object_type)erweitertai/docs/GOV-07-PRUEFPROTOKOLL.md: PruefprotokollPruefungen (alle durchgefuehrt, Ergebnis siehe Pruefprotokoll)
TestRegister_ValidExistingTenant_Accepted)TestRegister_ForeignOrFakeTenant_Rejected, zusaetzlichTestRegister_TenantVerificationError_FailsClosedfuer fail-closed bei Core-Ausfall)ai-Modulgo vet+go test ./... -p 1ohne Regression, Testhost 192.168.1.204)Kein Merge, kein Deploy durchgefuehrt.
🤖 Generated with Claude Code