Como dar permissão para criar objetos em outro owner?

DBA Geral (instalação, configuração do banco, scripts do Sql*Plus, shell scripts, batch scripts, etc...)
Responder
carlosdev
Rank: Estagiário Sênior
Rank: Estagiário Sênior
Mensagens: 9
Registrado em: Ter, 06 Abr 2010 4:55 pm
Localização: SP

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
Avatar do usuário
stcoutinho
Moderador
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 :

Selecionar tudo

GRANT SELECT ON XPTO_OWN.TABELA_XPTO TO XPTO_DEV WITH GRANT OPTION;
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: 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 :

Selecionar tudo

CREATE OR REPLACE SYNONYM XPTO_DEV.TABELA_XPTO FOR XPTO_OWN.TABELA_XPTO;
Responder
  • Informação
  • Quem está online

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