Oracle Database 21c incorpora la posibilidad de forzar restricciones en cuanto a la longitud y composición de las contraseña en las PDBs. Esto se puede realizar, creando un perfil mandatorio (“mandatory profile”) en el CDB raíz y aplicándolo luego a una, varias o todas las PDBs.
Para crearlo se utiliza la sentencia:
SQL> create mandatory profile ...
Este perfil agrega una verificación de longitud mínima de
contraseña a los perfiles locales que están asociados con los usuarios de las
PDBs por medio de una función de validación.
Definido en el contenedor raíz (CDB $ ROOT), actúa como un perfil de usuario que está
permanentemente activo. Los límites definidos en este, se aplican de manera
adicional a los límites existentes del perfil que tenga asignado el usuario. Esto
crea un efecto de unión ya que la función de verificación de complejidad de la
contraseña del perfil mandatorio se ejecutará antes que la propia función (si es
que la hubiera) del perfil asignado a la cuenta de usuario.
Esto quiere decir que la longitud de la contraseña definida
en el perfil mandatorio tendrá prioridad sobre cualquier longitud de contraseña
definida en otro perfil asociado al usuario.
Al poder ser creado o modificado solamente desde el CDB $ ROOT, un administrador de PDB no puede eliminar el requisito de complejidad de contraseña impuesto por el perfil mandatorio facilitando de esta manera que los usuarios puedan establecer contraseñas más cortas e inseguras.
Para usar este tipo de perfiles, debemos primero crear (o
modificar) una función de verificación de contraseña, definiendo allí las
restricciones en cuanto a longitud y composición, ejecutar luego la sentencia CREATE
MANDATORY PROFILE indicando la función de validación que generamos, en el parámetro PASSWORD_VERIFY_FUNCTION, y por ultimo configurar el parámetro de inicio MANDATORY_USER_PROFILE en la raíz
del CDB para aplicarlo a las PDBs sobre las cuales queremos forzar la verificación.
Las tareas básicas necesarias que debemos realizar para implementar
esta funcionalidad son:
- Establecer una función de validación de contraseña.
- Crear un perfil mandatorio utilizando la función.
- Asignar el perfil mandatorio a una, varias o
todas las PDBs.
Veamos un ejemplo de cómo hacerlo:
Creación o modificación de una función de complejidad de contraseña.
Creamos una función de verificación de contraseña con las
restricciones que queremos implementar.
Ej.: pdb_mandatory_verify_function_01
donde validamos una longitud mínima de 10 caracteres.
( username varchar2,
password varchar2,
old_password varchar2)
return boolean IS
begin
-- mandatory verify function will always be evaluated regardless of the
-- password verify function that is associated to a particular profile/user
-- requires the minimum password length to be 10 characters
if not ora_complexity_check(password, chars => 10) then
return(false);
end if;
return(true);
end;
/
Function created.
En este caso utilizamos la función ora_complexity_check dentro de la función de verificación, podemos evaluar
también otras condiciones de complejidad de la contraseña como cantidad de mayúsculas, minúsculas, dígitos y caracteres especiales. Esta función es
llamada originalmente por la función ora12c_strong_verify_function y su
definición la podemos encontrar en {ORACLE_HOME} /rdbms/admin/catpvf.sql.
ora_complexity_check (password, chars => 9, upper => 2, lower => 2, digit => 2, special => 2)
Creación de un profile mandatorio:
Para crear un perfil mandatorio genérico en el contenedor raíz, es necesario especificar la palabra clave MANDATORY en la sentencia CREATE PROFILE.
SQL> CREATE MANDATORY PROFILE c##mandatory_profile_01 LIMIT
PASSWORD_VERIFY_FUNCTION pdb_mandatory_verify_function_01 CONTAINER=ALL;
A diferencia de la creación de un profile tradicional, en
este caso solamente podemos utilizar y
establecer los parámetros password_verify_function y password_grace_time
para definir los límites de este perfil.
Con el parámetro PASSWORD_VERIFY_FUNCTION indicamos la
función de verificación.
El parámetro alternativo PASSWORD_GRACE_TIME, en este caso permite especificar un período de gracia para
las cuentas de usuario que infrinjan los requisitos obligatorios de complejidad
de contraseñas, y cuyas contraseñas deben ser necesariamente modificadas. Por
ejemplo, en los esquemas importados utilizando datapump, Oracle comprueba el cumplimiento de la
restricciones de contraseña impuestas con el perfil mandatorio y si no cumple
con ellas se fuerza a cambiarla posteriormente. Si la contraseña no es cambiada
dentro del período de gracia, se rechazarán posteriormente más conexiones.
El valor predeterminado de password_verify_function es nulo y el de password_grace_time es 0.
WHERE profile='C##MANDATORY_PROFILE_01' AND resource_type='PASSWORD';
RESOURCE_NAME LIMIT MAN
------------------------------ ------------------------------ ---
PASSWORD_VERIFY_FUNCTION FROM ROOT YES
FAILED_LOGIN_ATTEMPTS YES
PASSWORD_LIFE_TIME YES
PASSWORD_REUSE_TIME YES
PASSWORD_REUSE_MAX YES
PASSWORD_LOCK_TIME YES
PASSWORD_GRACE_TIME YES
INACTIVE_ACCOUNT_TIME YES
PASSWORD_ROLLOVER_TIME YES
PASSWORD_VERIFY_FUNCTION PDB_MANDATORY_VERIFY_FUNCTION YES
FAILED_LOGIN_ATTEMPTS YES
PASSWORD_LIFE_TIME YES
PASSWORD_REUSE_TIME YES
PASSWORD_REUSE_MAX YES
PASSWORD_LOCK_TIME YES
PASSWORD_GRACE_TIME YES
INACTIVE_ACCOUNT_TIME YES
PASSWORD_ROLLOVER_TIME YES
Configuración
del parámetro MANDATORY_USER_PROFILE
Utilizando el parámetro de inicio MANDATORY_USER_PROFILE podemos
definir si utilizaremos o no un perfil mandatorio y cual será.
El valor de este parámetro se puede establecer a nivel root
del CDB o para algunas PDBs en particular.
Cuando se establece en el CDB $ ROOT, el perfil de usuario
mandatorio especificado se aplica al CDB y a todos los PDBs que contiene.
Cuando se establece a nivel PDB, el perfil de usuario
obligatorio especificado se aplica sólo a esa PDB y anula la restricción
impuesta por el perfil mandatorio definido en el CDB$ROOT (si es que lo hubiera).
Sólo los usuarios “comunes”, con el privilegio ALTER SYSTEM o SYSDBA granteado “commonly”, pueden establecer el valor de parámetro MANDATORY_USER_PROFILE en la raíz del CDB o en una PDB. Esto evita que los administradores locales de PDBs puedan eludir cualquier restricción que se aplique en el CDB$ROOT.
Está previsto que la función de verificación de contraseña del “mandatory profile” se aplique utilizando el parámetro MANDATORY_USER_PROFILE desde el CDB$ROOT, esto implica que la restricción siempre es obtenida y ejecutada desde la raiz y por consecuencia se aplica a todas las PDBs en la base de datos contenedor.
En el caso de querer hacerlo en una PDB en particular, debemos indicar y posicionarnos en el contenedor correspondiente:
SQL> show con_name;
CON_NAME
------------------------------
PDB1
SQL> alter system set mandatory_user_profile= C##MANDATORY_PROFILE_01;
System altered.
Podríamos también generar diferentes “mandatory profiles” con distintas restricciones para utilizar en diferentes PDBs o grupo de ellas.
Algunas
restricciones a tener en cuenta:
Sólo los usuarios comunes a los que se les ha otorgado el
privilegio de sistema ALTER PROFILE de manera “commonly” pueden modificar o eliminar
el perfil obligatorio, y siempre haciéndolo desde la raíz del CDB.
Solo un usuario común al que se le haya otorgado el privilegio ALTER SYSTEM o que tenga el privilegio administrativo SYSDBA puede modificar MANDTORY_USER_PROFILE en el archivo init.ora.
Realizamos una pequeña prueba:
Creamos un nuevo usuario en la PDB que tenga asignado
el perfil mandatorio:
Al utilizar una contraseña menor a 10 caracteres, devuelve el error de longitud.
Esta nueva característica, resulta una herramienta más que interesante para fortalecer la implementación de mejoras en cuanto seguridad y “compliance” en ambientes multitenant.
Personalmente, creo que centralizar aspectos críticos de seguridad en la raíz del CDB permite reducir bastante la superficie ante eventuales ataques, además de minimizar los posibles puntos de falla, error y control.
Harrah's Cherokee Casino - Smarter
ResponderEliminarHarrah's Cherokee Casino 강원도 출장마사지 features 청주 출장마사지 deluxe accommodations, fine dining, a wide 포항 출장안마 variety of entertainment attractions and shopping. In 김해 출장마사지 addition 성남 출장샵 to an Address: 777 Casino Drive