Password Policy
Aplica restricciones de seguridad de contraseñas y políticas de expiración a través de una arquitectura flexible basada en plugins.
password_policy
Install
composer require 'drupal/password_policy:^4.0'
composer require 'drupal/password_policy:8.x-3.2'
Overview
Password Policy es un módulo de seguridad integral que permite a los administradores del sitio definir y aplicar requisitos de contraseña mediante políticas configurables. El módulo utiliza una arquitectura basada en plugins donde las restricciones de contraseña (como longitud mínima, tipos de caracteres requeridos y frases prohibidas) son proporcionadas por submódulos opcionales.
Las políticas se basan en roles, lo que significa que diferentes roles de usuario pueden tener diferentes requisitos de contraseña. El módulo también proporciona funcionalidad de expiración de contraseñas, rastreando automáticamente cuándo las contraseñas necesitan ser restablecidas y obligando a los usuarios a actualizar las contraseñas expiradas antes de que puedan continuar usando el sitio.
Las capacidades clave incluyen retroalimentación de validación en tiempo real durante el ingreso de contraseñas, notificaciones por correo electrónico para contraseñas que expiran o ya expiradas, soporte para prevenir la reutilización de contraseñas mediante seguimiento de historial, e integración con el módulo Masquerade para evitar restablecimientos forzados de contraseña durante sesiones de suplantación. Los usuarios autenticados externamente (a través del módulo externalauth) son excluidos automáticamente de la validación de contraseñas y las verificaciones de expiración.
Features
- Crear y gestionar múltiples políticas de contraseña con diferentes restricciones y configuraciones de expiración
- Asignación de políticas basada en roles - aplicar diferentes políticas a diferentes roles de usuario
- Sistema de restricciones basado en plugins que permite requisitos de contraseña extensibles
- Validación de contraseña AJAX en tiempo real con tabla visual de estado de aprobación/fallo durante el ingreso de contraseña
- Expiración automática de contraseñas con período de expiración configurable en días
- Funcionalidad de restablecimiento forzado de contraseña - los administradores pueden forzar el restablecimiento de contraseña para roles específicos
- Notificaciones por correo electrónico para expiración de contraseña y advertencias de expiración pendiente
- Detección automática basada en Cron y marcado de contraseñas expiradas
- Manejo elegante de enlaces de inicio de sesión de un solo uso para permitir a los usuarios restablecer contraseñas después de la expiración
- Soporte para el módulo Masquerade - omite el restablecimiento forzado de contraseña durante la suplantación
- Exclusión de usuarios autenticados externamente de las políticas de contraseña
- Soporte de migración desde el módulo password_policy de Drupal 7
Use Cases
Cumplimiento de Seguridad Empresarial
Las organizaciones que requieren cumplimiento con estándares de seguridad (PCI-DSS, HIPAA, SOC2) pueden usar Password Policy para aplicar requisitos de contraseña fuertes. Cree una política con longitud mínima de 12 caracteres, requiera 3+ tipos de caracteres, habilite el historial de contraseñas para prevenir la reutilización de las últimas 12 contraseñas, y establezca la expiración de contraseña a 90 días con advertencias por correo electrónico 14 y 7 días antes de la expiración.
Requisitos de Contraseña por Niveles
Los sitios con diferentes tipos de usuarios pueden crear múltiples políticas. Por ejemplo, crear una política estricta para administradores que requiera 16+ caracteres, los 4 tipos de caracteres y expiración de 30 días, mientras se aplica una política más ligera a usuarios autenticados regulares con 8+ caracteres y sin expiración.
Respuesta de Seguridad de Emergencia
Después de un incidente de seguridad o violación de datos, los administradores pueden usar la función de Forzar Restablecimiento de Contraseña para expirar inmediatamente todas las contraseñas para roles de usuario afectados, forzando a todos a crear nuevas contraseñas en su próximo inicio de sesión.
Prevenir Ataques de Contraseñas Comunes
Use el submódulo Password Blacklist para evitar que los usuarios elijan contraseñas comúnmente comprometidas. Importe listas de contraseñas conocidas filtradas y habilite la coincidencia de subcadenas para también bloquear variaciones.
Prevenir el Ciclado Rápido de Contraseñas
Habilite las restricciones de Historial de Contraseñas y Retraso de Contraseña juntas. El historial previene la reutilización de contraseñas recientes mientras que el retraso evita que los usuarios cambien contraseñas rápidamente múltiples veces para evadir la verificación de historial.
Tips
- Habilite la opción 'Mostrar tabla de política' en las políticas para dar a los usuarios retroalimentación visual inmediata mientras escriben su contraseña, mostrando qué restricciones pasan o fallan en tiempo real.
- Use valores separados por comas en el campo 'Enviar correo electrónico pendiente días antes' para enviar múltiples correos de recordatorio (ej., '7,3,1' envía recordatorios 7, 3 y 1 días antes de la expiración).
- La verificación de expiración de contraseña solo se ejecuta en solicitudes GET y excluye solicitudes AJAX, llamadas JSON API y varias rutas del sistema para evitar interferir con la operación normal del sitio.
- Al probar políticas de contraseña, recuerde que la validación se ejecuta contra los roles seleccionados en el formulario, no solo los roles actuales del usuario. Agregar un rol con una política activará la validación.
- Los hashes del historial de contraseñas se almacenan en una tabla de base de datos separada (password_policy_history) y pueden crecer en sitios con muchos usuarios. Considere la limpieza periódica de entradas muy antiguas.
Technical Details
Admin Pages 4
/admin/config/security/password-policy
Lista todas las políticas de contraseña configuradas. Desde esta página, los administradores pueden ver, editar y eliminar políticas existentes, así como crear nuevas. Cada política muestra su nombre de máquina y proporciona enlaces de operaciones para edición y eliminación.
/admin/config/security/password-policy/add
Formulario para crear una nueva política de contraseña. Defina el nombre de la política, configuraciones de expiración y preferencias de notificación por correo electrónico.
/admin/config/security/password-policy/{password_policy}
Formulario para editar una política de contraseña existente. Modificar configuraciones de la política, agregar o eliminar restricciones, y configurar a qué roles se aplica la política.
/admin/config/security/password-policy/reset
Formulario administrativo para forzar inmediatamente la expiración de contraseñas para usuarios con roles específicos. Útil para incidentes de seguridad o cuando se aplican nuevas políticas de contraseña.
Permissions 2
Hooks 2
hook_password_policy_show_policy_alter
Permite a los módulos alterar si la tabla de estado de la política de contraseña se muestra en un formulario.
hook_password_policy_constraints_table_rows_alter
Permite a los módulos alterar las filas de la tabla de restricciones mostradas durante la validación de contraseña.
Troubleshooting 5
El módulo agrega campos a las entidades de usuario durante la instalación. Si Cron se ha ejecutado antes de que los usuarios hayan iniciado sesión, sus contraseñas pueden estar marcadas como expiradas. Ejecute Cron nuevamente después de que los usuarios inicien sesión, o use la función de Forzar Restablecimiento de Contraseña para restablecer la bandera de expiración, o los usuarios pueden usar el enlace de inicio de sesión de un solo uso.
Asegúrese de haber habilitado al menos un submódulo de restricción (ej., password_policy_length). El módulo base solo proporciona el framework de la política; las restricciones provienen de submódulos.
Verifique que el módulo externalauth esté correctamente instalado y configurado. Password Policy detecta automáticamente a los usuarios autenticados externamente y los excluye de la validación.
Verifique que la casilla 'Enviar correo electrónico cuando la contraseña expire' esté habilitada en la política. También verifique que el sistema de correo de su sitio esté correctamente configurado y que Cron se esté ejecutando regularmente.
Reduzca la configuración cron_threshold en password_policy.settings.yml. El valor predeterminado es 250 usuarios por política por ejecución de Cron. Reduzca este valor para sitios con restricciones de memoria.
Security Notes 5
- Password Policy almacena hashes de contraseña en la tabla password_policy_history cuando la restricción de Historial está habilitada. Estos están correctamente hasheados usando el servicio de contraseña de Drupal, pero la tabla debe protegerse como cualquier dato sensible.
- El módulo excluye a los usuarios autenticados externamente de la validación, confiando en que el proveedor de autenticación externo aplica sus propias políticas de contraseña.
- Los administradores con el permiso 'manage password reset' pueden modificar las fechas de expiración de contraseña para cualquier usuario, efectivamente evadiendo los requisitos de expiración.
- La lista negra de contraseñas se almacena en la configuración, que puede exportarse al control de versiones. Evite almacenar información sensible en la lista negra que no debería estar en su repositorio.
- Las notificaciones por correo electrónico sobre la expiración de contraseña incluyen enlaces a la página de inicio de sesión pero no incluyen enlaces de inicio de sesión de un solo uso por razones de seguridad.