Unterschiede
Hier werden die Unterschiede zwischen zwei Versionen angezeigt.
| Beide Seiten der vorigen Revision Vorhergehende Überarbeitung | |||
| modul:m290_guko:learningunits:lu12:theorie:c_mysql_rollen_berechtigungen [2025/11/16 19:06] – gkoch | modul:m290_guko:learningunits:lu12:theorie:c_mysql_rollen_berechtigungen [2025/11/16 20:18] (aktuell) – gkoch | ||
|---|---|---|---|
| Zeile 6: | Zeile 6: | ||
| * in einer einfachen Noten-Datenbank zwei sinnvolle Rollen definieren (Administration und Lernende). | * in einer einfachen Noten-Datenbank zwei sinnvolle Rollen definieren (Administration und Lernende). | ||
| - | * mit den Befehlen '' | + | * mit den Befehlen '' |
| * erklären, wie das Prinzip der minimalen Privilegien mit Rollen umgesetzt werden kann. | * erklären, wie das Prinzip der minimalen Privilegien mit Rollen umgesetzt werden kann. | ||
| ===== Ausgangslage: | ===== Ausgangslage: | ||
| - | |||
| - | Stellen Sie sich eine Datenbank '' | ||
| <WRAP center round box 80%> | <WRAP center round box 80%> | ||
| - | <code sql> | + | Zum Nachvollziehen der Übung laden Sie hier das SQL-Skript herunter, welches eine entsprechende Datenbank mit den Tabellen erzeugt. |
| - | CREATE DATABASE noten_db; | + | |
| - | USE noten_db; | + | |
| - | CREATE TABLE grades ( | + | {{ : |
| - | id INT AUTO_INCREMENT PRIMARY KEY, | + | |
| - | student_id INT NOT NULL, | + | |
| - | subject_id INT NOT NULL, | + | |
| - | grade DECIMAL(3, | + | |
| - | graded_at DATE NOT NULL, | + | |
| - | CONSTRAINT fk_grades_student | + | |
| - | FOREIGN KEY (student_id) REFERENCES students(id) | + | |
| - | ON DELETE CASCADE, | + | |
| - | CONSTRAINT fk_grades_subject | + | |
| - | FOREIGN KEY (subject_id) REFERENCES subjects(id) | + | |
| - | ON DELETE CASCADE | + | |
| - | ); | + | |
| - | </ | + | |
| </ | </ | ||
| - | In dieser | + | Stellen Sie sich die Datenbank '' |
| + | |||
| + | {{: | ||
| + | |||
| + | //Die Datenbank ist mit drei Tabellen aufgebaut: '' | ||
| + | |||
| + | In der Tabelle | ||
| ===== Schritt 1: Zwei Rollen definieren ===== | ===== Schritt 1: Zwei Rollen definieren ===== | ||
| Zeile 57: | Zeile 46: | ||
| </ | </ | ||
| </ | </ | ||
| - | |||
| ===== Schritt 2: Rechte an Rollen vergeben (GRANT) ===== | ===== Schritt 2: Rechte an Rollen vergeben (GRANT) ===== | ||
| Zeile 99: | Zeile 87: | ||
| Sie setzen damit das Prinzip der minimalen Privilegien um: Lernende dürfen genau das, was sie für ihren Zweck benötigen – nicht mehr. | Sie setzen damit das Prinzip der minimalen Privilegien um: Lernende dürfen genau das, was sie für ihren Zweck benötigen – nicht mehr. | ||
| - | |||
| ===== Schritt 3: Zwei MySQL-Benutzer erstellen ===== | ===== Schritt 3: Zwei MySQL-Benutzer erstellen ===== | ||
| Zeile 105: | Zeile 92: | ||
| Jetzt legen Sie genau **zwei MySQL-Benutzer** an: | Jetzt legen Sie genau **zwei MySQL-Benutzer** an: | ||
| - | * '' | + | * '' |
| - | * '' | + | * '' |
| <WRAP center round box 80%> | <WRAP center round box 80%> | ||
| <code sql> | <code sql> | ||
| - | CREATE USER 'noten_admin' | + | CREATE USER 'lehrperson_koch' |
| IDENTIFIED BY ' | IDENTIFIED BY ' | ||
| - | CREATE USER 'lernende' | + | CREATE USER 'lernende_caduff' |
| IDENTIFIED BY ' | IDENTIFIED BY ' | ||
| </ | </ | ||
| Zeile 120: | Zeile 107: | ||
| In der Praxis sollten Sie selbstverständlich stärkere und individuelle Passwörter verwenden. Hier geht es um das Prinzip. | In der Praxis sollten Sie selbstverständlich stärkere und individuelle Passwörter verwenden. Hier geht es um das Prinzip. | ||
| - | ===== Schritt 4: Rollen an Benutzer zuweisen ===== | + | ===== Schritt 4: Rollen an Benutzer zuweisen |
| Im nächsten Schritt weisen Sie den Benutzern ihre Rollen zu: | Im nächsten Schritt weisen Sie den Benutzern ihre Rollen zu: | ||
| Zeile 127: | Zeile 114: | ||
| <code sql> | <code sql> | ||
| GRANT db_admin | GRANT db_admin | ||
| - | TO 'noten_admin' | + | TO 'lehrperson_koch' |
| GRANT lernende_role | GRANT lernende_role | ||
| - | TO 'lernende' | + | TO 'lernende_caduff' |
| </ | </ | ||
| </ | </ | ||
| Zeile 136: | Zeile 123: | ||
| Damit gilt: | Damit gilt: | ||
| - | * '' | + | * '' |
| - | * '' | + | * '' |
| Wenn Sie später eine weitere Lehrperson oder einen weiteren Admin hinzufügen, | Wenn Sie später eine weitere Lehrperson oder einen weiteren Admin hinzufügen, | ||
| - | ===== Schritt 5: Rechte kontrollieren (SHOW GRANTS) ===== | + | ===== Schritt 5: Standardrollen beim Login aktivieren (SET DEFAULT ROLE) ===== |
| + | |||
| + | MySQL unterscheidet zwischen: | ||
| + | |||
| + | * **zugewiesenen Rollen** ('' | ||
| + | * **aktiven Rollen** (die in der Session wirklich wirken). | ||
| + | |||
| + | Viele Tools (z. B. IDEs wie WebStorm) öffnen automatisch neue Verbindungen, | ||
| + | |||
| + | Damit die Rolle **automatisch beim Login aktiv** ist, setzen Sie eine **Standardrolle (Default Role)**: | ||
| + | |||
| + | <WRAP center round box 80%> | ||
| + | <code sql> | ||
| + | SET DEFAULT ROLE db_admin | ||
| + | TO ' | ||
| + | |||
| + | SET DEFAULT ROLE lernende_role | ||
| + | TO ' | ||
| + | </ | ||
| + | </ | ||
| + | |||
| + | Ab jetzt gilt: | ||
| + | |||
| + | * Wenn sich '' | ||
| + | * Wenn sich '' | ||
| + | * Tools wie WebStorm sehen die Rechte sofort und können '' | ||
| + | |||
| + | ===== Schritt 6: Rechte kontrollieren (SHOW GRANTS) ===== | ||
| Mit '' | Mit '' | ||
| Zeile 147: | Zeile 161: | ||
| <WRAP center round box 80%> | <WRAP center round box 80%> | ||
| <code sql> | <code sql> | ||
| - | SHOW GRANTS FOR 'noten_admin' | + | SHOW GRANTS FOR 'lehrperson_koch' |
| - | SHOW GRANTS FOR 'lernende' | + | SHOW GRANTS FOR 'lernende_caduff' |
| </ | </ | ||
| </ | </ | ||
| - | Sie sehen dort, welche Rollen zugewiesen wurden und welche Privilegien diese Rollen enthalten. | + | Sie sehen dort, welche Rollen zugewiesen wurden und welche Privilegien diese Rollen enthalten. So können Sie auch im Unterricht gemeinsam kontrollieren, |
| ===== Verbindung zu Datenschutz (DSG/DSGVO) ===== | ===== Verbindung zu Datenschutz (DSG/DSGVO) ===== | ||
| Zeile 159: | Zeile 173: | ||
| * **Schutz vor unbefugtem Zugriff** | * **Schutz vor unbefugtem Zugriff** | ||
| - | * Nur die Benutzer '' | + | * Nur die Benutzer '' |
| * **Prinzip der minimalen Privilegien** | * **Prinzip der minimalen Privilegien** | ||
| - | * '' | + | * '' |
| - | * '' | + | * '' |
| * **Vertraulichkeit und Integrität** | * **Vertraulichkeit und Integrität** | ||
| * Strukturänderungen und Rechteverwaltung sind auf die Admin-Rolle beschränkt. | * Strukturänderungen und Rechteverwaltung sind auf die Admin-Rolle beschränkt. | ||