Datensicherheit
Datenschutz sagt, welche Daten verarbeitet werden dürfen. Datensicherheit sorgt dafür, dass mit den Daten, die man haben darf, auch nichts schiefgeht.
Die drei Schutzziele
| Schutzziel | Bedeutung | Verletzt, wenn … |
|---|---|---|
| Vertraulichkeit | Nur Befugte können die Daten lesen. | jemand Unbefugtes die Besucherliste einsehen kann |
| Integrität | Die Daten sind unverfälscht und vollständig. | jemand Zuschauerzahlen ändern kann, ohne dass es auffällt |
| Verfügbarkeit | Befugte können auf die Daten zugreifen, wenn sie sie brauchen. | der Einlassrechner am Festivaltag ausfällt |
Man kürzt sie oft mit VIV ab. Alle drei sind gleich wichtig – welches im Einzelfall am schwersten wiegt, hängt vom Anwendungsfall ab.
Die drei Ziele stehen häufig im Konflikt:
- Eine Datenbank, auf die niemand zugreifen kann, ist maximal vertraulich und völlig unbrauchbar.
- Eine tägliche Sicherungskopie erhöht die Verfügbarkeit und schafft eine weitere Kopie, die vertraulich bleiben muss.
- Ein Protokoll aller Änderungen schützt die Integrität und speichert dabei, wer wann was getan hat – selbst wieder personenbezogene Daten.
Sicherheit ist deshalb nie ein Zustand, sondern immer eine Abwägung. Wer behauptet, ein System sei „sicher", hat die Frage nicht verstanden: sicher wogegen, für wen, um welchen Preis?
Was eine Datenbank technisch anbietet
| Schutzziel | Mittel im Datenbanksystem |
|---|---|
| Vertraulichkeit | Benutzerkonten, Rechtevergabe (GRANT), Sichten, Verschlüsselung der Dateien und der Verbindung |
| Integrität | Integritätsbedingungen (Kapitel 7), Transaktionen, Änderungsprotokolle |
| Verfügbarkeit | Sicherungskopien, Wiederherstellungsverfahren, Spiegelung auf mehrere Rechner |
Rechte und Sichten
Im SQL-Standard vergibt man Rechte so:
GRANT SELECT ON spielplan TO helfer;
REVOKE SELECT ON besucherin FROM helfer;
Die eingebaute IDE dieses Lernpfads kennt weder Benutzerkonten noch GRANT – sie läuft ja allein in deinem Browser. Das Prinzip solltest du trotzdem kennen, denn es ist der praktisch wichtigste Baustein der Vertraulichkeit.
Die Grundregel heißt Prinzip der geringsten Rechte: Jedes Konto bekommt genau die Rechte, die es für seine Aufgabe braucht – und keines mehr.
Wo man Rechte nicht auf Spalten vergeben kann, hilft eine Sicht:
Der Editor kennt die Sichten noch nicht, solange du sie nicht angelegt hast, und markiert die SELECT-Anweisungen darauf als Fehler. Führe die Anweisungen der Reihe nach aus – danach ist der Reiter Fehler leer.
a) Welche Angaben aus besucherin sind in einlassliste nicht enthalten? Warum ist das gut?
b) In verkaufsstatistik steckt gar keine Angabe zu einzelnen Personen mehr. Welches Prinzip aus der letzten Lektion setzt diese Sicht um?
c) Das Organisationsteam möchte wissen, welche Bands bei den unter 30-Jährigen am besten ankommen. Entwirf eine Sicht, die das beantwortet, ohne einzelne Personen erkennbar zu machen.
Tipp zu c)
Du brauchst bewertung, auftritt, band und besucherin – letztere nur, um nach dem Geburtsjahr zu filtern, nicht um etwas davon auszugeben.
Sicherungskopien und Wiederherstellung
Eine Sicherungskopie ist erst dann eine, wenn man sie zurückgespielt hat. Drei Fragen, die man beantworten können muss:
- Wie alt darf der Stand höchstens sein? Bei einer Ticketkasse ist ein Datenverlust von einer Stunde untragbar, bei einer Notensammlung vielleicht ein Tag.
- Wie lange darf die Wiederherstellung dauern? Am Festivaltag zählt jede Minute.
- Liegt die Kopie woanders? Eine Sicherung auf derselben Festplatte hilft gegen einen Bedienfehler, nicht gegen Brand oder Diebstahl.
Der klassische Fehler ist, Sicherungen jahrelang zu erzeugen und nie zu prüfen, ob sie sich zurückspielen lassen.
Transaktionen
Eine Transaktion ist eine Folge von Anweisungen, die entweder ganz oder gar nicht ausgeführt wird.
Klassisches Beispiel: eine Überweisung. Der Betrag wird beim einen Konto abgezogen und beim anderen gutgeschrieben. Fällt der Rechner dazwischen aus, darf keinesfalls der erste Schritt allein gelten.
Auf der Klangwiese: Ein Ticketkauf besteht aus dem Anlegen der Besucherin und dem Anlegen des Tickets. Bricht es dazwischen ab, steht eine Person ohne Ticket in der Datenbank – die Datenbank ist dann zwar nicht kaputt, aber sie enthält etwas, das es in der Wirklichkeit nicht gibt.
Datenbanksysteme lösen das mit BEGIN TRANSACTION, COMMIT und ROLLBACK. Damit ist die Integrität auch bei Abstürzen und bei gleichzeitigen Zugriffen mehrerer Personen gewährleistet – dasselbe Problem, das dir bei der Nebenläufigkeit in Java begegnet.