sexta-feira, 17 de fevereiro de 2012

Mudança no comportamento das roles "default"

Até a versão 10.2.0.4 do Oracle Database, era possível o seguinte cenário: 
_
Uma determinada role "ROLE_XX", embora protegida por senha, era ativada automaticamente para usuários que a têm como role default. 
_
Em outras palavras: se foi dado apenas o grant da role para o usuário SCOTT ("grant ROLE_XX to SCOTT") e a role é protegida por senha, então SCOTT precisava rodar o seguinte comando para ter os privilégios dados pela role:
_
set role ROLE_XX identified by SENHA_DA_ROLE_XX;
_
Entretanto, se a role foi também associada como "role default" ("alter user SCOTT default role ROLE_XX"), não havia necessidade do "set role". Ao efetuar o login, SCOTT já ganhava os privilégios da role, mesmo sem saber a senha.
_
Isso mudou na versão 10.2.0.5 e posteriores. Mesmo roles associadas como "default" precisam do comando "set role" com a senha correta para serem ativadas.
_
É importante notar que a Oracle considerou o comportamento anterior um "bug" de segurança, portanto não disponibilizou nenhum parâmetro ou "workaround". Aplicações que se beneficiavam das roles default para, por exemplo, dar privilégios a um usuário de execução de processos batch, simplesmente param de funcionar.
_
O documento oficial sobre a mudança pode ser encontrado no documento número 745407.1 do Suporte Oracle.

Nenhum comentário:

Postar um comentário