Criar base Oracle segura para Aplicação Web/PHP

DBA Geral (instalação, configuração do banco, scripts do Sql*Plus, shell scripts, batch scripts, etc...)
Responder
arleimc
Rank: Estagiário Pleno
Rank: Estagiário Pleno
Mensagens: 6
Registrado em: Qua, 13 Ago 2008 3:19 pm
Localização: Criciuma - SC

Olá, boa tarde!

Preciso montar uma base para que aplicações web/php possam realizar transações, consultas, em nosso banco oracle 11g. A pergunta que surgiu é a seguinte:

- Posso apenas criar um novo owner com as tabelas que as aplicações irão utilizar, sem grant para a base oficial, permitindo apenas insert, select e delete nesta base auxiliar e meu sistema já estará 100% seguro? A ideia é inserir os dados das aplicações web nesta base auxiliar e depois, processos JOB da base oficial iriam buscar os dados nesta base da web, ou seja, apenas a base quente terá permissões de leitura e escrita nesta base auxiliar/web.

Essa minha ideia é válida? Ou existem formas ainda mais seguras para realizar esta tarefa?

Aguardo suas opiniões.

Att,
Arlei Cardoso
Avatar do usuário
stcoutinho
Moderador
Moderador
Mensagens: 850
Registrado em: Qua, 11 Mai 2011 5:15 pm
Localização: são Paulo - SP

Arlei,

Eu diria que o ORACLE lhe permite criar ambientes estanques dentro de uma instância.

Para isso:

- Crie um schema para conter os dados de sua base auxiliar (ex: AUXDB);
- Crie os objetos da base auxiliar neste schema;
- Sua aplicação WEB deverá acessar somente este schema;
- Crie um schema para a base oficial (ex:OFIDB);
- Crie os objetos oficiais nesta base oficial;
- Conectado como o usuário do schema auxiliar (AUXDB), fornecer grants de acesso das tabelas da base auxiliar
para o schema oficial (OFIDB);
- Criar sinomimos privados no schema oficial para os objetos de banco que serão acessados na base auxiliar. Com
isso, uma tabela A do schema AUXDB pode ser acessada por OFIDB sem mencionar o owner (ex: SELECT * FROM
AUXDB.A);

Na teoria - e falando de forma grosseira - isso já te permitiria criar um ambiente "seguro" para sua aplicação. O correto seria criar mais usuários (ex: AUXDB_APLIC, OFIDB_APLIC) para somente acessar os objetos dos schemas originais (ex: AUXDB, OFIDB). Mas lembre que nenhum sistema será muito seguro se os usuários souberem as senhas dos schemas e colocarem a mão na manutenção dos dados.

Só finalizando, pesquise um pouco mais sobre USERS, ROLES, GRANTS, SYNONYMS, para entender como blindar o seu ambiente de forma mais segura.

Abraços e boa sorte,

Sergio Coutinho
arleimc
Rank: Estagiário Pleno
Rank: Estagiário Pleno
Mensagens: 6
Registrado em: Qua, 13 Ago 2008 3:19 pm
Localização: Criciuma - SC

Olá Sergio Coutinho.

Muito obrigado por sua resposta e dicas. Vou analisar esta opção que parece ser muito interessante. Também estamos vendo a possibilidade de instalar um banco específico para as transações web. Penso que ficaria ainda mais seguro, caso um bug Oracle por exemplo consiga permitir acesso full à qualquer usuário da base estaríamos ainda mais seguros, visto que nesta base não teria nenhuma informação oficial.

Abraço,
Arlei Cardoso
Avatar do usuário
stcoutinho
Moderador
Moderador
Mensagens: 850
Registrado em: Qua, 11 Mai 2011 5:15 pm
Localização: são Paulo - SP

Arlei,

Se pesquisar na documentação da ORACLE, existem uma série de manuais ou checklists que permitirão criar uma base de dados mais segura:

Exemplos:

http://www.oracle.com/technetwork/datab ... 132870.pdf
http://www.oracle.com/technetwork/datab ... 133102.pdf

Abraços e boa sorte,

Sergio Coutinho
arleimc
Rank: Estagiário Pleno
Rank: Estagiário Pleno
Mensagens: 6
Registrado em: Qua, 13 Ago 2008 3:19 pm
Localização: Criciuma - SC

Muito obrigado pelos manuais Oracle, Sergio. Excelente conteúdo!

Grato,
Arlei
Responder
  • Informação
  • Quem está online

    Usuários navegando neste fórum: Nenhum usuário registrado e 15 visitantes