sql >> Databáze >  >> RDS >> PostgreSQL

Django + PostgreSQL:vytvoření databáze (jaká oprávnění udělit)

Django potřebuje úplný přístup k základní databázi, pokud chcete používat všechny její funkce, jako je migrace . Proto se v dokumentech doporučuje udělit všechna oprávnění.

Existují případy použití, ve kterých můžete chtít omezit přístup - např. pokud máte nespravované schéma, které je sdíleno s jinými aplikacemi. Ale tohle je docela zvláštní. Tato témata nejsou zahrnuta v dokumentech a jsou ponechána na vás jako na DBA.

Pokud víte, jaká oprávnění váš django potřebuje – udělte je, jak chcete.

Pokud nevíte, jaká oprávnění jsou potřeba, použijte následující postup:

  1. Nastavte svůj projekt v kontextu vývoje s použitím plně přiděleného uživatele.
  2. Vytvořte nového uživatele a neudělujte mu žádná oprávnění
  3. Přepněte django, abyste používali tohoto uživatele
  4. Spusťte aplikaci, používejte její funkce a počkejte na chyby SQL.
  5. Udělte potřebná oprávnění

Opakujte kroky 4. a 5., dokud vše funguje - zapište všechna povolení do jednoho souboru SQL, abyste to mohli později reprodukovat. Samozřejmě můžete proces urychlit tím, že udělíte věci dopředu, pokud už víte, že je to potřeba.

S největší pravděpodobností budete potřebovat

  • SELECT téměř v každém případě
  • INSERT pokud by uživatelé měli být schopni vytvořit model
  • UPDATE pokud by uživatelé měli mít možnost upravit model
  • DELETE pokud by uživatelé měli mít možnost smazat model
  • REFERENCES pokud uživatelé vytvoří model s omezením cizího klíče na jiný model - REFERENCES je k tomu potřeba jiný model.

Co je potřeba v případě vaší žádosti, je něco, co víte jen vy. Možná SELECT stačí, když ke svým datům poskytnete přístup ke čtení.

Když takto pracujete, měli byste mít samostatného uživatele používaného pro nasazení, který má správná práva k provádění vašich migrací (udělit všechna oprávnění v tomto případě dává smysl). To platí pro každé vydání a mělo by být IMO automatizované.




  1. Prizmatické vztahy

  2. Jak optimalizovat tabulky MySQL/MariaDB

  3. Jak provést mysqldump bez výzvy k zadání hesla?

  4. Počet řádků s PDO