Projet QGIS Password Protect

8

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 entrer les informations d'identification de la base de données, donc c'est OK.

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

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

RJK57
la source
Cela ne fonctionnera malheureusement pas, c'est un ordinateur partagé utilisé par plusieurs personnes.
RJK57

Réponses:

11

Votre meilleur pari sera de ne pas enregistrer les informations d'identification de la base de données dans votre projet (QGIS vous donne même un avertissement sur le danger potentiel de l'enregistrement de 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.

Vous pouvez également:

  • 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 d'utilisateur peut accéder à ce répertoire particulier
  • Vous pourriez vous essayer à l'exécution d'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, je n'ai pas pu faire fonctionner cela. Consultez les propriétés du projet (CTRL + Maj + P), puis les macros pour voir ce que je veux dire.

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

wchatx
la source
Merci pour votre réponse. Je ne sauvegarde pas déjà les informations d'identification de la base de données. De plus, je ne vois pas le comportement que vous avez décrit ci-dessus. Même si l'utilisateur ne fournit pas d'informations d'identification de base de données, après avoir annulé la boîte de dialogue, il peut accéder à un tas de couches dans QGIS dont la source de données provient de la base de données.
RJK57
Ouvrez le fichier de projet avec un éditeur de texte et recherchez les balises <datasource>. Il doit y avoir des informations d'identification enregistrées, car le comportement attendu après la fermeture de l'invite sans entrer quoi que ce soit est un résultat «Échec de la connexion».
wchatx
Avez-vous vérifié la bonne gestion de la table? Peut-être que le rôle "public" a le droit SELECT. C'est peut-être pourquoi, après avoir annulé la boîte de dialogue, l'utilisateur peut toujours y accéder.
aurel_nc
@wchatx Merci, ça a fait l'affaire! Ouvert le projet dans Notepad ++ et supprimé toutes les références à username=foo password=bar. Pour autant que je puisse voir, le problème est que ma base de données de test vient d'utiliser le login / mot de passe administrateur, c'est-à-dire postgres / postgres. Après avoir décidé d'utiliser la pile PostGIS / QGIS, j'ai changé le mot de passe. Bien que vous n'ayez pas entré le nom d'utilisateur / mot de passe correct dans QGIS, vous avez bloqué l'accès aux couches que j'avais importées avec le mot de passe mis à jour, pour une raison quelconque, les couches plus anciennes (importées avec la configuration postgres / postgres) étaient OK car les informations d'identification ont été enregistrées dans la base de données.
RJK57
@ RJK57 Excellent!
wchatx
3

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'une grande partie de la logique soit là.

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 le projet avec les couches chargées dedans, ou 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 pouvez trouver comme un stopgap plus simple pour coder 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 casser .

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

Branco
la source
Merci pour votre réponse. Je vais essayer d'implémenter une sorte de formulaire et de répondre à la question si je le craque ...
RJK57