Olá pessoal,
Hoje na empresa temos 2 usuários para cada sistema.
-XPTO_OWN = Usuário provedor de dados e objetos: packages, sequences, views, triggers, procedures, tabelas e índices
-XPTO_APP = Usuário de aplicação – consumidor de dados e objetos do usuário XPTO_OWN através de grant. A aplicação se conectará com este usuário.
É possível criar outro usuário XPTO_DEV e dar permissão para este criar determinados tipos de objetos (packages, sequences, views e procedures) em outro owner? Ex: XPTO_OWN
Obs: O usuário XPTO_DEV não poderá ter permissão de criação de objetos a outros owners que não seja o XPTO_OWN.
Queremos o controle das tabelas mas queremos dar liberdade aos desenvolvedores criarem packages e procedures.
Obrigado,
Carlos Araujo
Como dar permissão para criar objetos em outro owner?
- stcoutinho
- Moderador
- Mensagens: 850
- Registrado em: Qua, 11 Mai 2011 5:15 pm
- Localização: são Paulo - SP
Ola CarlosDev,
Posso não estar dando a resposta completa, mas acho que você precisa fazer o seguinte:
A) Solução por GRANT/SINONIMO PRIVADO
- Identifique todos os objetos de XPTO_OWN que suas procedures deverão acessar em operações DML (INS/UPD/DEL/SEL);
- Como XPTO_OWN, atribua as permissões necessarias com a opção GRANT OPTION
Exemplo :
Se eventualmente após o desenvolvimento, o objetivo seja compilar estes objetos em XPTO_OWN, seria recomendável você criar sinônimos privados em XPTO_DEV para não precisar ficar mencionando o XPTO_OWN em seu código PL/SQL
B) Solução por TRIGGER DE BANCO DE DADOS
- Você pode criar (dentro de um usuário administrador de seu uso exclusivo, ex: XPTO_DBA) uma TRIGGER DE BLOQUEIO DDL, para impedir operações DDL no schema XPTO_OWN (ALTER/DROP/CREATE);
- Esta trigger deve apresentar uma lógica, para só permita operações DDL envolvendo estes objetos:
- Com esta opção, você simplifica em muito sua administração, pois não precisará ficar criando continuamente GRANTS e SINONIMOS PRIVADOS. E desconfio que seus desenvolvedores terão mais facilidade para debugar o código PL/SQL com ferramentas como SQL DEVELOPER;
- O único cuidado nesta situação seria que os desenvolvedores jamais tivesse acesso ou permissão para desativar esta trigger de bloqueio DDL.
- No forum você encontra maiores informações sobre estas triggers.
Boa sorte,
Sergio Coutinho
Exemplo :
Posso não estar dando a resposta completa, mas acho que você precisa fazer o seguinte:
A) Solução por GRANT/SINONIMO PRIVADO
- Identifique todos os objetos de XPTO_OWN que suas procedures deverão acessar em operações DML (INS/UPD/DEL/SEL);
- Como XPTO_OWN, atribua as permissões necessarias com a opção GRANT OPTION
Exemplo :
GRANT SELECT ON XPTO_OWN.TABELA_XPTO TO XPTO_DEV WITH GRANT OPTION;
B) Solução por TRIGGER DE BANCO DE DADOS
- Você pode criar (dentro de um usuário administrador de seu uso exclusivo, ex: XPTO_DBA) uma TRIGGER DE BLOQUEIO DDL, para impedir operações DDL no schema XPTO_OWN (ALTER/DROP/CREATE);
- Esta trigger deve apresentar uma lógica, para só permita operações DDL envolvendo estes objetos:
FUNCTION,JAVA CLASS,PACKAGE,PACKAGE BODY,PROCEDURE,TRIGGER,VIEW.
- Com esta opção, você simplifica em muito sua administração, pois não precisará ficar criando continuamente GRANTS e SINONIMOS PRIVADOS. E desconfio que seus desenvolvedores terão mais facilidade para debugar o código PL/SQL com ferramentas como SQL DEVELOPER;
- O único cuidado nesta situação seria que os desenvolvedores jamais tivesse acesso ou permissão para desativar esta trigger de bloqueio DDL.
- No forum você encontra maiores informações sobre estas triggers.
Boa sorte,
Sergio Coutinho
Exemplo :
CREATE OR REPLACE SYNONYM XPTO_DEV.TABELA_XPTO FOR XPTO_OWN.TABELA_XPTO;
-
- Informação
-
Quem está online
Usuários navegando neste fórum: Nenhum usuário registrado e 12 visitantes