Dieses Ticket fokussiert auf die konkrete Zuweisung der Lese-Berechtigungen in der Haupt-Wiki-Datenbank für den Wikibase-Datenbankbenutzer.
Was getan werden muss
Der dedizierte Datenbankbenutzer der Wikibase-Instanz (z.B. wikibase_user) muss spezifische SELECT-Rechte auf der Haupt-Wiki-Datenbank (z.B. main_wiki_db) erhalten, um auf die in T[Vorherige Ticketnummer] spezifizierten Tabellen zugreifen zu können.
- Identifikation des Wikibase-DB-Benutzers: Der Benutzer, der für die Verbindung der Wikibase-Instanz zur Datenbank verwendet wird, muss identifiziert werden.
- SQL-Statement zur Rechtevergabe: Es muss ein SQL-Statement erstellt und ausgeführt werden, das dem Wikibase-Benutzer ausschließlich das Recht SELECT auf die in der Spezifikation gelisteten Tabellen der Haupt-Wiki-Datenbank gewährt (z.B. user, user_groups, global_user_groups, interwiki, abuse_filter etc.).
- Keine Schreib-/Änderungsrechte: Es muss sichergestellt werden, dass der wikibase_user keine INSERT, UPDATE oder DELETE Rechte auf der Haupt-Wiki-Datenbank besitzt, um die Sicherheit und Datenintegrität zu gewährleisten. Die Wikibase-Instanz darf diese Tabellen nur lesen.
- Verifikation: Die erteilten Rechte müssen durch einen Test verifiziert werden, der sicherstellt, dass der Wikibase-DB-Benutzer die benötigten Daten lesen kann, jedoch keine Schreiboperationen auf der Haupt-Wiki-Datenbank zulässig sind.
Warum wir das tun
Die sichere Konfiguration der Datenbankrechte ist die Voraussetzung für die gesamte Shared-Tables-Architektur.
- Funktionsweise der Shared-Tables: Die Wikibase-Instanz benötigt Lesezugriff auf die zentralen Tabellen des Haupt-Wikis, um die Benutzerdaten (SSO) und die zentralen Features (Rechte, Watchlist, Filter) abzurufen und zu synchronisieren.
- Sicherheit durch minimale Privilegien: Durch die strikte Zuweisung nur von SELECT-Rechten wird das Prinzip der minimalen Privilegien (Least Privilege) umgesetzt. Dies verhindert, dass ein kompromittierter Wikibase-Server die Benutzerdaten oder kritische Konfigurationen des Haupt-Wikis manipuliert.
- Trennung der Verantwortlichkeiten: Die Trennung der Lese- und Schreibrechte zwischen den Instanzen gewährleistet, dass die Haupt-Wiki-Datenbank die *Master*-Quelle für die gemeinsam genutzten Daten bleibt.