Cómo crear un perfil de usuario de Oracle 19c DB para desactivar la caducidad de la contraseña

Esta mañana recibí el mensaje de advertencia siguiente mientras me conectaba a una base de datos Oracle: “ORA-28002: the password will expire within 7 days“. La cuenta y la contraseña de la base de datos aún eran válidas y este mensaje significaba simplemente que era hora de cambiar la contraseña por razones de seguridad. Esta base de datos se utilizaba para hacer pruebas en una máquina virtual así que no había problemas de seguridad en este caso. Por lo tanto, una solución alternativa consistía en crear un nuevo perfil de usuario de base de datos para desactivar la caducidad de la contraseña. He documentado cómo lo hice en este tutorial.

ORA-28002: the password will expire within 7 days
ORA-28002: the password will expire within 7 days

Durante la creación de una cuenta de usuario de base de datos de Oracle se asocia un perfil que define, entre otras cosas, las políticas de gestión de la contraseña. La política predeterminada define que las contraseñas caducan después de 180 días, y eso explica por qué recibí este mensaje de advertencia:

ORA-28002: the password will expire within 7 days
ORA-28002: the password will expire within 7 days

Cambié inmediatamente la contraseña del usuario (SYSTEM en ese ejemplo) usando la instrucción ALTER USER:

ALTER USER SYSTEM IDENTIFIED BY newpassword;
ALTER USER SYSTEM IDENTIFIED BY newpassword;

La caducidad de la contraseña no era muy importante en este entorno virtual. Por lo tanto, decidí crear un nuevo perfil de usuario para desactivar la caducidad de la contraseña y poder asociarlo con ciertos usuarios.

Pedí la lista de los perfiles asociados con los usuarios de la base de datos usando la sentencia “SELECT username, profile FROM dba_users ORDER BY username;“. Como puede verse en la captura de pantalla siguiente, todos los usuarios (incluido el usuario del SYSTEM) estaban asociados con el perfil de usuario predeterminado “DEFAULT“.

SELECT username, profile FROM dba_users ORDER BY username;
SELECT username, profile FROM dba_users ORDER BY username;

Utilicé la sentencia “SELECT RESOURCE_TYPE, RESOURCE_NAME, LIMIT from DBA_PROFILES WHERE PROFILE=’DEFAULT’;” para ver la definición de este perfil de usuario.

SELECT RESOURCE_TYPE, RESOURCE_NAME, LIMIT from DBA_PROFILES WHERE PROFILE='DEFAULT';
SELECT RESOURCE_TYPE, RESOURCE_NAME, LIMIT from DBA_PROFILES WHERE PROFILE=’DEFAULT’;

Había dos tipos de recursos definidos en este perfil: los de tipo “KERNEL” se usaban para especificar límites de recursos para un usuario, mientras que los de tipo “PASSWORD” definían las políticas para la contraseña. Los recursos de tipo “PASSWORD” son los siguientes:

  • FAILED_LOGIN_ATTEMPS para especificar el número de intentos consecutivos fallidos de contraseña antes de que se bloquee la cuenta.
  • PASSWORD_LIFE_TIME para especificar el número de días de vigencia de la contraseña.
  • PASSWORD_REUSE_TIME para especificar el número de días antes de los cuales no se puede reutilizar una contraseña.
  • PASSWORD_REUSE_MAX para especificar el número de cambios de contraseña necesarios antes de poder reutilizar la contraseña actual.
  • PASSWORD_VERIFY_FUNCTION para especificar el nombre de una función PL/SQL para verificar la complejidad de una contraseña cuando se modifica.
  • PASSWORD_LOCK_TIME para especificar el número de días que se bloqueará una cuenta si se supera el límite de intentos de inicio de sesión fallidos consecutivos.
  • PASSWORD_GRACE_TIME para especificar el número de días del período de gracia durante los cuales se emite una advertencia después del fin de vigencia de la contraseña y se permite el inicio de sesión.
  • INACTIVE_ACCOUNT_TIME para especificar el número permitido de días consecutivos sin inicios de sesión con una cuenta de usuario antes de bloquearla.

No quería modificar el perfil predeterminado “DEFAULT“, ya que este podría ser modificado durante una actualización de la versión del servidor de la base de datos. Así que decidí crear un nuevo perfil que no tendría vencimiento de la contraseña con la ejecución del comando siguiente como administrador: “CREAR PERFIL C##NOPWDEXPIRATION LIMIT PASSWORD_LIFE_TIME UNLIMITED;“. Los valores de los otros recursos para las contraseña se heredarían del perfil de usuario DEFAULT.

CREATE PROFILE C##NOPWDEXPIRATION LIMIT PASSWORD_LIFE_TIME UNLIMITED;
CREATE PROFILE C##NOPWDEXPIRATION LIMIT PASSWORD_LIFE_TIME UNLIMITED;

El nombre del perfil tenía aquí el prefijo “C##” (especificado por el parámetro de inicialización COMMON_USER_PREFIX) porque era un perfil común CDB. Si hubiera sido un perfil local PDB, su nombre no podría haber utilizado los prefijos “C##” o “c##“. La parte “LIMIT PASSWORD_LIFE_TIME UNLIMITED” permitía especificar que la contraseña no debía caducar.

El nuevo perfil estaba ahora disponible y podía asignarlo a un usuario (SYSTEM en este ejemplo) con la sentencia “ALTER USER SYSTEM PROFILE C##NOPWDEXPIRATION;”.

ALTER USER SYSTEM PROFILE C##NOPWDEXPIRATION;
ALTER USER SYSTEM PROFILE C##NOPWDEXPIRATION;

Es algo muy sencillo de hacer y a partir de ahora ya no será obligatorio cambiar la contraseña de la cuenta de usuario “SYSTEM” en este entorno.

Descargo de responsabilidad

La información contenida en este sitio web es solo para fines de información general. Tratamos de mantener esta información actualizada y correcta, pero no asumimos ninguna responsabilidad por errores u omisiones en el contenido del sitio web. El Portal no garantiza ni asume responsabilidad alguna respecto a los posibles daños y perjuicios causados por el uso y utilización de la información o de los gráficos contenidos en el sitio web.

La página Cómo crear un perfil de usuario de Oracle 19c DB para desactivar la caducidad de la contraseña ha sido originalmente publicada en MyBIJourney

Todas las marcas comerciales mencionadas pertenecen a sus respectivos propietarios.
FacebookTwitterPinterestWhatsAppMail