Proyek Protect QGIS dengan Kata Sandi

8

Pada komputer bersama, saya memiliki proyek QGIS yang menghubungkan ke database PostGIS yang berisi data saya. Jika pengguna ingin mengakses lapisan dari db, mereka harus memasukkan kredensial db, jadi tidak apa-apa.

Namun, saya sebelumnya telah login dan mengimpor layer dari db saya ke QGIS, dan memanipulasinya di QGIS (opsi styling berdasarkan meta-data, dll.) ... Siapa saja yang membuka proyek QGIS saya dapat melihat layer ini di QGIS, dan Karena itu dapat melihat data yang saya ingin dilindungi di db saya.

Apakah ada cara untuk melindungi proyek QGIS kata sandi saya?

RJK57
sumber
Sayangnya itu tidak akan berhasil, ini adalah komputer bersama yang digunakan oleh banyak orang.
RJK57

Jawaban:

11

Taruhan terbaik Anda adalah tidak menyimpan kredensial db di proyek Anda (QGIS bahkan memberi Anda peringatan tentang potensi bahaya menyimpan kredensial Anda saat pertama kali menambahkan db).

Ketika Anda membuka proyek, Anda akan segera diminta kredensial Anda sebelum lapisan dari db diberikan.

Atau, Anda dapat:

  • Gunakan metode OS untuk menyembunyikan / melindungi direktori tempat proyek QGIS Anda disimpan, yaitu hanya akun pengguna Anda yang dapat mengakses direktori tertentu
  • Anda bisa mencoba menjalankan skrip Python pada proyek terbuka yang mungkin meminta kredensial, meskipun dalam 5 menit saya habiskan untuk mencoba itu, tidak dapat menjalankannya. Lihat Properti Proyek (CTRL + Shift + P) dan kemudian Macro untuk melihat apa yang saya maksud.

Untuk menindaklanjuti bahaya menyimpan kredensial db Anda di QGIS, lihat pertanyaan ini . Ini sepele bagi siapa pun yang memiliki sedikit keingintahuan untuk melihat kredensial Anda dalam teks biasa.

wchatx
sumber
Terimakasih atas tanggapan Anda. Saya sudah tidak menyimpan kredensial db. Juga, saya tidak melihat perilaku yang Anda jelaskan di atas. Bahkan jika pengguna tidak memberikan kredensial db, setelah membatalkan kotak prompt ia dapat mengakses sekelompok lapisan di QGIS yang sumber datanya berasal dari db.
RJK57
Buka file proyek dengan editor teks dan temukan tag <datasource>. Harus ada kredensial yang disimpan, karena perilaku yang diharapkan setelah menutup prompt tanpa memasukkan apa pun adalah hasil 'Koneksi gagal'.
wchatx
Apakah Anda memeriksa manajemen tabel yang benar? Mungkin peran "publik" memiliki hak SELECT. Itu mungkin sebabnya setelah membatalkan kotak prompt pengguna masih dapat mengaksesnya.
aurel_nc
@watx Terima kasih, itu berhasil! Membuka proyek di Notepad ++, dan menghapus semua referensi username=foo password=bar. Masalah yang sejauh ini dapat saya lihat adalah, database pengujian saya hanya menggunakan admin login / kata sandi, yaitu postgres / postgres. Setelah saya memutuskan untuk menggunakan tumpukan PostGIS / QGIS saya mengubah kata sandi. Meskipun tidak memasukkan nama pengguna / kata sandi yang benar di QGIS memblokir akses ke lapisan yang saya impor dengan kata sandi yang diperbarui, untuk beberapa alasan lapisan yang lebih lama (diimpor dengan konfigurasi postgres / postgres) tidak apa-apa karena kredensial disimpan dalam database.
RJK57
@ RJK57 Luar Biasa!
wchatx
3

Ada pertanyaan serupa yang saya jawab di sini . Saya tidak melangkah terlalu jauh untuk menyiapkan ide tentang cara membuat formulir login, meskipun banyak logika ada di sana.

Jika Anda dapat mempercayai pengguna Anda untuk tidak mencoba masuk ke kode python Anda (atau kompilasi ke .exe untuk membuatnya lebih sulit), Anda bisa membuat skrip yang akan membuka proyek dengan lapisan yang dimuat di dalamnya, atau proyek kosong jika mereka tidak dapat menyediakan kredensial yang benar.

Ada pembicaraan untuk memeriksa informasi terhadap server untuk metode yang lebih aman, yang dapat Anda terapkan dalam instance Postgres / PostGIS Anda. Anda dapat menemukan sebagai pengganti sementara yang lebih sederhana untuk kode dalam nama pengguna Anda dan kata sandi hash ke dalam kode python Anda yang diumpankan ke API untuk verifikasi. Jadi biarkan server Anda melakukan perbandingan alih-alih kode desktop Anda. Menyimpan kata sandi hash Anda secara lokal bukanlah cara yang paling aman untuk melakukan sesuatu, tetapi tergantung pada algoritma hash Anda, ini bisa berpotensi sangat sulit untuk memecahkannya .

Pada akhirnya, mungkin lebih aman untuk hanya memasok kredensial Anda setiap kali kecuali Anda tahu pengguna lain tidak cukup paham komputer untuk mengetahui metode otomatis apa pun yang Anda berikan.

Branco
sumber
Terimakasih atas tanggapan Anda. Saya akan mencoba menerapkan semacam formulir dan menanggapi kembali pertanyaan jika saya memecahkannya ...
RJK57