Projeto QGIS de proteção por senha


8

Em um computador compartilhado, tenho um projeto QGIS vinculado a um banco de dados PostGIS que contém meus dados. Se um usuário quiser acessar as camadas do banco de dados, ele precisará inserir as credenciais do banco de dados, então tudo bem.

No entanto, eu já efetuei logon e importei camadas do meu banco de dados para o QGIS e as manipulei no QGIS (opções de estilo baseadas em metadados, etc.) ... Qualquer pessoa que abrir meu projeto QGIS poderá visualizar essas camadas no QGIS, e pode, portanto, ver os dados que desejo proteger em meu banco de dados.

Existe uma maneira de proteger com senha meu projeto QGIS?


Infelizmente, isso não vai funcionar, é um computador compartilhado usado por várias pessoas.
RJK57

Respostas:


11

Sua melhor aposta será não salvar as credenciais de banco de dados em seu projeto (o QGIS até avisa sobre o perigo potencial de salvar suas credenciais quando você adiciona o banco de dados pela primeira vez).

Quando você abre o projeto, suas credenciais são solicitadas imediatamente antes que quaisquer camadas do banco de dados sejam renderizadas.

Como alternativa, você pode:

  • Use métodos do SO para ocultar / proteger o diretório em que seu projeto QGIS está armazenado, ou seja, apenas sua conta de usuário pode acessar esse diretório específico
  • Você pode tentar executar um script Python em um projeto aberto que possa solicitar credenciais, embora nos 5 minutos que passei tentando isso não consiga fazer com que isso funcione. Confira Propriedades do projeto (CTRL + Shift + P) e, em seguida, Macros para entender o que quero dizer.

Para acompanhar o risco de salvar suas credenciais de banco de dados no QGIS, consulte esta pergunta . É trivial para qualquer pessoa com a menor curiosidade ver suas credenciais em texto simples.


Obrigado pela sua resposta. Eu já não estou salvando as credenciais de banco de dados. Além disso, não vejo o comportamento que você descreveu acima. Mesmo que o usuário não forneça credenciais de banco de dados, depois de cancelar a caixa de prompt, ele poderá acessar várias camadas no QGIS cuja fonte de dados é do banco de dados.
RJK57

Abra o arquivo do projeto com um editor de texto e localize as tags <datasource>. Deve haver credenciais salvas, porque o comportamento esperado após o fechamento do prompt sem inserir nada é um resultado de 'Falha na conexão'.
wchatx

Você verificou o gerenciamento correto da tabela? Talvez a função "pública" tenha SELECT correta. Talvez por isso, depois de cancelar a caixa de prompt, o usuário ainda possa acessá-la.
Aurel_nc 11/08/2015

@ wchatx Obrigado, isso fez o truque! Abriu o projeto no Notepad ++ e excluiu todas as referências a username=foo password=bar. O problema que eu vejo é que, meu banco de dados de teste apenas usou o login / senha do administrador, ou seja, postgres / postgres. Depois que eu decidi usar a pilha PostGIS / QGIS, mudei a senha. Embora não tenha digitado o nome de usuário / senha correto no QGIS, o acesso a camadas que eu havia importado com a senha atualizada foi bloqueado, por algum motivo as camadas mais antigas (importadas com a configuração do postgres / postgres) estavam OK, pois as credenciais foram salvas no banco de dados.
RJK57

@ RJK57 Excelente!
wchatx

3

Havia uma pergunta semelhante que respondi aqui . Eu não fui muito longe na criação de uma idéia de como criar o formulário de login, embora muita lógica esteja lá.

Se você pode confiar que seus usuários não tentarão acessar seu código python (ou compilar um arquivo .exe para torná-lo ainda mais difícil), você poderá criar um script que abrirá o projeto com as camadas carregadas ou um projeto vazio se eles não puderem fornecer as credenciais corretas.

Falou-se em verificar as informações em um servidor para um método mais seguro, que você pode implementar na sua instância do Postgres / PostGIS. Você pode encontrar como uma parada mais simples para codificar em seu nome de usuário e uma senha com hash em seu código python que alimenta uma API para verificação. Portanto, deixe seu servidor fazer a comparação em vez do código da área de trabalho. Armazenar sua senha com hash localmente não é a maneira mais segura de fazer as coisas, mas, dependendo do seu algoritmo de hash, pode ser muito difícil decifrá-lo .

Por fim, é provavelmente mais seguro fornecer suas credenciais todas as vezes, a menos que você saiba que os outros usuários não têm conhecimento de computador o suficiente para descobrir qualquer um dos métodos automatizados que você forneceria.


Obrigado pela sua resposta. Vou tentar implementar algum tipo de formulário e responder de volta à pergunta se eu quebrá-la ...
RJK57
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.