Anderson... o que o Chiappa falou está 100% correto. Quando tudo está indo bem, surge algum diretor com idéias mirabolantes, aí todo o software acaba tendo que ser reescrito (e o pior é que a manutenção nunca acaba). Eu também li sobre o VPD, e que considero ser a opção mais fácil de implementar e utilizar, porém essa opção só vem com o banco enterprise :-( Por outro lado, deve-se levar em consideração que as aplicações atuais que utilizam todo aquele esquema de orientação à objetos vem a dar uma grande ajuda à esse problema (que acredito eu muitos desenvolvedores possuem esse problema) Uma solução que vi ser utilizada é: Os desenvolvedores compilam dois módulos esatamente iguais, porém impõem parâmetros para esses módulos, os quais restringem os dados. Mas o problema é: se eu tiver 950 telas no sistema, e tiver que impor regras à algumas isso vai crescre exponencialmente, sem contar que a manutenção vai ficar complicada. Estou pensando/montando algo que seja fácil de utilizar e simples de atualizar. Quando estiver mais completo envio para vocês, assim poderemos trocar idéias sobre isso. Obrigado pela ajuda. --- Em oracle_br@yahoogrupos.com.br, Anderson Haertel Rodrigues <[EMAIL PROTECTED]> escreveu > > No projet atual que estamos desenvolvendo iremos > implementar algo neste sentido pela aplicação. Mas, as > regras são muitos dinâmicas (umas 12 regras de > visualizações, que em momento podem virar 13,14...cair > para 11, etc). > > Uma solução interessante que vi/li também é Label > Security - um built do VPD citado pelo Chiappa. > > --- jlchiappa <[EMAIL PROTECTED]> escreveu: > > > Paulo, eu discordo de se colocar segurança de acesso > > na aplicação, > > pelo seguinte : por mais que os usuários finais > > jurem de pé junto que > > a aplicação atual é suficiente, que os gerentes > > assinem embaixo que > > os dados TEM que estar "trancados", acessíveis só > > pela aplicação, > > CEDO ou TARDE vai sim chegar uma hora em que > > > > a) a aplicação não atende mais e vai ter que ser > > re-escrita, talvez > > até em outra linguagem/tool > > > > e/ou > > > > b) os dados terão que ser acessados/manipulados por > > outra > > aplicação/outras fontes. > > > > Aí se acontecer a), ** todas ** a segurança que vc > > escreveu terá que > > ser re-escrita (talvez re-aproveitando-se um pouco > > do código, mas às > > vezes não), e se acontecer b) , ao invés da outra > > fonte acessar > > diretamente os dados vc VAI ter que escrever alguma > > interface pra > > ela, mais e mais trabalho, e nem sempre é possível - > > aqui mesmo no > > cliente atual, temos uma aplicação que tinha regras > > de acesso > > codificadas, era escrito de pedra e cal que ninguém > > podia acessar os > > dados fora dela, um belo dia algum diretor > > casca-grossa cismou que > > tinha porque tinha que ter acesso a esses dados via > > tool front-end X, > > QUEBROU TUDO, é isso... E pra piorar X só tinha > > acesso à dados via > > SQL e retsrições do tipo, então NÃO tinha como > > montarmos uma API de > > acesso, basicamente o que vai ser feito é ter-se um > > OUTRO banco com > > esses dados.... Numa palavra, segurança fora do > > banco é uma furada, > > é uma bomba q cedo ou tarde vai explodir na cara de > > alguém, IMHO. Em > > verdade, o que eu vejo cada vez mais é que as > > aplicações tem um ciclo > > cada vez mais curto, PORÉM os dados permanecem, > > então penso ser > > razoável deixar as regras de acesso junto com os > > dados, são itens > > indissociáveis IMHO... > > > > Edson, ** facílimo ** de tudo vc ter essa segurança > > de acesso no > > banco : a opção mais simples é vc ao invés de dar > > GRANTs direto da > > tabela, vc ter uma VIEW que só busque os dados a que > > o cara tem > > direito, e vc dá os GRANTs apropriados da view pros > > usuários finais, > > tipo : > > > > CREATE VIEW V_CLIENTES as SELECT * FROM CLIENTES > > WHERE COD_EMPRESA > > = :valordaempresa; > > > > onde esse :valordaempresa pode ser uma var global, > > um context, uma > > sub-query numa tabelinha oculta, qquer coisa do > > tipo. > > > > Uma outra opção boa seria o VPD (Virtual Private > > Database), com ela > > o banco automaticamente adiciona as regras que vc > > especificar nos > > SQLs que receber, daí automaticamente um comando > > tipo : > > > > SELECT nnn FROM CLIENTES WHERE campo=X; > > > > ia ser transformado em : > > > > SELECT nnn FROM CLIENTES WHERE campo=X and > > COD_EMPRESA = nnn; > > > > ==> Óbvio, ambas as opções podem interferir em > > performance SE não > > forem bem-planejadas e testadas, mas isso é default > > de > > desenvolvimento, qquer coisa que vc for fazer SEMPRE > > tem que ter uma > > fase adequada de teste e planejamento... > > > > []s > > > > Chiappa > > Anderson Haertel Rodrigues > Administrador de Banco de Dados - DBA > Florianópolis/SC > > > > _______________________________________________________ > Yahoo! Acesso Grátis - Internet rápida e grátis. Instale o discador agora! > http://br.acesso.yahoo.com >
-------------------------------------------------------------------------------------------------------------------------- Atenção! As mensagens deste grupo são de acesso público e de inteira responsabilidade de seus remetentes. Acesse: http://www.mail-archive.com/oracle_br@yahoogrupos.com.br/ --------------------------------------------------------------------------------------------------------------------------__________________________________________________________________ Moderador e Fundador: Dorian Anderson Soutto [EMAIL PROTECTED] __________________________________________________________________ Links do Yahoo! Grupos <*> Para visitar o site do seu grupo na web, acesse: http://br.groups.yahoo.com/group/oracle_br/ <*> Para sair deste grupo, envie um e-mail para: [EMAIL PROTECTED] <*> O uso que você faz do Yahoo! Grupos está sujeito aos: http://br.yahoo.com/info/utos.html