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:
- Nastavte svůj projekt v kontextu vývoje s použitím plně přiděleného uživatele.
- Vytvořte nového uživatele a neudělujte mu žádná oprávnění
- Přepněte django, abyste používali tohoto uživatele
- Spusťte aplikaci, používejte její funkce a počkejte na chyby SQL.
- 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
SELECTtéměř v každém případěINSERTpokud by uživatelé měli být schopni vytvořit modelUPDATEpokud by uživatelé měli mít možnost upravit modelDELETEpokud by uživatelé měli mít možnost smazat modelREFERENCESpokud uživatelé vytvoří model s omezením cizího klíče na jiný model -REFERENCESje 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é.