Proyecto de protección de contraseña QGIS

8

En una computadora compartida, tengo un proyecto QGIS que se vincula a una base de datos PostGIS que contiene mis datos. Si un usuario desea acceder a las capas de la base de datos, debe ingresar las credenciales de la base de datos, por lo que está bien.

Sin embargo, previamente inicié sesión e importé capas de mi base de datos en QGIS, y las manipulé en QGIS (opciones de estilo basadas en metadatos, etc.) ... Cualquiera que abra mi proyecto QGIS puede ver estas capas en QGIS, y Por lo tanto, puedo ver los datos que deseo proteger en mi base de datos.

¿Hay alguna manera de proteger con contraseña mi proyecto QGIS?

RJK57
fuente
Desafortunadamente, eso no funcionará, es una computadora compartida utilizada por varias personas.
RJK57

Respuestas:

11

Su mejor opción es no guardar las credenciales de db en su proyecto (QGIS incluso le advierte sobre el peligro potencial de guardar sus credenciales cuando agrega el db por primera vez).

Cuando abra el proyecto, se le solicitarán inmediatamente sus credenciales antes de que se representen las capas de la base de datos.

Alternativamente, puedes:

  • Utilice los métodos del sistema operativo para ocultar / proteger el directorio donde está almacenado su proyecto QGIS, es decir, solo su cuenta de usuario puede acceder a ese directorio en particular
  • Podría intentar ejecutar un script de Python en el proyecto abierto que podría pedir credenciales, aunque en los 5 minutos que pasé intentando eso, no pude hacer que esto funcione. Echa un vistazo a las Propiedades del proyecto (CTRL + Shift + P) y luego Macros para ver a qué me refiero.

Para hacer un seguimiento del peligro de guardar sus credenciales de db en QGIS, consulte esta pregunta . Es trivial para cualquiera con la más mínima curiosidad ver sus credenciales en texto sin formato.

wchatx
fuente
Gracias por su respuesta. Ya no estoy guardando las credenciales de db. Además, no veo el comportamiento que ha descrito anteriormente. Incluso si el usuario no proporciona credenciales de db, después de cancelar el cuadro de solicitud, puede acceder a un montón de capas en QGIS cuya fuente de datos es de db.
RJK57
Abra el archivo del proyecto con un editor de texto y busque las etiquetas <datasource>. Debe haber credenciales guardadas, porque el comportamiento esperado después de cerrar la solicitud sin ingresar nada es un resultado de 'Error de conexión'.
wchatx
¿Ha verificado la correcta gestión de la tabla? Quizás el rol "público" tiene el derecho de SELECCIONAR. Quizás por eso, después de cancelar el cuadro de aviso, el usuario aún puede acceder a él.
aurel_nc
@wchatx Gracias, ¡eso funcionó! Abrió el proyecto en Notepad ++ y eliminó todas las referencias a username=foo password=bar. El problema hasta donde puedo ver es que mi base de datos de prueba solo usó el nombre de usuario / contraseña de administrador, es decir, postgres / postgres. Después de que decidí usar la pila PostGIS / QGIS, cambié la contraseña. Si bien no ingresar el nombre de usuario / contraseña correctos en QGIS bloqueó el acceso a las capas que había importado con la contraseña actualizada, por alguna razón las capas más antiguas (importadas con la configuración postgres / postgres) estaban bien ya que las credenciales se guardaron en la base de datos.
RJK57
@ RJK57 Excelente!
wchatx
3

Había una pregunta similar que respondí aquí . No fui demasiado lejos en la creación de una idea sobre cómo crear el formulario de inicio de sesión, aunque existe mucha lógica.

Si puede confiar en que sus usuarios no intentarán ingresar a su código de Python (o compilarlo en un .exe para hacerlo aún más difícil), podría crear un script que abrirá el proyecto con las capas cargadas en él, o un proyecto vacío si no pueden proporcionar las credenciales correctas.

Se habló de verificar la información en un servidor para obtener un método más seguro, que podría implementar en su instancia de Postgres / PostGIS. Puede encontrar una solución provisional más simple para codificar en su nombre de usuario y una contraseña cifrada en su código de Python que se alimenta a una API para su verificación. Deje que su servidor haga la comparación en lugar de su código de escritorio. Almacenar su contraseña hash localmente no es la forma más segura de hacer las cosas, pero dependiendo de su algoritmo hash, podría ser bastante difícil descifrarlo .

En última instancia, es probable que sea más seguro proporcionar sus credenciales cada vez, a menos que sepa que los otros usuarios no son lo suficientemente expertos en informática como para descubrir cualquiera de los métodos automatizados que proporcionaría.

Branco
fuente
Gracias por su respuesta. Intentaré implementar algún tipo de formulario y responderé a la pregunta si lo
descifro