Suite

Projet de protection par mot de passe QGIS


Sur un ordinateur partagé, j'ai un projet QGIS qui se connecte à une base de données PostGIS qui contient mes données. Si un utilisateur souhaite accéder aux couches à partir de la base de données, il doit saisir les informations d'identification de la base de données, ce n'est donc pas grave.

Cependant, je me suis déjà connecté et j'ai importé des couches de ma base de données dans QGIS, et je les ai manipulées dans QGIS (options de style basées sur les métadonnées, etc.)… Toute personne qui ouvre mon projet QGIS peut afficher ces couches dans QGIS, et peut donc voir les données que je souhaite être protégé dans ma base de données.

Existe-t-il un moyen de protéger par mot de passe mon projet QGIS ?


Votre meilleur pari sera de ne pas enregistrer les informations d'identification de la base de données dans votre projet (QGIS vous avertit même du danger potentiel d'enregistrer vos informations d'identification lorsque vous ajoutez la base de données pour la première fois).

Lorsque vous ouvrez le projet, vous serez immédiatement invité à saisir vos informations d'identification avant le rendu des couches de la base de données.

Alternativement, vous pouvez :

  • Utilisez les méthodes du système d'exploitation pour masquer/protéger le répertoire dans lequel votre projet QGIS est stocké, c'est-à-dire que seul votre compte utilisateur peut accéder à ce répertoire particulier
  • Vous pouvez vous essayer à exécuter un script Python sur un projet ouvert qui pourrait demander des informations d'identification, bien que dans les 5 minutes que j'ai passées à essayer cela, cela n'ait pas pu fonctionner. Consultez les propriétés du projet (CTRL+Maj+P), puis les macros pour voir ce que je veux dire.

Pour suivre le danger d'enregistrer vos informations d'identification de base de données dans QGIS, consultez cette question. Il est trivial pour quiconque avec la moindre curiosité de voir vos informations d'identification en texte brut.


Il y avait une question similaire à laquelle j'ai répondu ici. Je ne suis pas allé trop loin dans la mise en place d'une idée sur la façon de créer le formulaire de connexion, bien qu'il y ait une grande partie de la logique.

Si vous pouvez faire confiance à vos utilisateurs pour ne pas essayer d'entrer dans votre code python (ou compiler en un .exe pour le rendre encore plus difficile), vous pouvez créer un script qui ouvrira soit le projet avec les couches chargées, soit un projet vide s'ils ne sont pas en mesure de fournir les informations d'identification correctes.

Il a été question de vérifier les informations par rapport à un serveur pour une méthode plus sécurisée, que vous pourriez implémenter dans votre instance Postgres/PostGIS. Vous pourriez trouver comme un palliatif plus simple pour coder dans votre nom d'utilisateur et un mot de passe haché dans votre code python qui alimente une API pour vérification. Laissez donc votre serveur faire la comparaison au lieu de votre code de bureau. Stocker votre mot de passe haché localement n'est pas le moyen le plus sûr de faire les choses, mais selon votre algorithme de hachage, il pourrait être assez difficile de le déchiffrer.

En fin de compte, il est probablement plus sûr de fournir vos informations d'identification à chaque fois, à moins que vous ne sachiez que les autres utilisateurs ne sont pas assez calés en informatique pour comprendre l'une des méthodes automatisées que vous fourniriez.