PostgreSQL
 sql >> Datenbank >  >> RDS >> PostgreSQL

Django + PostgreSQL:Erstellen einer Datenbank (welche Berechtigungen zu gewähren)

Django benötigt vollen Zugriff auf die zugrunde liegende Datenbank, wenn Sie alle seine Funktionen wie nutzen möchten Migrationen . Daher wird in der Dokumentation empfohlen, alle Rechte zu vergeben.

Es gibt Anwendungsfälle, in denen Sie den Zugriff möglicherweise einschränken möchten - z. wenn Sie ein nicht verwaltetes Schema haben, das mit anderen Apps geteilt wird. Aber das ist etwas ganz Besonderes. Diese Themen werden in der Dokumentation nicht behandelt und Ihnen als DBA überlassen.

Wenn Sie wissen, welche Privilegien Ihr Django benötigt, vergeben Sie sie einfach nach Belieben.

Wenn Sie nicht wissen, welche Berechtigungen erforderlich sind, gehen Sie wie folgt vor:

  1. Richten Sie Ihr Projekt im Entwicklungskontext ein und verwenden Sie dabei einen vollberechtigten Benutzer.
  2. Erstellen Sie einen neuen Benutzer und erteilen Sie keine Berechtigungen
  3. Schalten Sie Ihr Django um, um diesen Benutzer zu verwenden
  4. Starten Sie Ihre Anwendung, verwenden Sie ihre Funktionen und warten Sie auf SQL-Fehler.
  5. Erteilen Sie die erforderlichen Berechtigungen

Wiederholen Sie Schritt 4. und 5. solange alles funktioniert - schreiben Sie alle Grants in eine sql-Datei, um diese später reproduzieren zu können. Natürlich kannst du den Prozess beschleunigen, indem du etwas vorweg gibst, wenn du schon weißt, dass es gebraucht wird.

Sie werden höchstwahrscheinlich

benötigen
  • SELECT in fast jedem Fall
  • INSERT ob Benutzer in der Lage sein sollen, ein Modell zu erstellen
  • UPDATE ob Benutzer in der Lage sein sollen, ein Modell zu ändern
  • DELETE ob Benutzer ein Modell löschen können sollen
  • REFERENCES wenn Benutzer ein Modell mit Fremdschlüsselbeschränkungen für ein anderes Modell erstellen - REFERENCES wird hierfür ein weiteres Modell benötigt.

Was im Falle Ihrer Bewerbung benötigt wird, wissen nur Sie. Vielleicht SELECT genügt, wenn Sie lediglich lesbaren Zugriff auf Ihre Daten gewähren.

Wenn Sie so arbeiten, sollten Sie einen separaten Benutzer haben, der für die Bereitstellung verwendet wird und über die entsprechenden Rechte zum Ausführen Ihrer Migrationen verfügt (in diesem Fall ist es sinnvoll, alle Berechtigungen zu gewähren). Dies gilt für jede Version und sollte meiner Meinung nach automatisiert werden.