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
SELECT
téměř v každém případěINSERT
pokud by uživatelé měli být schopni vytvořit modelUPDATE
pokud by uživatelé měli mít možnost upravit modelDELETE
pokud by uživatelé měli mít možnost smazat modelREFERENCES
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é.