Administrar trocas de senha apresenta desafios, especialmente em sistemas críticos que dependem de credenciais periodicamente atualizadas. O Oracle Database oferece uma solução com o parâmetro PASSWORD_ROLLOVER_TIME
, que mantém a senha antiga válida por um período específico após sua alteração. Esse recurso, introduzido inicialmente no Oracle 21c e disponível a partir da atualização 19.12 no Oracle 19c, facilita a transição. Neste post, veja como configurar e testar o PASSWORD_ROLLOVER_TIME
com os comandos ALTER USER
e ALTER PROFILE
.
Caso Real
Um cliente precisou implementar uma política de troca de senhas para usuários aplicacionais em um ambiente Oracle, mas encontrou dificuldades: com múltiplos pontos de acesso, mudar a senha em todos ao mesmo tempo significaria uma interrupção nos serviços. A saída foi usar o PASSWORD_ROLLOVER_TIME
. Esse recurso permitiu ao cliente trocar as senhas sem gerar indisponibilidade, mantendo a senha antiga válida por um período e possibilitando a atualização gradual dos pontos de acesso.
Passo a Passo para Testes
1. Criação do Ambiente de Teste
Vamos criar um perfil chamado PERFIL_DA_VILA
e alguns usuários que farão parte desse perfil:
CREATE PROFILE PERFIL_DA_VILA LIMIT PASSWORD_ROLLOVER_TIME 1D;
CREATE USER chaves IDENTIFIED BY senha123 PROFILE PERFIL_DA_VILA;
CREATE USER kiko IDENTIFIED BY senha123 PROFILE PERFIL_DA_VILA;
CREATE USER chiquinha IDENTIFIED BY senha123 PROFILE PERFIL_DA_VILA;
GRANT CREATE SESSION TO chaves;
GRANT CREATE SESSION TO kiko;
GRANT CREATE SESSION TO chiquinha;
O perfil PERFIL_DA_VILA
está configurado para permitir que os usuários utilizem suas senhas antigas por 1 dia após a mudança.
2. Alterando o Perfil com ALTER PROFILE
Se necessário, podemos ajustar o período de rollover para todo o perfil PERFIL_DA_VILA
utilizando o comando ALTER PROFILE
:
ALTER PROFILE PERFIL_DA_VILA LIMIT PASSWORD_ROLLOVER_TIME 6H;
Isso ajusta o tempo de rollover para todos os usuários associados ao perfil.
3. Verificando a Aplicação do PASSWORD_ROLLOVER_TIME
Após a alteração do perfil, altere a senha de um dos usuários e teste se o PASSWORD_ROLLOVER_TIME
está funcionando conforme esperado:
-- Teste o login com a senha antiga e nova
ALTER USER chaves IDENTIFIED BY nova_senha;
--#Senha Anterior Deve funcionar por 6 horas
sqlplus chaves/senha123@pdb
--#Nova Senha Deve funcionar imediatamente
sqlplus chaves/nova_senha@pdb

Comando 01: Este comando altera a senha do usuário chaves para nova_senha. É utilizado para atualizar a senha do usuário dentro do banco de dados Oracle.
Comando 02: Este comando tenta realizar login no banco de dados pdb
usando o usuário chaves
com a senha antiga (senha123
). Ele deve funcionar por um período de rollover definido pelo perfil.
Comando 03: Este comando tenta realizar login no banco de dados pdb
usando o usuário chaves
com a nova senha (nova_senha
). O login deve ser bem-sucedido imediatamente após a alteração da senha.
4. Compatibilidade
- Oracle 19c: Disponível a partir da atualização 19.12.
- Oracle 21c: Introdução inicial do recurso
PASSWORD_ROLLOVER_TIME
.
5. Exclusão dos Objetos Criados
Após realizar os testes, é importante limpar o ambiente, removendo os usuários e o perfil criado:
DROP USER chaves CASCADE;
DROP USER kiko CASCADE;
DROP USER chiquinha CASCADE;
DROP PROFILE PERFIL_DA_VILA;
PASSWORD_ROLLOVER_TIME
permite gerenciar transições de senha com segurança e eficiência. Aplicando essa configuração no nível de perfil, é possível ajustar o comportamento do banco de dados conforme as necessidades.
Realizar testes no ambiente garante que sistemas e usuários passem por trocas de senha sem interrupções.
⚾🥎 #20240829 #GuinaNãoTinhaDó #CaceteDeAgulha #BóBó #BackupFalhando #CorreQueVemBomba #FomeLoca #LessaDisse #CabeloDeSapo #Farrapadinha #DifuntosMorreram 🥎⚾