Unterschiede
Hier werden die Unterschiede zwischen zwei Versionen angezeigt.
| modul:m290_guko:learningunits:lu12:theorie:c_rechte_vergeben [2025/11/12 00:00] – angelegt gkoch | modul:m290_guko:learningunits:lu12:theorie:c_rechte_vergeben [2025/11/12 00:19] (aktuell) – gkoch | ||
|---|---|---|---|
| Zeile 1: | Zeile 1: | ||
| - | ====== LU12c - GRANT: | + | ====== LU12c - Rechte |
| <WRAP round 80% box center> | <WRAP round 80% box center> | ||
| - | **Grundform:** | + | **Ziel:** Mit **GRANT** Rechte auf passenden Ebenen vergeben, mit **SHOW GRANTS** prüfen, mit **REVOKE** entziehen. |
| - | <code sql>GRANT privileg[, ...] ON privileg_level TO ' | + | Wir bilden WordPress-Rollen **sinngemäss** auf **MySQL-Rollen** ab: |
| </ | </ | ||
| - | ==== Privileg-Level (Scope) ==== | ||
| <WRAP round 80% box> | <WRAP round 80% box> | ||
| - | ^ Level ^ Schreibweise | + | ^ WP-Rolle (App) ^ Sinnbild DB-Rolle (MySQL) |
| - | | **Global** | '' | + | | **Administrator** | '' |
| - | | **Datenbank** | '' | + | | **Redakteur (Editor)** | '' |
| - | | **Tabelle** | '' | + | | **Autor** | '' |
| - | | **Spalte** | '' | + | | **Leser/ |
| - | | **Routine** | '' | + | |
| </ | </ | ||
| - | ==== Beispiel: Datenbank | + | <WRAP round 80% box center> |
| + | **Hinweis: | ||
| + | </ | ||
| + | |||
| + | ===== 0) Ebenen-Überblick ===== | ||
| + | <WRAP round 80% box> | ||
| + | ^ Ebene ^ Schreibweise ^ Wirkung (Beispiel) ^ | ||
| + | | **Datenbank** | '' | ||
| + | | **Tabelle** | '' | ||
| + | | **Spalte** | '' | ||
| + | </ | ||
| + | |||
| + | ===== 1) Rollen anlegen & berechtigen (einmalig als root) ===== | ||
| <WRAP round 80% box> | <WRAP round 80% box> | ||
| - | **1. DB & Tabelle anlegen (root)** | ||
| <code sql> | <code sql> | ||
| - | CREATE | + | -- Rollen |
| - | USE bobdb; | + | CREATE |
| - | CREATE TABLE IF NOT EXISTS todos( | + | |
| - | id INT AUTO_INCREMENT PRIMARY KEY, | + | -- Rechte an Rollen vergeben |
| - | title VARCHAR(255) NOT NULL, | + | GRANT ALL PRIVILEGES |
| - | | + | |
| - | ); | + | GRANT SELECT |
| + | GRANT SELECT, INSERT, UPDATE, DELETE ON wttw.posts | ||
| + | GRANT SELECT, INSERT, UPDATE | ||
| + | |||
| + | GRANT SELECT, INSERT, DELETE | ||
| + | GRANT SELECT, INSERT | ||
| + | |||
| + | GRANT SELECT | ||
| </ | </ | ||
| + | </ | ||
| - | **2. Rechte vergeben (root)** | + | ===== 2) Rollen Benutzern zuweisen & Standardrollen setzen ===== |
| - | //Alle Rechte auf **diese** DB an '' | + | <WRAP round 80% box> |
| <code sql> | <code sql> | ||
| - | GRANT ALL PRIVILEGES ON bobdb.* | + | -- Benutzer aus Seite 1: |
| + | -- ' | ||
| + | |||
| + | GRANT wp_admin | ||
| + | GRANT wp_editor TO ' | ||
| + | GRANT wp_read | ||
| + | |||
| + | -- Standardrollen aktiv bei Login | ||
| + | SET DEFAULT ROLE ALL TO | ||
| + | ' | ||
| + | ' | ||
| + | ' | ||
| + | | ||
| </ | </ | ||
| + | </ | ||
| - | **3. Kontrolle** | + | ===== 3) Rechte prüfen: SHOW GRANTS ===== |
| + | <WRAP round 80% box> | ||
| <code sql> | <code sql> | ||
| - | SHOW GRANTS FOR 'bob' | + | SHOW GRANTS FOR 'tran_editor' |
| + | -- Rolle " | ||
| + | SHOW GRANTS FOR ' | ||
| + | |||
| + | SHOW GRANTS FOR ' | ||
| + | SELECT CURRENT_ROLE(); | ||
| </ | </ | ||
| + | </ | ||
| - | **4. Test (als bob)** | + | ===== 4) Funktions-Tests ===== |
| + | <WRAP round 80% box> | ||
| + | **Als '' | ||
| <code sql> | <code sql> | ||
| - | USE bobdb; | + | USE wttw; |
| - | INSERT INTO todos(title) VALUES ('Learn MySQL'); | + | |
| - | SELECT * FROM todos; | + | -- darf Inhalte pflegen: |
| + | INSERT INTO posts(author_id, | ||
| + | UPDATE posts SET status=' | ||
| + | INSERT INTO comments(post_id, | ||
| + | |||
| + | -- kein DDL: | ||
| + | DROP TABLE posts; -- ❌ (erwarteter Fehler) | ||
| + | </ | ||
| + | |||
| + | **Als '' | ||
| + | <code sql> | ||
| + | USE wttw; | ||
| + | SELECT | ||
| + | INSERT INTO posts(author_id, | ||
| </ | </ | ||
| </ | </ | ||
| - | < | + | ===== 5) REVOKE – Rechte entziehen (an Benutzer oder Rolle) ===== |
| - | **Hinweis:** Für GRANT brauchen Sie entsprechende Admin-Rechte | + | <WRAP round 80% box> |
| - | '' | + | **Temporär Kommentare sperren (alle Redakteure betroffen, da über Rolle):** |
| + | <code sql> | ||
| + | -- als root: an der Rolle entziehen | ||
| + | REVOKE INSERT, DELETE ON wttw.comments FROM wp_editor; | ||
| + | |||
| + | -- Prüfung: | ||
| + | SHOW GRANTS FOR ' | ||
| + | |||
| + | -- Rückgängig machen: | ||
| + | GRANT INSERT, DELETE ON wttw.comments TO wp_editor; | ||
| + | </ | ||
| + | </ | ||
| + | |||
| + | |||
| + | |||
| + | **Gute Praxis: | ||
| + | * **Least-Privilege** umsetzen | ||
| + | * Host **nicht** mit '' | ||
| + | * Standardrollen setzen ('' | ||
| + | * Rechte regelmässig prüfen ('' | ||
| </ | </ | ||