você está aqui: Home → Colunistas → Bancos de Dados Livres
Por Luiz Paulo de Oliveira Santos
Data de Publicação: 29 de Novembro de 2006
Ola, discutiremos hoje, na primeira dica, um assunto que muitos desenvolvedores se esquecem de implementar, o controle de acesso de usuários ao banco. Aplicações que somente implementam consultas muitas vezes utilizam usuários com plenos poderes de atualização, e isso é uma falha grave de segurança.
Portanto o controle de direitos é fundamental, e feito através de duas instruções: GRANT e REVOKE. Hoje estaremos
GRANT lista de privilégios ON [Tabela] TO usuários
Onde:
lista de privilégios: pode ser todos os privilégios ALL [PRIVILEGES] ou alguns separados por vírgula, como: SELECT, INSERT, UPDATE ou DELETE.
usuários: pode ser PUBLIC (todos) ou o nomes dos usuários que deseja atrubuir o direito. Utiliza-se vírgula para separar o nome dos usuários que se deseja atribuir acesso.
Através dessa instrução fazemos concessões de acesso ao banco de dados, ou seja, disponibilizamos o(s) direito(s) para que usuários possam ter os seguintes acessos:
Nota importante: Excepcionalmente cito REFERENCES, pois alguns SQLs permitem atribuir direito de REFERENCES a qualquer usuário do banco, outros SQLs entendem que REFERENCES é um direito exclusivo do administrador de banco de dados que criou as tabelas.
E tanto para o UPDATE como para o REFERENCES se o(s) campo(s) for(em) omitido(s) a regra se aplicará a todos os campos.
Também é interessante citar que quando aplicamos um GRANT para PUBLIC (usuários), estamos disponibilizando os direitos até para usuários que vierem a ser cadastrados, portanto cuidado ao usar PUBLIC.
GRANT SELECT ON CLIENTES TO PUBLIC GRANT SELECT,INSERT ON PESSOAS TO JOSE,PEDRO GRANT UPDATE(SALARIO) ON FOLPAGTO TO ANAMARIA
Podemos também extender os direitos de um usuário a outro(s), ou seja, passar os direitos de um usuário para outro.
O usuário que criou um objeto pode conceder o privilégio do que criou a outros. Para fazer isso deve utilizar a clausula WITH GRANT OPTION no final da chamada do GRANT.
GRANT ALL ON TABPESSOAS TO LARA WITH GRANT OPTION
Desta forma, a usuária LARA recebeu todos os direitos sobre a tabela PESSOA, inclusive os direitos de retransmití-lo a outros usuários.
Também podemos atribuir direitos de execução de procedures para usuários, mas somente se o banco permitir tal operação. Observe o exemplo adiante:
GRANT EXECUTE ON PROCEDURE SOMATUDO TO ANA,JOSE
Então, GRANT deve ser usado para aumentar o acesso às informações de um banco de dados. Há um exemplo bem legal de como proteger bancos de dados Firebird com GRANT. Foi escrito por Linfomar F. da Cruz. Acessem e vejam que legal.
Porém muito cuidado ao atribuir um direito e mais cuidado ainda no momento de remover um direito, mas isso faremos na próxima dica.
Diferenças de sintaxe ou opções entre bancos é comum, consulte o manual do seu SQL antes.
Continuaremos na próxima dica com REVOKE. Até mais.
Luiz Paulo de Oliveira Santos teve seu primeiro contato com computadores em 1984, estudou BASIC para equipamentos de 8 bits (ZX-81 e Apple 2), em 1985 com o ambiente de 16 bits, e em 1988 com o ambiente de 32 bits. Em 1993 foi um dos primeiros Brasileiros a ter contato com o VBK que em 1995 se tornou o Delphi. Graduou em Tecnologia Em Processamento de Dados, cursou especialização em Análise de Sistemas e atualmente é graduando em Ciências Jurídicas. Atua como analista de suporte de redes da Universidade Metodista de Piracicaba, é editor da revista DB Freemagazine (uma revista gratuíta focada exclusivamente para bancos de dados Cliente/Servidor) e professor nas Faculdades Integradas Einstein de Limeira no curso de Tecnologia em Sistemas de Informação. Tem experiência nas áreas: Sistemas de Computação, Redes e Teleprocessamento de Dados, Bancos de Dados cliente-servidor e SQL. É autor do livro Firebird - Dicas de Segurança, publicado pela Editora Ciência Moderna.