Oracle Database - Password Rollover Time

 Olá  pessoal, nesse post vou mostrar uma funcionalidade nova no que tange a gerenciamento de usuários e senhas no Banco de dados Oracle que está disponível a partir da versão 21c. Esse recurso foi backportado para o Oracle 19c na atualização de versão 19.12.


Explicando melhor o Password Rollover Time, se trata de um a configuração feita no profile do banco onde podemos configurar um tempo em dias (limite de 60 dias) onde será possível usar tanto a senha antiga quanto a senha nova para se conectar no banco de dados. Na prática essa nova funcionalidade foi desenvolvida pensando nas alterações de senha com mínimo impacto possível, sobre tudo para ambientes produtivos e senhas de usuário de aplicação onde temos vários pontos para alterar a senha e podem ocorrer falhas de acesso em aplicações críticas, dessa forma configurando o parâmetro PASSWORD_ROLLOVER_TIME temos um período maior para realizar as devidas alterações de senhas em todos os pontos necessários sem a necessidade de perda de conexões e com impacto mínimo para a operação.

Dessa forma, vamos demostrar na prática como essa nova configuração funciona.


Pré-requisitos - Versão do banco 19.12c ou Posterior:








1- Criação de usuário TESTUSER1


conn sys/SysPassword1@//localhost:1521/pdb1 as sysdba

--drop user testuser1 cascade;

create user testuser1 identified by testuser1 quota unlimited on users;
grant connect, resource to testuser1;






2- Criação de um profile 

Criamos o profile definindo o limite para 1 dia, e associamos o usuário de teste a esse perfil.

-- drop profile pw_rollover_time_prof;

create profile pw_rollover_time_prof limit
  password_rollover_time 1;

alter user testuser1 profile pw_rollover_time_prof;



Também podemos alterar o limite de um perfil existente usando o comando. No exemplo a seguir, definimos para 1,5 dias.

alter profile pw_rollover_time_prof limit
  password_rollover_time 1.5;

OBS: O valor mínimo é de uma hora (24/1), e o tempo máximo é de 60 dias


3- Como o parâmetro PASSWORD_ROLLOVER_TIME funciona ?

Com o parâmetro configurado no profile, e o user associado ao profile, podemos agora alterar a senha do user e testar o acesso tanto com a senha antiga e a senha nova:

Conectando com o user e trocando a senha:

conn testuser1/testuser1@//localhost:1521/pdb1

alter user testuser1 identified by newpasswd1;







Validando o acesso: 

Nos próximos 1,5 dias podemos nos conectar usando tanto a senha antiga quanto a nova.

conn testuser1/testuser1@//localhost:1521/pdb1
Connected.
SQL>

conn testuser1/newpasswd1@//localhost:1521/pdb1
Connected.
SQL>








Como identificar um usuário com esse parâmetro ativado ?

Podemos identificar usuário com a opção de password rollover ativo pelo seu status na tabela DBA_USERS, na coluna ACCOUNT_STATUS = OPEN & IN ROLLOVER.


select account_status,
       to_char(password_change_date, 'dd-mon-yyyy hh24:mi:ss') as password_change_date
from   dba_users
where  username = 'TESTUSER1';



O valor do limite está disponível na dba_profiles, como qualquer outro limite de profile:

column resource_name format a25
column limit format a10

select resource_name,
       limit
from   dba_profiles
where  profile = 'PW_ROLLOVER_TIME_PROF'
and    resource_name = 'PASSWORD_ROLLOVER_TIME';











4- Como desabilitar o Password Rollover

Definir o limite PASSWORD_ROLLOVER_TIME para 0 desativa a rotação gradual de senhas. No exemplo a seguir, definimos o limite para zero e recebemos erro ao conectar ao usuário de teste com a senha antiga.

conn sys/SysPassword1@//localhost:1521/pdb1 as sysdba

alter profile pw_rollover_time_prof limit password_rollover_time 0;








Apenas a nova senha é aceita agora:



 

IMPORTANTE

Caso a senha antiga seja comprometida e seja necessário desabilitar o rollover para evitar acessos usando a senha antiga mas queremos reabilitar o rollover gradual para futuras mudanças de senha, precisamos garantir que tenhamos ao menos uma tentativa de login entre desabilitar e habilitar o rollover:








Como podemos ver acima, eu alterei o valor do parâmetro para "0" , logo após realizei um teste com o user antigo e o novo, após isso eu alterei novamente o valor do parâmetro para "1.5", alterei a senha do user e após isso o rollover foi ativo novamente.


Conclusão:

  • Como configurar o Password Rollover Time
  • Como desativar Password Rollover Time
  • Como gerenciar usuários em bancos de Dados Oracle
  • Como gerenciar profiles 

Material de apoio:


Por hoje é isso pessoal, espero que esse conteúdo ajude de alguma forma e caso tenham alguma dúvida podem deixar aqui nos comentários ou me mandar via E-mail com Título da postagem, meu E-mail para envio de dúvidas e sugestões de novas postagens: pedrohvido@gmail.com.


Vejo vocês no próximo post!!











Comentários

Postagens mais visitadas deste blog

Instalando Oracle Database 19c em um Oracle Linux 8.8 no Virtual Box - PARTE 2

Temporary Tablespace : Identificando consultas consumindo uma Tablespace Temporária

SQL - Calculando crescimento do Banco de dados Oracle