PostgreSQL
 sql >> Database >  >> RDS >> PostgreSQL

Django + PostgreSQL:creazione di un database (quali privilegi concedere)

Django necessita dell'accesso completo al database sottostante, se desideri utilizzare tutte le sue funzionalità come migrazioni . Pertanto si consiglia nei documenti di concedere tutti i privilegi.

Ci sono casi d'uso in cui potresti voler limitare l'accesso, ad es. se hai uno schema non gestito, che è condiviso con altre app. Ma questo è abbastanza speciale. Questi argomenti non sono trattati dai documenti e lasciati per te come DBA.

Se sai quali privilegi sono necessari al tuo django, concedili come preferisci.

Se non sai quali privilegi sono necessari, utilizza la procedura seguente:

  1. Imposta il tuo progetto nel contesto di sviluppo, utilizzando un utente completamente autorizzato.
  2. Crea un nuovo utente e non concedere alcuna autorizzazione
  3. Cambia il tuo django per usare quell'utente
  4. Avvia la tua applicazione, usa le sue funzionalità e attendi errori SQL.
  5. Concedi le autorizzazioni necessarie

Ripeti i passaggi 4. e 5. finché tutto funziona:scrivi tutte le sovvenzioni in un file sql, per poterlo riprodurre in seguito. Ovviamente puoi accelerare il processo, concedendo materiale in anticipo, se sai già, che è necessario.

Molto probabilmente avrai bisogno di

  • SELECT in quasi ogni caso
  • INSERT se gli utenti dovrebbero essere in grado di creare un modello
  • UPDATE se gli utenti devono essere in grado di modificare un modello
  • DELETE se gli utenti dovrebbero essere in grado di eliminare un modello
  • REFERENCES se gli utenti creano un modello con vincoli di chiave esterna su un altro modello - REFERENCES è necessario per questo un altro modello.

Ciò che è necessario nel caso della tua domanda è qualcosa che solo tu conosci. Forse SELECT è sufficiente, quando fornisci solo un accesso leggibile ai tuoi dati.

Quando lavori in questo modo, dovresti avere un utente separato, utilizzato per la distribuzione, che dispone dei diritti adeguati per eseguire le tue migrazioni (concedere tutti i privilegi in questo caso ha senso). Questo vale per ogni versione e dovrebbe essere automatizzato IMO.