Commit Graph

8 Commits

Author SHA1 Message Date
B0rbor4d 3ec47c8557 Prod-Compose: Frontend published monitoring:8080 wieder (Relay-Ziel) 2026-09-29 01:29:33 +00:00
B0rbor4d d1a757d72b Benutzerverwaltung + Fehleranzeige in Formularen
- Backend: /api/users (LIST/CREATE/PATCH, admin-only) mit Self-Protection
  (Admin kann sich nicht selbst deaktivieren/entziehen), lokale User
  anlegbar, LDAP-User verwaltbar (aktiv/admin), Passwort-Reset nur lokal
- Frontend: Benutzer-View (Liste, anlegen, toggles, Passwort setzen),
  Nav-Eintrag + Route
- Bugfix 'Speichern tut nichts': submit() brach stillschweigend ab wenn
  kein Kunde gewaehlt war oder die API einen Fehler lieferte - jetzt
  wird eine Fehlermeldung angezeigt (Servers, Customers, Satellites)
2026-09-29 01:25:04 +00:00
B0rbor4d 95291df971 LDAP: Gruppenpruefung auf direktes memberOf umstellen
Matching-Rule-In-Chain liefert gegen die insight.local-DCs grundsaetzlich
keine Treffer (auch nicht bei ASCII-Gruppen und direkter Mitgliedschaft) -
live im Container verifiziert. Direkte memberOf-Pruefung funktioniert,
verschachtelte Gruppen werden bewusst nicht aufgeloest.
2026-09-28 22:16:53 +00:00
B0rbor4d 80610fdd30 Prod-Compose: neue LDAP-Variablen durchreichen (Domain, Admin-Group, Timeout statt Bind-DN/-Password) 2026-09-28 22:06:31 +00:00
B0rbor4d 8305352497 LDAP/AD-Auth fuer Dashboard: User-Bind gegen insight.local, Zugriff nur fuer Domänen-Admins
- ldap_auth Service: User bindet als user@domain (kein Servicekonto noetig),
  Gruppenpruefung ueber Matching-Rule-In-Chain (verschachtelte Gruppen)
- Login-Route: lokaler User zuerst, dann LDAP-Fallback; LDAP-User werden
  lokal gespiegelt (is_ldap, is_admin, Profildaten aus AD)
- Neue Config: ldap_domain, ldap_admin_group, ldap_timeout_seconds
- ldap3 Dependency, 7 Unit-Tests (ldap3 gemockt), ruff+mypy sauber
- Gruppen-DN verified am DC: CN=Domänen-Admins,CN=Users,DC=insight,DC=local
2026-09-28 22:06:05 +00:00
B0rbor4d cc4c3fcecb Hub-and-Spoke Umbau: Multi-Tenant Zentrale + Satellite-Agent
- Backend: Customer/Satellite Models, customer_id auf Server/Job/Audit
- Satellite-API: heartbeat, poll (atomares Claiming), logs, result,
  scan-result, health-report - Auth via X-Api-Key (SHA-256 gehasht)
- Job-Queue: pending/claimed/running/success/failed + Stale-Janitor
- Batch-Trigger: ein Job pro Server, Satellite arbeitet sequenziell ab
- Credentials bleiben lokal: nur symbolische credential_ref zentral
- Neues Paket satellite/: Pull-Loop, WinRM/SSH/CAU/Scanner, PyInstaller-tauglich
- Frontend: Kunden-Switcher, Satelliten-View, Polling statt WebSocket
- Entfernt: WebSocket/Socket.io, Redis, zentrale Credentials, JobRunner
- Docs: README/AGENTS/PROMPT auf neue Architektur aktualisiert
2026-08-07 03:42:06 +00:00
B0rbor4d b91dd66fee Multi-stage backend Dockerfile (development/production), DB_* env vars, dev target pinning 2026-07-31 23:47:29 +00:00
B0rbor4d cf7c29639c Initial scaffold: FastAPI backend + Vue 3 frontend + Docker setup
Backend: config/db/security/logging core, SQLAlchemy models (Server,
Credential, UpdateJob, UpdateLog, AuditLog, User), services (winrm, ssh,
cau, audit, job_runner), REST API (auth, servers, updates, audit),
Socket.io WebSocket layer.
Frontend: Vue 3 + TS + Pinia + Tailwind, Views (Dashboard, Servers,
Updates, Audit, Login), axios + socket.io-client, nginx prod config.
2026-07-31 23:45:31 +00:00