Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Bereitstellung von MySQL-Benutzern mit nur den minimalen Privilegien

Ich stimme Bill hier nicht zu und die Denkweise von Atomix ist passender. Sofern nicht anders nachgewiesen werden kann, erhöht Bills Antwort das Risiko, dass die Datenbank kompromittiert wird.

Vielleicht gibt es für sehr erfahrene Entwickler andere Sicherheitsvorkehrungen, aber für andere Entwickler, die einem Skript vollen, uneingeschränkten Zugriff geben, um ~alles~ mit einer Datenbank zu tun, bedeutet Ärger, wenn es nicht nötig ist.

Hier sollte das Prinzip der geringsten Rechte gelten. Haben Sie für MySQL einen Superuser mit allen Rechten, der zum Erstellen von Tabellen, Löschen von Datenbanken usw. verwendet wird. Idealerweise werden dieser Benutzername und dieses Passwort nie in einer PHP-Datei oder einer Datei auf dem Webserver gesehen. (Ich verwende PHP als Beispiel, aber es gilt für andere Webanwendungen). Sie würden diesen Benutzernamen und dieses Passwort nur mit etwas wie PHPMyAdmin oder MySQL Workbench verwenden.

Dann haben Sie für PHP-Skripte eines mit dem erforderlichen Minimum, wie z. B. nur INSERT, SELECT, UPDATE, vielleicht nicht einmal DELETE, abhängig von Ihrem PHP-Skript. Dies wäre in den PHP-Dateien, also eigentlich nur EINE Datei AUSSERHALB des Dokumentenstamms, wie von den meisten empfohlen.

Der Grund ist also:Ja, Sie brauchen nicht für jeden Benutzer einer Webanwendung einen MySQL-Benutzer. Aber Prinzip der geringsten Privilegien ( http://en.wikipedia.org/wiki/Principle_of_least_privilege ) gelten sollte. Wenn Ihr MySQL-Superuser irgendwie kompromittiert ist, weil Sie Ihr MySQL-Verbindungsskript versehentlich als .txt statt .php bezeichnet haben oder jemand Zugriff auf die Webserverdateien erlangt hat, ist das "Schlimmste", was er tun kann, zumindest SELECT, UPDATE und INSERT. .. Was zwar ohnehin große Probleme bereiten kann, aber nicht so schlimm ist, wie ihnen DROP DATABASE, DROP TABLES und viel Schlimmeres zu geben.

Darüber hinaus ist in meinem aktuellen Projekt aufgrund agiler Entwicklungspraktiken (ich arbeite nicht für, empfehle aber http://www.agilealliance .org/ ), verwenden ein oder zwei "nicht-technische" Teammitglieder direkt PHPMyAdmin, um direkte Änderungen an der MySQL-Datenbank vorzunehmen. Denn die Erstellung eines CMS zur einfachen direkten Dateneingabe ist nicht erforderlich. In diesem Fall ist ein dritter MySQL-Benutzer mit angemessenen, aber auch „gerade ausreichenden“ Rechten für sie geeignet. Wir wollen das Teammitglied nicht mit zu wenig Privilegien lähmen, aber es soll natürlich nicht möglich sein, Dinge versehentlich zu löschen oder zu ändern.

Da MySQL keine ROLLEN hat (zu dem Zeitpunkt, als die ursprüngliche Frage gestellt wurde, und gemäß Bill), ist es sehr riskant, jedem Webskript zu erlauben, nur mit nur einem Super User auf MySQL zuzugreifen.