Desde a versão do Oracle 9i Release 2 é possível criar usuários de proxy, permitindo-lhe acessar um esquema por meio de uma combinação de nome de usuário e senha diferente.
Vamos a um exemplo de como fazer isso:
Primeiro criamos um usuário padrão que será compartilhado para uso em nossa aplicação para utilizar o PROXY. Perceba que criamos a senha, pois nossa aplicação precisará se conectar de alguma forma. O que não sabemos é a senha do usuário que efetuará a conexão no banco de dados, no nosso caso o usuário PRODUCAO:
SQL> create user compartilhado identified by compartilhado; User created SQL> grant resource, connect, create session to compartilhado; Grant succeeded
O que precisamos é nos conectar com o usuário PRODUCAO, porém desconhecemos a sua senha. Assim iremos adicionar a grant de “CONNECT TROUGH” para o usuário COMPARTILHADO que acabamos de criar, o qual conhecemos a senha. Ele[COMPARTILHADO] irá fazer a ponte para o usuário PRODUCAO.
SQL> alter user producao grant connect through compartilhado; User altered
Agora a partir do usuário COMPARTILHADO podemos se conectar via proxy:
SQL> conn compartilhado[producao]/compartilhado; Connected to Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 Connected as compartilhado[producao] SQL> show user User is "compartilhado[producao]"
Vamos criar uma tabela para validar o procedimento e ver onde está sendo criada esta tabela:
SQL> create table teste_compartilhado (id number); Table created
Agora se consultarmos com um usuário sysdba veremos onde a tabela foi criada:
SQL> select owner, table_name 2 from dba_tables 3 where table_name = 'TESTE_COMPARTILHADO'; OWNER TABLE_NAME ------------------------------ ------------------------------ PRODUCAO TESTE_COMPARTILHADO
Se você quiser saber todos os proxys criados faça a consulta abaixo:
SQL> SELECT * FROM proxy_users; PROXY CLIENT AUTHENTICATION FLAGS ------------------------------ ------------------------------ -------------- ----------------------------------- COMPARTILHADO PRODUCAO NO PROXY MAY ACTIVATE ALL CLIENT ROLES
E para remover a permissão fazemos assim:
SQL> alter user PRODUCAO revoke connect through COMPARTILHADO; User altered SQL> SELECT * FROM proxy_users; PROXY CLIENT AUTHENTICATION FLAGS ------------------------------ ------------------------------ -------------- -----------------------------------
Abraços,
Ronaldo.
Nenhum comentário:
Postar um comentário