Crear un profile de política de contraseñas y asignarlo a usuarios
OracleSeguridadComando
-- Hardened profile for application/human users:
CREATE PROFILE app_user_prf LIMIT
FAILED_LOGIN_ATTEMPTS 5
PASSWORD_LOCK_TIME 1/24 -- 1 hour lock
PASSWORD_LIFE_TIME 90
PASSWORD_GRACE_TIME 7
PASSWORD_REUSE_TIME 365
PASSWORD_REUSE_MAX 10
INACTIVE_ACCOUNT_TIME 60 -- accounts unused for 60 days are locked
PASSWORD_VERIFY_FUNCTION ora12c_strong_verify_function;
-- Service accounts: password never expires, gradual password rollover enabled:
CREATE PROFILE service_account_prf LIMIT
FAILED_LOGIN_ATTEMPTS UNLIMITED
PASSWORD_LIFE_TIME UNLIMITED
PASSWORD_ROLLOVER_TIME 1; -- old and new password both valid for 1 day
ALTER USER customer_app PROFILE app_user_prf;
-- Check:
SELECT username, profile, account_status,
TO_CHAR(expiry_date,'YYYY-MM-DD') AS expiry_date, lock_date
FROM dba_users
WHERE profile IN ('APP_USER_PRF', 'SERVICE_ACCOUNT_PRF');
SELECT profile, resource_name, limit
FROM dba_profiles
WHERE profile = 'APP_USER_PRF' AND resource_type = 'PASSWORD'
ORDER BY resource_name;Qué hace
Un profile aplica a un grupo de usuarios reglas de bloqueo por inicios de sesión fallidos, vigencia de la contraseña, reutilización, complejidad (verify function) y bloqueo de cuentas inactivas. PASSWORD_ROLLOVER_TIME permite que las aplicaciones cambien sin caída mientras se cambia la contraseña de una cuenta de servicio.
Cuándo usarlo
Para requisitos de auditoría de seguridad/CIS benchmark, al crear usuarios de aplicación nuevos y para separar por grupo de usuarios los valores laxos del profile DEFAULT.
Precaución
Sin licencia adicional. Un límite FAILED_LOGIN_ATTEMPTS en una cuenta de servicio permite que un solo servidor de aplicaciones con una contraseña errónea bloquee la cuenta y cause una caída en producción. PASSWORD_LIFE_TIME en cuentas de aplicación puede causar un estado EXPIRED inesperado. La verify function debe existir en SYS (si no, @?/rdbms/admin/utlpwdmg.sql; ese script también modifica el profile DEFAULT). Cambiar el profile no vuelve a validar las contraseñas existentes.
Relacionado
- Crear, abrir, definir la master key y hacer backup de un keystore TDE (19c+)
- Cifrar tablespaces con TDE (nuevos y existentes, online/offline)
- Crear una política de Unified Auditing, habilitarla de forma condicional, revisar los registros y eliminarla
- Añadir una política de acceso a nivel de fila con VPD (DBMS_RLS)
- Encontrar privilegios no usados con privilege analysis