sql >> Base de Datos >  >> RDS >> PostgreSQL

Django + PostgreSQL:creando una base de datos (qué privilegios otorgar)

Django necesita acceso completo a la base de datos subyacente, si desea utilizar todas sus características como migraciones . Por lo tanto, se recomienda en los documentos otorgar todos los privilegios.

Hay casos de uso en los que es posible que desee restringir el acceso, p. si tiene un esquema no administrado, que se comparte con otras aplicaciones. Pero esto es bastante especial. Esos temas no están cubiertos por los documentos y se los dejo a usted como DBA.

Si sabe qué privilegios necesita su django, concédalos como desee.

Si no sabe qué privilegios se necesitan, use el siguiente procedimiento:

  1. Configure su proyecto en el contexto de desarrollo, utilizando un usuario autorizado completo.
  2. Cree un nuevo usuario y no otorgue ningún permiso
  3. Cambia tu django para usar ese usuario
  4. Inicie su aplicación, use sus funciones y espere los errores de SQL.
  5. Otorgue los permisos necesarios

Repita los pasos 4 y 5 mientras todo funcione:escriba todas las concesiones en un archivo sql para poder reproducir esto más tarde. Por supuesto, puede acelerar el proceso otorgando cosas por adelantado, si ya sabe, que son necesarias.

Lo más probable es que necesite

  • SELECT en casi cualquier caso
  • INSERT si los usuarios deberían poder crear un modelo
  • UPDATE si los usuarios deberían poder modificar un modelo
  • DELETE si los usuarios deberían poder eliminar un modelo
  • REFERENCES si los usuarios crean un modelo con restricciones de clave externa a otro modelo - REFERENCES se necesita para este otro modelo.

Lo que se necesita en el caso de su solicitud es algo que solo usted sabe. Quizás SELECT es suficiente, cuando solo proporciona acceso legible a sus datos.

Cuando trabaja así, debe tener un usuario separado, utilizado para la implementación, que tenga los derechos adecuados para ejecutar sus migraciones (conceder todos los privilegios en este caso tiene sentido). Esto se aplica a cada versión y debe automatizarse en mi opinión.