Política de contraseñas, bloqueo por intentos fallidos y rotación de contraseñas sin tiempo de inactividad
MySQLSeguridadComando
-- Password strength policy (component)
INSTALL COMPONENT 'file://component_validate_password';
SET PERSIST validate_password.policy = 'MEDIUM';
SET PERSIST validate_password.length = 12;
SELECT VALIDATE_PASSWORD_STRENGTH('Summer2024') AS score;
-- Failed-login lockout, password lifetime, history
ALTER USER 'ana'@'%' FAILED_LOGIN_ATTEMPTS 5 PASSWORD_LOCK_TIME 1
PASSWORD EXPIRE INTERVAL 90 DAY PASSWORD HISTORY 5 PASSWORD REUSE INTERVAL 365 DAY;
-- Zero-downtime rotation: dual password
ALTER USER 'svc_app'@'10.0.%' IDENTIFIED BY 'N3w#AppSecret2025' RETAIN CURRENT PASSWORD;
-- Once every application uses the new password
ALTER USER 'svc_app'@'10.0.%' DISCARD OLD PASSWORD;Qué hace
Habilita una política que rechaza contraseñas débiles, bloquea temporalmente las cuentas tras inicios de sesión fallidos consecutivos y fija la vigencia de la contraseña y las reglas de reutilización; con contraseñas duales, la contraseña de una cuenta de servicio se cambia sin tiempo de inactividad mientras las aplicaciones se actualizan una a una.
Cuándo usarlo
Para auditorías de seguridad / cumplimiento (PCI, ISO 27001) y la rotación de contraseñas de cuentas de servicio.
Precaución
La política solo se aplica a contraseñas nuevas / cambiadas; no detecta las débiles existentes. En cuentas de servicio, FAILED_LOGIN_ATTEMPTS permite que un solo cliente mal configurado bloquee la cuenta y provoque una caída; úselo para cuentas de personas. PASSWORD_LOCK_TIME está en días (UNBOUNDED: hasta desbloqueo manual); desbloquee con ALTER USER ... ACCOUNT UNLOCK. PASSWORD EXPIRE provoca caídas inesperadas en cuentas de servicio; allí prefiera PASSWORD EXPIRE NEVER más rotación con contraseña dual.