El módulo passwordcheck verifica las contraseñas de los usuarios
cada vez que se establecen con
CREATE ROLE o
ALTER ROLE.
Si una contraseña se considera demasiado débil, será rechazada y
el comando terminará con un error.
Para habilitar este módulo, añade '$libdir/passwordcheck'
a shared_preload_libraries en
postgresql.conf, luego reinicia el servidor.
Puedes adaptar este módulo a tus necesidades modificando el código fuente.
Por ejemplo, puedes usar
CrackLib
para verificar contraseñas; esto solo requiere desmarcar
dos líneas en el Makefile y volver a compilar el
módulo. (No podemos incluir CrackLib
por defecto debido a razones de licencia).
Sin CrackLib, el módulo aplica algunas
reglas simples para la seguridad de las contraseñas, las cuales puedes modificar o ampliar
según creas conveniente.
Para evitar que se envíen contraseñas sin cifrar a través de la red, que se escriban en el registro del servidor o que sean robadas por un administrador de bases de datos, PostgreSQL permite al usuario proporcionar contraseñas precifradas. Muchos programas cliente hacen uso de esta funcionalidad y cifran la contraseña antes de enviarla al servidor.
Esto limita la utilidad del módulo passwordcheck,
porque en ese caso solo puede intentar adivinar la contraseña.
Por esta razón, no se recomienda passwordcheck
si tus requisitos de seguridad son altos.
Es más seguro utilizar un método de autenticación externo como GSSAPI
(consulta la Chapter 20) que confiar en
contraseñas dentro de la base de datos.
Alternativamente, podrías modificar passwordcheck
para que rechace las contraseñas precifradas, pero obligar a los usuarios a establecer sus
contraseñas en texto claro conlleva sus propios riesgos de seguridad.
En un uso normal, este parámetro se establece en
postgresql.conf, pero los superusuarios pueden alterarlo sobre la marcha
dentro de sus propias sesiones. Un uso típico podría ser:
# postgresql.conf passwordcheck.min_password_length = 12