Aus einer Vorlage wird hier der PowerShell-Befehl, den ein Techniker kopiert und
auf einem Domaenencontroller ausfuehrt. Entsprechend dicht ist die Abdeckung:
810 Tests, und die Maskierung wird **ausgefuehrt** geprueft, nicht gelesen.
- Platzhalter aus Geraet, Lauf, Mitarbeiter und Abteilung, dazu die Variablen
der Vorlage; ein unbekannter bleibt sichtbar stehen
- `{{ou}}` ist der Eltern-Container des DN — genau der Pfad fuer New-ADUser
- Namensregeln fuer upn, sam, mail und hostname mit Transliteration, `{v}`,
`{nnn}` und `{kundenkuerzel}`; Kundenregeln ueberlagern die globalen feldweise
- Maskierung je Shell, Skript-Kopie je Abschnitt mit Kommentarzeilen
- `{{generiertes_passwort}}`: 20 Zeichen, bei jeder Anzeige neu, nirgends
gespeichert; im Druck `[Passwort – nicht gespeichert]`
Der unabhaengige Review fand drei Blocker. Der schwerste war eine
Codeausfuehrung: PowerShell liest auch `“`, `”` und `„` als Begrenzer einer
Zeichenkette, die Maskierung kannte nur das ASCII-Zeichen. Ein Abteilungsname
aus Word — Word wandelt `"` von selbst um — reichte. Gefunden hat es der Review
nicht durch Lesen, sondern indem er sich PowerShell in einen Container geholt
und die Markierungsdatei hat entstehen lassen. Der Test dagegen hatte sich still
uebersprungen; er nimmt jetzt selbst das Abbild und bricht in CI ab.
Dazu: zwei verschiedene Passwoerter in einer Antwort (Anzeige und Skript wurden
getrennt gefuellt), eine Vorlagenvariable, die `{{techniker}}` und `{{kunde}}`
ueberschreiben konnte, und die tragende Annahme der Maskierung — dass der
Platzhalter in Anfuehrungszeichen steht —, die niemand geprueft hat.
Schliesst #012
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2.3 KiB
2.3 KiB
Issues
Diese Dateien sind die Quelle; pnpm issues:sync spiegelt sie in den Gitea-Tracker.
pnpm pruefe:doku erzwingt, dass Dateien und diese Übersicht übereinstimmen.
| Nr. | Titel | Status | Meilenstein | Geschätzt | Tatsächlich |
|---|---|---|---|---|---|
| #001 | Phase 1: MVP | in Arbeit | v0.1.0 | – | – |
| #002 | Phase 2: Verzeichnis-Alternativen, Bausteine, Anhänge | offen | v0.2.0 | – | – |
| #003 | Phase 3: Protokoll, bedingte Schritte, Freigabe | offen | v0.3.0 | – | – |
| #004 | Phase 4: Aktionen, Connectors, REST-API | offen | v0.4.0 | – | – |
| #005 | M0 – Gerüst, Prozess, Design-Token | erledigt | v0.1.0 | 6 h | 1 h 25 min |
| #006 | M1 – Datenmodell | erledigt | v0.1.0 | 5 h | 1 h 10 min |
| #007 | M2 – Auth, Rollen, Benutzer | erledigt | v0.1.0 | 8 h | 1 h 35 min |
| #008 | M3 – Betriebsmodus und Kunden | erledigt | v0.1.0 | 6 h | 1 h 20 min |
| #009 | M4 – Vorlagen-Versionierung im Service | erledigt | v0.1.0 | 6 h | 1 h 20 min |
| #010 | M5 – Vorlagen-Editor | erledigt | v0.1.0 | 10 h | 2 h 10 min |
| #011 | M6 – Mitarbeiter, Abteilungen, Geräte | erledigt | v0.1.0 | 9 h | 2 h 15 min |
| #012 | M7 – Platzhalter, Namensregeln, Escaping | erledigt | v0.1.0 | 8 h | 2 h 30 min |
| #013 | M8 – Läufe: Service und Abarbeitung | offen | v0.1.0 | 14 h | – |
| #014 | M9 – QR-Tags, Geräteseite, Etiketten, Scanner | offen | v0.1.0 | 12 h | – |
| #015 | M10 – Dashboard und Archiv | offen | v0.1.0 | 8 h | – |
| #016 | M11 – Verzeichnis und LDAP-Abgleich | offen | v0.1.0 | 12 h | – |
| #017 | M12 – Seed der sieben Vorlagen | offen | v0.1.0 | 8 h | – |
| #018 | M13 – E2E-Tests, Anleitung, PDF | offen | v0.1.0 | 14 h | – |
| #019 | M14 – Betriebswege und Release v0.1.0 | offen | v0.1.0 | 10 h | – |
| Summe | 136 h | 13 h 45 min |