sexta-feira, 23 de outubro de 2015

Protheus e o GRANT de DBA

Protheus e o GRANT de DBA no Oracle

Obs: Faça por conta e risco e em base de testes

Uma das grandes reclamações de empresas é sobre a segurança com o banco de dados. Tenho visto que muitos DBAs, não aceitam que o Protheus precise ter o grant de DBA para poder funcionar corretamente. Sinceramente concordo com isso.
Pessoalmente não gosto de dar todo esse poder, não que ache o Protheus não é confiável, mas, como muitas consultorias e pessoas acabam tendo acesso ao Protheus, é prudente limitar.
Estou em fase de transição de carreira de Analista de Sistemas para DBA Oracle/Sql Server, como trabalho com os dois mundos Protheus e Oracle, procurei uma forma de dar esse acesso sem parar o Protheus.
O teste será feito da seguinte forma :
Versão do DbAcess 4.2 Build 20141119 64 bits
Versão do Oracle 11.2.0.3

Vou deixar o serviço do DBACCESS no modo console para podermos visualizar tudo o que esta ocorrendo.

Subindo o serviço do Dbaccess




Concedendo as permissões

OBS: Recomendo executar este procedimento por um DBA

Caso já tenha concedido o acesso de DBA, faça o revoke

SQL> REVOKE DBA FROM NOME_SCHEMA;


Conceda as permissões, pode ser que o Protheus reclame de outras, se ocorrer, verifique no log do Dbaccess.


Testando a conexão

Note que ocorreu o erro Ambiente, Usuário ou Senha inválido.



O usuário, senha e ambientes não estão inválidos, a resposta do Protheus esta incorreta. Esta é uma mensagem genérica.

Vamos analisar o log do DBACCESS com mais detalhe :



Observando o log de erro acima, o Protheus tentou fazer um select na schema SYS na tabela OBJ$, mas o usuário não tem esse acesso.

O que o Protheus realmente precisa, é acessar as views de dicionário de dados.

Com isso, se der o grant de DBA, o usuário do Protheus consegue ler o conteúdo desta tabela.

Mas é justamente o que não queremos, então vamos dar acesso de leitura com o comando abaixo :



Ok, feito isso, vamos testar novamente


Pronto, revogamos o grant de DBA e o Protheus consegue se conectar.

Mas ainda não acabou..... O grant acima, foi somente para conexão com a base.

Ao tentar acessar o Protheus, os erros continuam....

Vamos dar mais permissões :

GRANT SELECT ON SYS.COLS$ TO NOME_SCHEMA;
GRANT SELECT ON SYS.OBJ$ TO NOME_SCHEMA;
GRANT SELECT ON SYS.ICOL$ TO NOME_SCHEMA;
GRANT SELECT ON V_$SESSION TO NOME_SCHEMA;
GRANT SELECT ON SYS.IND$ TO NOME_SCHEMA;


A permissão V_$SESSION é feita devido ao Protheus tentar dar select na V$SESSION que na verdade é um sinônimo.

Após tudo isso, fiz os seguintes testes no Protheus :
  • Atualizei o TSS -> Sem erros
  • Rodei os compatibilizadores do Protheus -> Sem erros
  • Criei tabela, indices, campos através do SIGACFG -> Sem erros


Se você gostou, clique nos links patrocinados. Obrigado !!!

Nenhum comentário:

Postar um comentário