From d5364cdbc7f0303f7fa1c9592210e83f09b19496 Mon Sep 17 00:00:00 2001 From: Jan Klemkow Date: Wed, 30 Jan 2013 10:55:09 +0100 Subject: finish user separation section with decition. --- doc/documentation.txt | 77 ++++++++++++++++++++++++++++++++++++++++++++++----- 1 file changed, 70 insertions(+), 7 deletions(-) diff --git a/doc/documentation.txt b/doc/documentation.txt index 2eef013..ba9ee46 100644 --- a/doc/documentation.txt +++ b/doc/documentation.txt @@ -69,13 +69,45 @@ Für Moodle ist ein integriertes Video-Plugin verfügbar. ``SQLBox'' ist ein Moodle-Modul, welches im Rahmen des Mulimedia-Projekts entstanden ist. - -=== Sandbox für User-Queries - -Der Nutzer der SQLBox muss bei jedem Aufruf einen konsistenen Datenbestand -vorfinden. Dazu ist es notwendig, dass Anfrage in einer Sandbox ablaufen. -Zu diesem Zweck sollen folgend verschiedene Möglichkeiten vorgestellt und -evaluiert werden. +Mit diesem Modul lassen sich Aufgaben fuer Datenbanken Anhand eines Beispiels +formulieren. +Der Tutor, welcher einen Lernkurs fuer Datenbanken verwaltet, gibt dabei eine +Aufgabenstellung in Textform und eine Musterloesung inform eines SQL-Strings an. +Der Student muss Anhand des Aufgabentextes einen SQL-Anfrage formulieren welche +diese Aufgabe loest. +Der die SQL-Anfrage der Muterloesung sowie die des Studenten werden beide +nacheinander auf einer Realen PostgreSQL-Datenbank ausgefuert. +Die dabei entstehenden Antworten werden verglichen und bei Uebereinstimmung gilt +gilt diese Aufgabe fuer den Studenten als Bestanden. +Der Tutor kann den Lernsoftschritt aller Studenten Anhand einer +Uebersichtstabelle verfolgen. +In dieser Tabelle werden alle SQLBox-Aufgaben sowie alle Bentzer einander +gegenueber gestellt. + +=== Das Test-Szenario + +Alle SQLBoxen finden im selben Beispiel-Szenario statt. +Dieses Szanario ist in der Datenbank ``sqlbox'' abgebildet. +Im Rahmen dieser Arbeit wurde das von Niels Weber entwickelte KAPV-Beispiel +uebernommen. +Es ist moeglich dieses Szenario zu erweitern oder auch ein vollkommen anderes +zu erstellen, in man die Datenbank ``sqlbox'' anpasst. +In einer Moodle-Instanz ist es momentan nicht moeglich mehrere verschiedene +Beispielumgebungen fuer verschiedene SQLBoxen zu erstellen. + +=== Separierung von Benutzern + +Der Benutzer der SQLBox muss bei jedem Aufruf einen konsistenen Datenbestand +vorfinden. +Da es dieses System einem Benutzer gestattet reale Anfragen an eine reale +Datenbank zu stellen, koennte dieser den Bestand der Datenbank veraendern oder +beschaedigen. +Zudem koennen Aufgaben welche das Erstellen oder gezielte Veraendern von +Tabellen nur einem einem Benutzer erfuellt werden. +Aus diesem Grund ist es notwendig, dass Anfrage von der verschiedenen Benutzer +von einander trennen werden. +In den Folgenden Abschnitten werden verschieden Moeglichkeiten diskutiert und +bewertet, die Trennung der Benutzer erlauben. ==== Transactions @@ -114,6 +146,13 @@ SELECT * FROM blub; ROLLBACK TRANSACTION; ---- +Dieses Verfahren wuerden einen normalen Betrieb ermoeglichen, indem Fehlerhafte +SQL-Anfragen wieder behoben werden. +Es biete aber die Moeglichkeit der gezielten Stoerung durch boeswillige +Benutzer. +Diese koennte alle Tests unbrauchbar machen und damit einen normalen Lernbetrieb +verhindern. + ==== Separate Datenbank Um die Anfragen der Nutzer von einander zu trennen, gibt es ebenfalls die @@ -154,6 +193,30 @@ sqlbox=# GRANT SELECT ON ALL TABLES IN SCHEMA public TO sqlbox_read; GRANT ---- +==== Fazit + +Transaktionen koennten das Risiko von fehlerhafen Anfragen fuer die Datenbank +stark reduzieren. +Da dieser Mechanismuss aber keinen Schutz vor gezielten Manipulationen bietet, +ist er fuer eine Lernplattform mit vielen unbekannten Nutzern ungeeignet. + +Separate Datenbanken fuer Benutzer bieten eine sehr gute Trennung und verhindern +eine direkte gegenseitige Beeinflussung. +Der Entwicklungsaufwand des Moodle-Moduls und die genutzten Ressourcen der +Datenbank im Betrieb sind zu hoch im Verhaeltniss der anderen Loesungen. +Aus disem Grund kommt diese Loesung unter den Umstaenden dieses Projekte nicht +in Betracht. + +Eine Read-Only-Loesung indem es den Benutzern nur erlaubt wird +SELECT+-Anfragen +zustellen schraenkt die Vielfalt der Aufgabenmoeglichkeiten ein, aber bietet +sichere Trennung der Benutzer sowie einen geringen Entwicklungsaufwand fuer das +Modul. +Da er Hautpfokus beim Erlernen der SQL-Sprache auf den verschiedensten +Moeglichkeiten von Anfragen liegt und das Anlegen von Tabelle und Spalten im +Vergleich eher nebensaechlich zubetrachten ist, stellt sich diese Loesung am +geeignetsten fuer das Problem der Benutzertrennung unter den aktuellen +Umstaenden da. + == Literatur * Niels Weber, Diplomarbeit -- cgit