Isolar Base de Dados
-
- Rank: Programador Sênior
- Mensagens: 54
- Registrado em: Sex, 27 Jan 2012 8:16 am
- Localização: Londres UK
Olá, pessoal. Estou desenvolvendo um trabalho sobre isolamento de base de dados, não sei se este é o nome correto. O que fiz foi o seguinte, criei uma aplicação, criei a sua base de dados com as tabelas, porém não conectei a aplicação nesta base de dados que possui as tabelas. Eu criei uma base intermediária que possui apenas procedures e funções, esta base intermediária conecta na aplicação e faz os insert, update, delete na base onde estão as tabelas. Assim, caso um invasor consiga acessar meu banco de dados via aplicação, ele não terá acesso à base onde estão armazenados os registros. Agora a minha pergunta, aonde eu encontro material que fale sobre este conceito de isolamento de base de dados? É este o nome correto, isolamento de base da dados? Agradeço qualquer ajuda! =)
- fbifabio
- Moderador
- Mensagens: 199
- Registrado em: Ter, 22 Fev 2011 1:51 pm
- Localização: São Paulo - SP
- Contato:
Fábio Prado
www.fabioprado.net
www.fabioprado.net
@djoq,
Não sei se entendi muito bem. você está criando 2 BDS? porque você resolveu fazer isso? Não vejo necessidade de coisa desse tipo, que ao meu ver, só tornaria a aplicação mais lenta. O BD possui muitos recursos de segurança que podem impedir o acesso aos registros. Um modo simples de implementar isso no mesmo BD, é criar 2 usuários, 1 dono das tabelas e outro pelo qual a aplicação se conecta. No schema deste segundo usuário você cria stored procedures para atualizar/acessar dados do outro schema, ok?
[]s
Não sei se entendi muito bem. você está criando 2 BDS? porque você resolveu fazer isso? Não vejo necessidade de coisa desse tipo, que ao meu ver, só tornaria a aplicação mais lenta. O BD possui muitos recursos de segurança que podem impedir o acesso aos registros. Um modo simples de implementar isso no mesmo BD, é criar 2 usuários, 1 dono das tabelas e outro pelo qual a aplicação se conecta. No schema deste segundo usuário você cria stored procedures para atualizar/acessar dados do outro schema, ok?
[]s
- adrianoturbo
- Moderador
- Mensagens: 393
- Registrado em: Qui, 20 Mar 2008 4:09 pm
- Localização: Brasília
Adriano Alves
---Para cada problema dificil existe uma solução simples.----
---Para cada problema dificil existe uma solução simples.----
Brother , não seria encapsulamento ou ocultamento de códigos em PL/SQL ? Tipo procedures , packages e packages bodies , se for esse caso tem um utilitário no Oracle chamado Wrapp que criptografa os códigos em PL/SQL.
Caso queira se aprofundar sobre o Wrapping , segue o link da Oracle que esclarece muito bem tudo isso:
[urlhttp://docs.oracle.com/cd/B28359_01/appdev.111/b28370/wrap.htm[/url]
Caso queira se aprofundar sobre o Wrapping , segue o link da Oracle que esclarece muito bem tudo isso:
[urlhttp://docs.oracle.com/cd/B28359_01/appdev.111/b28370/wrap.htm[/url]
- adrianoturbo
- Moderador
- Mensagens: 393
- Registrado em: Qui, 20 Mar 2008 4:09 pm
- Localização: Brasília
Adriano Alves
---Para cada problema dificil existe uma solução simples.----
---Para cada problema dificil existe uma solução simples.----
Hehe não é brother é sister , mil desculpas djoq
http://docs.oracle.com/cd/B28359_01/app ... 0/wrap.htm
http://docs.oracle.com/cd/B28359_01/app ... 0/wrap.htm
- stcoutinho
- Moderador
- Mensagens: 850
- Registrado em: Qua, 11 Mai 2011 5:15 pm
- Localização: são Paulo - SP
Olá djoq,
Acho que você pode proceder exatamente como o Fábio sugeriu.
Para isso você poderia criar os seguintes objetos (exemplo):
A) Usuário de nome "DJOQ", que seria o dono do schema de seu sistema. Nele você criará todos os objetos de banco de dados, incluindo suas procedures.
B) Usuário "DJOQUSER", que seria o usuário para sua aplicação irá apontar. Este usuário só terá permissão para executar as suas procedures/packages que farão todas as operações DML (SELECT-INSERT-DELETE-UPDATE)
C) Uma role de nome "DJOQ_ALL", que será atribuida para o usuário "DJOQUSER". Para esta role, você dará a permissão de EXECUTE de cada procedure/package que foram criadas no schema "DJOQ".
Exemplificando (você precisa pesquisar mais a fundo os comandos):
1) Criar o usuário : pesquise mais sobre o comando CREATE USER;
2) Criar o usuário :
3) Criar a role :
4) Atribuir ROLE para o usuario :
5) Criar uma tabela TB_USUARIO no schema DJOQ:
6) Criar uma package PKG_USUARIO no schema DJOQ, que fará todas as operações de SELECT-INSERT-DELETE-UPDATE na tabela TB_USUARIO :
7) Atribuir permissão desta package para a role :
Criar sinonimo privado para o usuário da aplicação :
Estes passos lhe permitirão isolar a aplicação, exatamente como os foristas lhe explicaram.
No meu caso, eu até costumno criar um terceiro usuário, com fins de auditoria/suporte (ex: DJOQAUDIT). Este usuário só consegue fazer SELECT (ou executar somente a procedure de SELECT) das tabelas do sistema, sendo adequado para equipes de suporte da aplicação.
Abraços,
Sergio Coutinho
Acho que você pode proceder exatamente como o Fábio sugeriu.
Para isso você poderia criar os seguintes objetos (exemplo):
A) Usuário de nome "DJOQ", que seria o dono do schema de seu sistema. Nele você criará todos os objetos de banco de dados, incluindo suas procedures.
B) Usuário "DJOQUSER", que seria o usuário para sua aplicação irá apontar. Este usuário só terá permissão para executar as suas procedures/packages que farão todas as operações DML (SELECT-INSERT-DELETE-UPDATE)
C) Uma role de nome "DJOQ_ALL", que será atribuida para o usuário "DJOQUSER". Para esta role, você dará a permissão de EXECUTE de cada procedure/package que foram criadas no schema "DJOQ".
Exemplificando (você precisa pesquisar mais a fundo os comandos):
1) Criar o usuário : pesquise mais sobre o comando CREATE USER;
CREATE USER DJOQ IDENTIFIED BY DJOQ ...;
2) Criar o usuário :
CREATE USER DJOQUSER IDENTIFIED BY DJOQUSER ..;
3) Criar a role :
CREATE ROLE DJOQ_ALL;
GRANT DJOQ_ALL TO DJOQUSER;
CREATE TABLE TB_USUARIO ..;
CREATE OR REPLACE PACKAGE PKG_USUARIO ... END PGK_USUARIO; CREATE OR REPLACE PACKAGE BODY PKG_USUARIO ... END PGK_USUARIO;
GRANT ALL ON PKG_USUARIO TO DJOQ_ALL;
CREATE OR REPLACE SYNONYM DJOQUSER.PKG_USUARIO FOR DJOQ.PKG_USUARIO;
No meu caso, eu até costumno criar um terceiro usuário, com fins de auditoria/suporte (ex: DJOQAUDIT). Este usuário só consegue fazer SELECT (ou executar somente a procedure de SELECT) das tabelas do sistema, sendo adequado para equipes de suporte da aplicação.
Abraços,
Sergio Coutinho
-
- Informação
-
Quem está online
Usuários navegando neste fórum: Nenhum usuário registrado e 17 visitantes