2013/12/3 renato senda <[email protected]>

> Galera por favor!
> Tenho uma aplicaçao web em c# e tenho uma string de conexao com um usuario
> e
> senha pra conectar ao banco.
> Existe algum problema ou degradaçao de performace se eu criar usuarios no
> postregres e a cada acesso dos usuarios eu utilizasse o usuario cadastrado
> no postegres para conexão?
> Seria a cada usuario com login e senha na aplicaçao seria uma string de
> conexao diferente.
> Sabem me dizer se existe problemas ou perda de desempenho no banco?
> Obrigado a todos!!!!
>
> Charles santos frança
>
>
> --
> Charles Santos França
> .Net Developer / Php Developer / Delphi Developer
> (79)9953-2183
> http://www.g-intec.com.br
>
> Temos uma aplicação, em Delphi, que faz justamente isso que você pretende
> fazer, sem nenhuma perda de performance. Dessa forma ganhamos em vários
> aspectos: Eliminamos o "usuário genérico", temos o controle efetivo do
> usuário (Log, permissões, senhas), economizamos em desenvolver algo
> realmente seguro, no que diz respeito a login e senha, já que o PG é
> excelente nesse aspecto, entre outros. Chegamos ao nível de o usuário ter
> permissão ou restrição de acesso (SELECT) e modificações (INSERT's,
> UPDATE's
> e DELETE's). Dessa forma, mesmo que um usuário mais ousado tente acessar o
> banco pelo PGAdmin ou PSQL, ele terá as mesmas permissões que teria pelo
> aplicativo, e será auditado (log) da mesma maneira.


Para uma aplicação Desktop eu concordo que é uma ótima jogada, já que seu
banco tem que ficar acessível de qualquer forma mesmo...

Outro ganho, que ninguém comentou, é o uso de grupos (AKA roles container),
que não é uma implementação tão simples via aplicação e o PostgreSQL já
traz prontinha.



> Vale ainda
> supervalorizar a vantagem de não precisar guardar as senhas dos usuários em
> alguma tabela.
>
Mesmo que alguém metido a hacker tenha acesso ao PG, ele não
> terá acesso as senhas dos usuários.


Aqui eu já discordo de você. Se autentica o usuário da aplicação com a
mesma do banco, ele simplesmente conseguirá conectar-se no banco, com muita
facilidade. E permitir que usuário comum conecte-se no banco, mesmo com
permissão restrita, é um risco muito grande.

Além disso, por que guardar a senha dos usuários em alguma tabela é um
problema? <sarcasmo> Ninguém no mundo guardaria a mesma sem criptografar,
isso é muito básico </sarcasmo>.

Mas é sério, é muito fácil:

INSERT INTO usuarios(login, senha) VALUES( v_login, md5(v_senha ||
v_login));

É exatamente como o PostgreSQL armazena as senhas de usuários internamente.
É até fácil verificar, por exemplo, se quisermos encontrar os usuários sem
noção que colocaram senha "1234":

SELECT rolname FROM pg_authid WHERE rolpassword =
'md5'||md5('1234'||rolname);

Veja, não estou discordando de usar aplicação e banco com mesmo usuários,
só não acho legal a senha do usuário ser "diretamente" a senha do banco
(talvez poderia até usar um hash dessa senha). Mas claro, isso pode ser
diferente dependendo do ambiente, em geral em ambientes controlados isso é
mais fácil de resolver.



> Dá um pouco mais de trabalho pra
> implementar, mas compensa o investimento.
>
> Att,
>
> Renato da Silva
> Analista/Programador
> Senda - Sistema de Engenharia de Dados
>
>
>

Atenciosamente,
-- 
Matheus de Oliveira
Analista de Banco de Dados
Dextra Sistemas - MPS.Br nível F!
www.dextra.com.br/postgres
_______________________________________________
pgbr-geral mailing list
[email protected]
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral

Responder a