Passwort Schützen Sie das QGIS-Projekt

8

Auf einem gemeinsam genutzten Computer habe ich ein QGIS-Projekt, das mit einer PostGIS-Datenbank verknüpft ist, die meine Daten enthält. Wenn ein Benutzer von der Datenbank aus auf Ebenen zugreifen möchte, muss er die Anmeldeinformationen der Datenbank eingeben. Das ist also in Ordnung.

Ich habe mich jedoch zuvor angemeldet und Layer aus meiner Datenbank in QGIS importiert und in QGIS bearbeitet (Stiloptionen basierend auf Metadaten usw.). Jeder, der mein QGIS-Projekt öffnet, kann diese Layer in QGIS anzeigen und kann daher die Daten, die ich schützen möchte, in meiner Datenbank sehen.

Gibt es eine Möglichkeit, mein QGIS-Projekt mit einem Passwort zu schützen?

RJK57
quelle
Das wird leider nicht funktionieren, es ist ein gemeinsam genutzter Computer, der von mehreren Personen verwendet wird.
RJK57

Antworten:

11

Am besten speichern Sie die Datenbankanmeldeinformationen in Ihrem Projekt nicht (QGIS warnt Sie sogar vor der potenziellen Gefahr, Ihre Anmeldeinformationen zu speichern, wenn Sie die Datenbank zum ersten Mal hinzufügen).

Wenn Sie das Projekt öffnen, werden Sie sofort zur Eingabe Ihrer Anmeldeinformationen aufgefordert, bevor Ebenen aus der Datenbank gerendert werden.

Alternativ können Sie:

  • Verwenden Sie Betriebssystemmethoden, um das Verzeichnis auszublenden / zu schützen, in dem Ihr QGIS-Projekt gespeichert ist, dh nur Ihr Benutzerkonto kann auf dieses bestimmte Verzeichnis zugreifen
  • Sie könnten versuchen, ein Python-Skript beim Öffnen eines Projekts auszuführen, bei dem möglicherweise Anmeldeinformationen abgefragt werden. In den 5 Minuten, die ich damit verbracht habe, konnte dies jedoch nicht funktionieren. Überprüfen Sie die Projekteigenschaften (STRG + Umschalt + P) und dann die Makros, um zu sehen, was ich meine.

In dieser Frage erfahren Sie, wie Sie Ihre Datenbankanmeldeinformationen in QGIS speichern können . Für jeden mit der geringsten Neugier ist es trivial, Ihre Anmeldeinformationen im Klartext zu sehen.

wchatx
quelle
Vielen Dank für Ihre Antwort. Ich speichere die DB-Anmeldeinformationen bereits nicht. Außerdem sehe ich das oben beschriebene Verhalten nicht. Selbst wenn der Benutzer keine Datenbankanmeldeinformationen angibt, kann er nach dem Abbrechen des Eingabeaufforderungsfelds auf eine Reihe von Ebenen in QGIS zugreifen, deren Datenquelle aus der Datenbank stammt.
RJK57
Öffnen Sie die Projektdatei mit einem Texteditor und suchen Sie die <datasource> -Tags. Es müssen Anmeldeinformationen gespeichert werden, da das erwartete Verhalten nach dem Schließen der Eingabeaufforderung ohne Eingabe eines Ereignisses das Ergebnis "Verbindung fehlgeschlagen" ist.
wchatx
Haben Sie die richtige Verwaltung der Tabelle überprüft? Vielleicht hat die "öffentliche" Rolle das SELECT-Recht. Dies ist möglicherweise der Grund, warum der Benutzer nach dem Abbrechen des Eingabeaufforderungsfelds weiterhin darauf zugreifen kann.
Aurel_nc
@wchatx Danke, das hat den Trick gemacht! Öffnete das Projekt in Notepad ++ und löschte alle Verweise auf username=foo password=bar. Das Problem, soweit ich sehen kann, ist, dass meine Testdatenbank nur das Administrator-Login / Passwort verwendet hat, dh postgres / postgres. Nachdem ich mich für den PostGIS / QGIS-Stack entschieden hatte, änderte ich das Passwort. Obwohl in QGIS nicht der richtige Benutzername / das richtige Kennwort eingegeben wurde, wurde der Zugriff auf Layer blockiert, die ich mit dem aktualisierten Kennwort importiert hatte. Aus irgendeinem Grund waren ältere Layer (importiert mit der Konfiguration postgres / postgres) in Ordnung, da die Anmeldeinformationen in der Datenbank gespeichert wurden.
RJK57
@ RJK57 Ausgezeichnet!
wchatx
3

Es gab eine ähnliche Frage, die ich hier beantwortet habe . Ich bin nicht zu weit gegangen, um eine Idee zum Erstellen des Anmeldeformulars zu entwickeln, obwohl eine große Logik vorhanden ist.

Wenn Sie Ihren Benutzern vertrauen können, dass sie nicht versuchen, in Ihren Python-Code zu gelangen (oder zu einer EXE-Datei kompilieren, um es noch schwieriger zu machen), können Sie ein Skript erstellen, das entweder das Projekt mit den darin geladenen Ebenen öffnet oder eine leeres Projekt, wenn sie nicht in der Lage sind, die richtigen Anmeldeinformationen anzugeben.

Es war die Rede davon, die Informationen anhand eines Servers auf eine sicherere Methode zu überprüfen, die Sie in Ihrer Postgres / PostGIS-Instanz implementieren könnten. Sie könnten eine einfachere Lücke finden, um Ihren Benutzernamen und ein Hash-Passwort in Ihren Python-Code einzugeben, das zur Überprüfung an eine API weitergeleitet wird. Lassen Sie also Ihren Server den Vergleich anstelle Ihres Desktop-Codes durchführen. Das lokale Speichern Ihres Hash-Passworts ist nicht die sicherste Methode, aber abhängig von Ihrem Hash-Algorithmus kann es möglicherweise ziemlich schwierig sein, es zu knacken .

Letztendlich ist es wahrscheinlich sicherer, jedes Mal nur Ihre Anmeldeinformationen anzugeben, es sei denn, Sie wissen, dass die anderen Benutzer nicht über ausreichende Computerkenntnisse verfügen, um eine der von Ihnen angegebenen automatisierten Methoden zu ermitteln.

Branco
quelle
Vielen Dank für Ihre Antwort. Ich werde versuchen, eine Art Formular zu implementieren und auf die Frage zu antworten, wenn ich sie
knacke