Komplette Neuentwicklung der Plattform in Rust (axum + tokio-postgres + askama), ersetzt die Python/Flask-Version. Bestandsdaten bleiben nutzbar: Schema-Migrationen laufen idempotent beim Start, alte Werkzeug-PBKDF2- Passwoerter werden beim ersten Login transparent auf Argon2id migriert. ITIL v3/v4: - Rollenmodell: admin / change_manager / agent / user (Self-Service) - Statusmodell mit erzwungenen Uebergaengen, Reopen, finalem Geschlossen - Prioritaet automatisch aus Impact-x-Urgency-Matrix (v3 SO 4.2.5.4) - Change Enablement: Standard/Normal/Emergency, CAB-Freigabe durch change_manager/admin; Umsetzung und Repo-Edits erst nach Freigabe - Problem Management: Incident-Problem-Verknuepfung, Known Error - Service Request als eigene Kategorie; SLA-Zeitstempel (Reaktion/Loesung) - Knowledge Management: Freigabe-Workflow (Entwurf -> Freigegeben) - SACM: Ticket-CI-Verknuepfung; CSI-Dashboard (SLA-Erfuellung, MTTR) Sicherheit (behebt Review-Befunde 2026-07-15): - CSRF-Schutz fuer alle zustandsaendernden Requests (vorher: keiner) - Login-Rate-Limit pro E-Mail+IP, DB-gestuetzt (vorher: keins) - Serverseitige, widerrufbare Sessions (SHA-256-Token-Hash in DB) statt Client-Side-Sessions mit optionalem Secret - Argon2id statt PBKDF2; Passwort-Policy min. 12 Zeichen - Repo-Edit aus Tickets: RBAC (change_manager/admin) + freigegebener Change noetig; vorher jeder eingeloggte User mit Admin-Token - SSRF-Guard fuer Service-Endpoints (Link-Local/Metadaten blockiert, Anlegen admin-only), Erreichbarkeitscheck parallel + gecacht - Security-Header (CSP ohne Inline-JS, X-Frame-Options, nosniff, HSTS) - X-Forwarded-For nur bei konfigurierten Trusted Proxies (Audit-Log-IP) - Open-Redirect im Login-next-Parameter geschlossen Deployment: Multi-Stage-Dockerfile statt git-clone+pip beim Container- Start (reproduzierbare Images, kein ungetesteter main-Stand in Prod). Tests: 7 Unit-Tests (Statusmodell, Matrix, Change-Gate, Hash-Verifikation, SSRF-Guard) + 30 End-to-End-Smoke-Tests gegen lokalen PostgreSQL gruen. |
||
|---|---|---|
| deploy | ||
| src | ||
| static | ||
| templates | ||
| .gitignore | ||
| Cargo.lock | ||
| Cargo.toml | ||
| Dockerfile | ||
| README.md | ||
| schema.sql | ||
README.md
ITSM
ITSM-Plattform (Service-Katalog, Tickets, Wissensdatenbank, CMDB) -- AES ist ein buchbarer Service darin. Eigenstaendiges Produkt, mandantenfaehig.
Stack: Rust (axum + tokio-postgres + askama), PostgreSQL 16. Rust-Rewrite 2026-07-15; zuvor Python/Flask -- Bestandsdaten (inkl. Passwort- Hashes) werden ohne Migration weiterverwendet, alte Werkzeug-PBKDF2-Hashes werden beim ersten Login transparent auf Argon2id umgestellt.
ITIL-Ausrichtung (v3-Prozesse / v4-Practices)
- Rollen: admin (Service Owner/IT-Leitung), change_manager (Change Enablement/CAB), agent (Service Desk), user (Requester/Self-Service: eigene Tickets, nur freigegebene Wissensartikel).
- Incident/Service Request: getrennte Kategorien; Statusmodell mit erzwungenen Uebergaengen (Offen -> In Bearbeitung -> Warten/Geloest -> Geschlossen; Reopen von Geloest).
- Prioritaet: automatisch aus der Impact-x-Urgency-Matrix (v3 SO 4.2.5.4).
- Change Enablement: Standard (vorautorisiert) / Normal (CAB-Freigabe durch change_manager/admin) / Emergency (sofort, nachtraegliche ECAB-Freigabe). Umsetzung + Repo-Aenderungen erst nach Freigabe.
- Problem Management: Incident-Problem-Verknuepfung, Known-Error-Status.
- SLA (Service Level Management): Antwort-/Loesungsfristen mit Zeitstempeln (erste Reaktion, Loesung, Schliessung), Ueberfaelligkeit.
- Knowledge Management: Freigabe-Workflow (Entwurf -> Freigegeben).
- SACM/CMDB: CIs, Beziehungen, Ticket-CI-Verknuepfung.
- Continual Improvement: Dashboard mit SLA-Erfuellung, MTTR, Verteilungen.
Sicherheit
- Serverseitige Sessions in PostgreSQL (Cookie enthaelt nur ein Zufallstoken, DB speichert dessen SHA-256; Logout/Sperrung widerruft sofort).
- CSRF-Schutz fuer alle zustandsaendernden Requests (Formular-Feld/Header).
- Login-Rate-Limit (pro E-Mail und IP, DB-gestuetzt), Audit-Log aller sicherheitsrelevanten Aktionen (ISO 27001 A.12.4 / DSGVO Art. 30).
- Argon2id-Passwoerter, Policy: min. 12 Zeichen.
- Security-Header (CSP ohne Inline-JS, X-Frame-Options, nosniff, HSTS bei ITSM_HTTPS=1); X-Forwarded-For nur bei ITSM_TRUSTED_PROXY_COUNT > 0.
- SSRF-Guard fuer Service-Endpoint-URLs (Link-Local/Metadaten blockiert, Anlegen admin-only); Erreichbarkeitspruefung parallel + gecacht.
- Repo-Bearbeitung aus Tickets (Forge-Contents-API, phase-008): nur admin/change_manager, nur aus freigegebenen Change-Tickets, jede Aenderung zwingend im Worklog dokumentiert.
- DSGVO-Retention: automatische Bereinigung von Tickets/Audit-Log gemaess Mandanten-Fristen; Login-Versuche nach 7 Tagen, abgelaufene Sessions sofort.
Betrieb
# Entwicklung
DATABASE_URL=postgresql://itsm:pw@localhost:5432/itsm cargo run
# Produktion: siehe deploy/docker-compose.yml (Multi-Stage-Build,
# kein Code-Pull beim Container-Start mehr)
ENV-Variablen: siehe src/config.rs. Schema-Migrationen laufen idempotent beim Start (schema.sql). Backup: deploy/backup.sh (taeglicher pg_dump, 14 Tage).
Tests
cargo test # ITIL-Statusmodell, Prioritaetsmatrix, Change-Gate,
# Argon2/Werkzeug-Hash-Verifikation, SSRF-Guard, Policy