Datenbanken entwerfen
Der erste Schritt ist immer das Erstellen der Datenbank, außer Sie
wollen eine bereits existierende von Dritten verwenden. Ist eine
Datenbank erstellt, ist sie einem Eigentümer zugewiesen, welcher das
Kommando zum Erstellen ausgeführt hat. Gewöhnlich kann nur der
Eigentümer (oder ein Superuser) alles mit den Objekten in dieser
Datenbank machen, und um anderen Benutzern die Verwendung zu erlauben,
müssen Rechte vergeben werden.
Anwendungen sollten sich mit der Datenbank nie als deren Eigentümer oder
als ein Superuser verbinden, da diese Benutzer jede beliebige Abfrage
ausführen können, um z. B. das Schema zu modifizieren (z. B. Tabellen
löschen) oder den gesamten Inhalt löschen.
Sie können verschiedene Datenbanknutzer für jeden Aspekt Ihrer Anwendung
mit sehr limitierten Rechten auf Datenbankobjekte anlegen. Nur die
wirklich benötigten Rechte sollten gewährt werden, und vermeiden Sie,
dass der gleiche Benutzer in verschiedenen Anwendungsfällen mit der
Datenbank interagieren kann. Das heißt, dass Eindringlinge, welche unter
Verwendung einer dieser Referenzen Zugriff auf Ihre Datenbank erlangt
haben, nur so viele Änderungen durchführen können, wie es Ihre Anwendung
kann.
krystian at jablonowski dot eu ¶3 years ago
It's a good practice to create a user account with absolutely minimal permissions. Whenever You need to select those permissions by columns or tables remember that some rules don't apply to security measures on Your server, like "We are all adults here" or "KISS - Keep It Simple Stupid". Personally, I prefer to create a minimal amount of users with only the necessary authorization to manipulate or collect data from DB.
Remember, that leak of data can have tremendous consequences, and rebuilding the trust of Your users is extremely hard to accomplish.