Skip to main content

Command Palette

Search for a command to run...

[26ai] Mandatory Profile

Updated
2 min read
[26ai] Mandatory Profile

El artículo también se encuentra publicado en Ingles English version.

En este pequeño artículo vamos a ver los Mandatory Profile.

Aunque no es una novedad en 26ai, sino que fue en la 21c, vamos a proceder a configurarlo en la última release de Oracle.

Este tipo de Profile pueden ser creados dentro de CDB$Root para luego asignarse a las distintas PDBs. Otro punto a tener en cuenta, es que si necesitamos modificarlos, debemos realizarlo a nivel de CDB$ROOT, no de PDB, usando common users, no local users.

Además, las políticas definidas en el Profile se aplicarán a todos los usuarios de la PDB.

¿Qué parámetros puedo usar? A diferencia de un Profile, donde tenemos multitud de parámetros para configurar, aquí solo podemos definir dos, son:

  • Password_verify_function para forzar la complejidad de la contraseña por medio de la función que tenga asignada. Valor por defecto es null.

  • Password_grace_time permite especificar un periodo de gracia para aquellas cuentas que violen la complejidad de las contraseñas. Valor por defecto es 0.

Lo primero que vamos hacer es definir la función que asignaremos al parámetro password_verify_function.

SQL> 
CREATE OR REPLACE FUNCTION VALIDATION_BUSINESS(username     varchar2,
                                               password     varchar2,
                                               old_password varchar2)
  return boolean IS
BEGIN
  if not ora_complexity_check(password, chars => 8, digit => 4) then
    return(false);
  end if;
  return(true);
END;
/
Function created.

Cómo podemos ver, estoy definiendo la función VALIDATION_BUSINESS dentro de CDB$Root con el objetivo de que todas las contraseñas de los usuarios tengan al menos una longitud de 8 caracteres “chars => 8” y 4 dígitos “digit=>4“.

Definimos el Mandatory Profile usando los siguientes parámetros:

  • PASSWORD_VERIFY_FUNCTION para asignarle la función que hemos creado en el punto anterior.

  • PASSWORD_GRACE_TIME para dar al usuario un periodo de gracia de 5 días para cambiar la contraseña.

SQL> 
  CREATE MANDATORY PROFILE C##VALIDATION_BUSINESS 
   LIMIT 
     PASSWORD_VERIFY_FUNCTION VALIDATION_BUSINESS 
     PASSWORD_GRACE_TIME 5 
   CONTAINER = ALL; 

Profile created.

Como último paso sería modificar el parámetro MANDATORY_USER_PROFILE.

Aquí podemos hacer dos cosas, si queremos que el cambio afecte a todas las PDB, debemos ajustar ese parámetro a nivel de CDB$ROOT; pero si queremos que solo se aplique a una PDB específica, entonces debemos modificarlo directamente dentro de esa PDB.

SQL> show parameter MANDATORY_USER_PROFILE
NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
mandatory_user_profile               string

SQL> ALTER SYSTEM SET MANDATORY_USER_PROFILE=C##VALIDATION_BUSINESS;
System altered.

SQL> show parameter MANDATORY_USER_PROFILE

NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
mandatory_user_profile               string      C##VALIDATION_BUSINESS

Espero que os guste. ¡Nos vemos en el próximo artículo!