Hay varios métodos de autenticación basados ​​en contraseña. Estos métodos funcionan de manera similar, pero difieren en cómo se almacenan las contraseñas de los usuarios en el servidor y cómo se envía la contraseña proporcionada por un cliente a través de la conexión.

scram-sha-256

El método scram-sha-256 realiza la autenticación SCRAM-SHA-256, como se describe en RFC 7677. Es un esquema de desafío-respuesta que evita la detección de contraseñas en conexiones que no son de confianza y admite el almacenamiento de contraseñas en el servidor en una forma codificada criptográficamente que se considera segura.

Este es el método más seguro de los proporcionados actualmente, pero no es compatible con bibliotecas de clientes más antiguas.

md5

El método md5 utiliza un mecanismo personalizado de desafío-respuesta menos seguro. Evita la detección de contraseñas y evita el almacenamiento de contraseñas en el servidor en texto sin formato, pero no brinda protección si un atacante logra robar el hash de la contraseña del servidor. Además, el algoritmo hash MD5 en la actualidad ya no se considera seguro frente a determinados ataques.

los md5 El método no se puede utilizar con la función db_user_namespace.

Para facilitar la transición de la md5 al nuevo método SCRAM, si md5 se especifica como un método en pg_hba.conf pero la contraseña del usuario en el servidor está encriptada para SCRAM (ver más abajo), entonces se elegirá automáticamente la autenticación basada en SCRAM.

password

El método password envía la contraseña en texto claro y, por lo tanto, es vulnerable a la contraseña olfateando ataques Siempre debe evitarse si es posible. Si la conexión está protegida por encriptación SSL entonces password sin embargo, se puede usar de manera segura. (Aunque la autenticación de certificado SSL podría ser una mejor opción si uno depende del uso de SSL).

Las contraseñas de la base de datos de PostgreSQL son independientes de las contraseñas de los usuarios del sistema operativo. La contraseña para cada usuario de la base de datos se almacena en el pg_authid catálogo del sistema. Las contraseñas se pueden administrar con los comandos SQL CREATE ROLE y ALTER ROLE, por ejemplo, CREATE ROLE foo WITH LOGIN PASSWORD 'secret'o el comando psql password. Si no se ha configurado una contraseña para un usuario, la contraseña almacenada se null y la autenticación de contraseña siempre fallará para ese usuario.

La disponibilidad de los diferentes métodos de autenticación basados ​​en contraseña depende de cómo se cifre la contraseña de un usuario en el servidor (o, más exactamente, con hash). Esto está controlado por el parámetro de configuración password_encryption en el momento en que se establece la contraseña. Si una contraseña fue encriptada usando el scram-sha-256 configuración, entonces se puede utilizar para los métodos de autenticación scram-sha-256 y password (pero la transmisión de la contraseña será en texto plano en este último caso). La especificación del método de autenticación. md5 cambiará automáticamente a usar el scram-sha-256 método en este caso, como se explicó anteriormente, por lo que también funcionará. Si una contraseña fue encriptada usando el md5 ajuste, entonces se puede utilizar sólo para el md5 y password especificaciones del método de autenticación (nuevamente, con la contraseña transmitida en texto sin formato en el último caso). (Las versiones anteriores de PostgreSQL admitían el almacenamiento de la contraseña en el servidor en texto sin formato. Esto ya no es posible). Para verificar los hash de contraseña almacenados actualmente, consulte el catálogo del sistema pg_authid.

Para actualizar una instalación existente desde md5 para scram-sha-256después de asegurarse de que todas las bibliotecas de clientes en uso sean lo suficientemente nuevas como para admitir SCRAM, configure password_encryption = 'scram-sha-256' en postgresql.confhaga que todos los usuarios establezcan nuevas contraseñas y cambie las especificaciones del método de autenticación en pg_hba.conf para scram-sha-256.

Anterior Arriba Próximo
20.4. Autenticación de confianza Casa 20.6. Autenticación GSSAPI