Sicherheit

Wie Gästedaten getrennt bleiben

Ein Gast fragt nach dem WLAN-Passwort. Ein anderer fragt nach demselben WLAN-Passwort, ohne je in dieser Wohnung gewesen zu sein. Was den Unterschied macht, ist keine Regel im Prompt.

Die erste Architekturentscheidung dieses Projekts fiel in der zweiten Woche und trägt bis heute alles: es gibt zwei Wissensbereiche, nicht einen. Öffentliches Saas-Fee-Wissen - Restaurants, Bergbahnen, Wetter, Events, Apotheke, Anreise - liegt in einem Bestand, den jeder abfragen kann. Alles, was zu einer bestimmten Wohnung oder einem bestimmten Hotel gehört, liegt in einem zweiten Bestand, der ohne gültigen Gästezugang nicht gelesen wird.

Der Unterschied klingt banal, bis man die Alternative baut. Ein einziger Wissensbestand mit einer Prompt-Regel «gib Objektdaten nur an berechtigte Gäste» verlagert die Zugriffskontrolle in ein Sprachmodell. Das ist keine Zugriffskontrolle, das ist eine Bitte.

Was einen Gast zu einem Gast macht

Zugang entsteht auf zwei Wegen: über einen persönlichen Gästelink, den das Objekt ausgibt, oder über eine verifizierte Sitzung nach einem Einmalcode per SMS. Beide enden in Tokens, und für Tokens gilt hier eine Regel ohne Ausnahme: gespeichert wird nur der SHA-256-Hash, nie der Wert selbst. Wer die Datenbank liest, kann sich damit nicht anmelden.

  • Einmalcode per SMS: 10 Minuten gültig
  • Gästesitzung: 90 Tage
  • Gästezugang zu einem Objekt: bis 12 Monate nach dem Aufenthalt
  • Dialoge und Reservationen: bis 24 Monate

Diese Fristen stehen nicht nur hier, sondern im internen GDPR-Verarbeitungsverzeichnis, zusammen mit jedem Dienst, der Daten sieht, und wofür. Ein Gast kann jederzeit eine Auskunft oder Löschung verlangen; dafür gibt es eine eigene Seite und eine Adresse, die dafür da ist.

Was von aussen hereinkommt, gilt nichts

Twilio, Meta und apaleo rufen unsere Endpunkte auf. Jeder dieser Aufrufe wird gegen seine Signatur geprüft und protokolliert - aber die interessantere Regel ist die zweite: der Inhalt eines Webhooks wird nicht als Datenquelle verwendet. Wenn apaleo meldet, dass sich eine Buchung geändert hat, lesen wir die Buchung über ihre ID neu aus der API. Wer die Nachricht fälscht, fälscht damit keine Buchung.

Der Notfallpfad

Erkennt Lena einen medizinischen Notfall, kommt die Antwort aus fest hinterlegtem Text: Notrufnummer zuerst, dann was der Leitstelle zu sagen ist, dann Rega für alles, was ein Fahrzeug nicht erreicht. Kein Modell formuliert diese Antwort, und keine der zehn Ergänzungsregeln, die sonst jede Antwort umschreiben, greift hier ein. Ein Modell, das einen schlechten Tag hat, gehört nicht zwischen einen Gast und eine Notrufnummer.

Was hier steht, ist gemessen. Was fehlt, wird benannt.

Und es fehlt etwas. Ein Fehler-Tracker ist nicht in Betrieb, und es gibt keine externe Überwachung, die den Notfallpfad von aussen anfragt. Heute erfahren wir von einer Störung, wenn ein Gast sich meldet. Beides sind die nächsten beiden Schritte, und dass sie in dieser Reihenfolge stehen, hat einen Grund: eine Störung sichtbar zu machen ist die Voraussetzung dafür, alles Weitere überhaupt prüfen zu können.