[oracle_br] dúvida revoke

2014-06-13 Por tôpico 'Grupos' marcio_...@yahoo.com.br [oracle_br]
Boas.

 

Oracle 11.2.0.3.0

 

Pessoal, me surgiu uma dúvida básica sobre REVOKE de tabela.

 

Eu tenho um schema com privilégios só de DML, mas se a aplicação emitir um
comando DROP TABLE, o comando será executado com sucesso, já que o usuário é
proprietário da tabela, certo?

 

Se sim, como eu conseguiria bloquear essa instrução? Pensei em criar um
usuário de aplicação diferente do usuário de banco, assim eu concederia
permissão de DML nos objetos do usuário de banco de dados.

 

Grato.

 

Márcio 



Re: [oracle_br] dúvida revoke

2014-06-13 Por tôpico Fabio Prado fbifa...@gmail.com [oracle_br]
Márcio,

   Se o usuário é dono da tabela ele pode sempre apagá-la. Não conheço
outro modo mais fácil de impedir isso do que fazer exatamente o que vc
sugeriu (criar 2 usuários p/ cada aplicação). Na empresa em que trabalho as
aplicações tem sempre 2 usuários, 1 que é o dono da aplicação, e outro que
é o usuário da aplicação. Vc poderia criá-los da seguinte forma:

   - OWN_*
   Usuário dono da aplicação, onde vc cria as tabelas, sequências,
visões etc.

   - USR_*
   Usuário da aplicação, que tem privilégios CRUD nos objetos do ADM*.
Tem gente que cria os objetos PL/SQL da aplicação (packages, functions e
procedures) no schema do APL*, pois isso facilita a administração destes
objetos, que vira e mexe sofrem alterações pelos Desenvolvedores. Criar os
objetos PL/SQL no schema do ADM* aumenta a segurança, o contrário, facilita
a gerenciamento!

   Essa separação aumenta bastante a segurança da aplicação, pois ela se
conectará sempre com APL*, que tem privilégios restritos sobre os seus
objetos. Se a aplicação sofrer um SQL Injection, por exemplo, o hacker
não conseguirá ter poderes para, por exemplo, dropar os objetos! Há menos
de 2 anos atrás um ex-aluno me ligou pedindo suporte em SQL Server pq a
aplicação dele estava na Web, sofreu um SQL Injection e aconteceu
exatamente o que acabei de relatar: o hacker conseguiu dropar todas as
tabelas do sistema. O pior é que a empresa não tinha DBA e por isso nem
backup eles tinham! Os Desenvolvedores só tinham os scripts DDL dos objetos.


[]s


*Fábio Prado*
http://www.fabioprado.net/2014/01/oracle-ace-o-que-e-isso.html
www.fabioprado.net
Compartilhando conhecimentos e treinando profissionais em Bancos de Dados
Oracle



Em 13 de junho de 2014 15:35, 'Grupos' marcio_...@yahoo.com.br [oracle_br] 
oracle_br@yahoogrupos.com.br escreveu:



 Boas.



 Oracle 11.2.0.3.0



 Pessoal, me surgiu uma dúvida básica sobre REVOKE de tabela.



 Eu tenho um schema com privilégios só de DML, mas se a aplicação emitir um
 comando DROP TABLE, o comando será executado com sucesso, já que o usuário
 é proprietário da tabela, certo?



 Se sim, como eu conseguiria bloquear essa instrução? Pensei em criar um
 usuário de aplicação diferente do usuário de banco, assim eu concederia
 permissão de DML nos objetos do usuário de banco de dados.



 Grato.



 Márcio