Boa chiappa, já usei em uma situação pra criar um job com um schema de
cliente sem saber a senha. Essa conexão ppr proxy é perigosa mesmo... hehehe
Em 19/03/2014 19:07, <jlchia...@yahoo.com.br> escreveu:

>
>
> Pessoal, para uma determinada atividade que precisei executar, eu tive a
> necessidade de conectar como um determinado usuário da Aplicação no banco ,
> usuário esse que desconhecia a senha, E um simples ALTER SESSION SET
> CURRENT_SCHEMA não funcionaria (princiopalmente por ter que executar stored
> PL/SQLs) : não é nada tão incomum, às vezes acontece...
>  Nesses casos o procedimento comum é conectar como DBA no banco, consultar
> a senha do usuário desejado criptografada na DBA_USERS (ou na USER$ se for
> banco 11g), pedir um ALTER USER nomedousuario IDENTIFIED BY
> senhatemporariaqualquer;  conectar no usuário desejado e imediatamente
> voltar a senha ao que estava antes com um ALTER USER nomedousuario
> IDENTIFIED BY VALUES ('stringdasenhacriptografada').
>
>  Essa técnica funciona desde sempre mas tem a desvantagem de, por uns
> segundos que seja, o usuário desejado ficar com a senha alterada, o que
> pode facilmente causar interrupção na aplicação, além de ser um tanto
> complexo de se fazer .  Hoje porém eu encontrei a referência em
> http://www.dbsnaps.com/oracle/connect-as-an-oracle-user-without-knowing-the-password/que
>  na versão 10g, que é o que temos aqui em produção (o recurso existe no
> sqlplus de 10gr2 em diante, iirc) o sqlplus já aceita conexão por proxy, aí
> botei a mão na consciência e me perguntei porque não usar o recurso, né ?
> Dãã pra mim... Então fiz assim :
>
> a. conectei no banco como SYSDBA
>
> b. temporariamente dei para um outro usuário que nós tinhamos a senha a
> permissão de conectar como se fosse o usuário desejado :
>
> SYS:AS SYSDBA:SQL>alter user USER_APLIC grant connect through
> USER_COM_SENHA_CONHECIDA;
>
> User altered.
>
> c. conectei num outra sqlplus como o usuário que temos a senha mas fazendo
> proxy no usuário realmente desejado :
>
> USER_COM_SENHA_CONHECIDA::SQL>conn
> USER_COM_SENHA_CONHECIDA[USER_APLIC]/senhaconhecida
> Connected.
>
> USER_APLIC::SQL>show user
>
> USER is "USER_APLIC"
>
> d. no sqlplus original removi do usuário que conhecemos a senha a
> permissão de conectar via proxy :
>
> SYS:AS SYSDBA:SQL>alter user USER_APLIC revoke connect through
> USER_COM_SENHA_CONHECIDA;
>
> User altered.
>
>
> e é isso... Achei mais simples de fazer e absolutamente não perturba a
> Aplicação nem o pool de conexões nem nada, fikadika ...
>
>  Abraços,
>
>   José Laurindo Chiappa
>
> OBS :
>
>   a. o link não fala, mas por segurança o RDBMS exige que o usuário com a
> senha já conhecida e que vai receber o GRANT ** não seja ** um usuário
> privilegiado, senão ele rejeita a operação com ORA-28150 :
>
> :@:SQL>conn system[userdestino]/senhadosystem
> ERROR:
> ORA-28150: proxy not authorized to connect as client
>
>   b. DE FORMA ALGUMA isso que eu disse é um hack, um 'segredo interno' :
> essa técnica está Plenamente Documentada nos manuais Oracle, então não
> temos por que não divulgar...
>
>   c. Falando sobre segurança, ela nos lembra o QUANTO é
> ultra-mega-poderoso o privilégio de ALTER USER, e o perigo que é dar esse
> privilégio para qualquer um que não é DBA... É um pouco parecido com o
> privilégio de ALTER SESSION, que muita gente pede e recebe sem pensar duas
> vezes mas que dá pra fazer muuuito estrago, principalmente ativando eventos
> na sessão....
>  
>

Responder a