Chapter 20. Autenticación de clientes

Table of Contents

20.1. El archivo pg_hba.conf
20.2. Mapas de nombres de usuario
20.3. Métodos de autenticación
20.4. Autenticación Trust
20.5. Autenticación por contraseña
20.6. Autenticación GSSAPI
20.7. Autenticación SSPI
20.8. Autenticación Ident
20.9. Autenticación Peer
20.10. Autenticación LDAP
20.11. Autenticación RADIUS
20.12. Autenticación por certificado
20.13. Autenticación PAM
20.14. Autenticación BSD
20.15. Autorización/autenticación OAuth
20.16. Problemas de autenticación

Cuando una aplicación cliente se conecta al servidor de la base de datos, especifica con qué nombre de usuario de la base de datos PostgreSQL quiere conectarse, de forma muy parecida a como se inicia sesión en un ordenador Unix como un usuario concreto. Dentro del entorno SQL, el nombre de usuario activo de la base de datos determina los privilegios de acceso a los objetos de la base de datos — consulta Chapter 21 para obtener más información. Por lo tanto, es esencial restringir qué usuarios de la base de datos pueden conectarse.

Note

Como se explica en la sección Chapter 21, PostgreSQL en realidad realiza la gestión de privilegios en términos de roles. En este capítulo, utilizamos sistemáticamente usuario de base de datos para referirnos a un rol con el privilegio LOGIN.

La autenticación es el proceso mediante el cual el servidor de la base de datos establece la identidad del cliente y, por extensión, determina si la aplicación cliente (o el usuario que ejecuta la aplicación cliente) tiene permitido conectarse con el nombre de usuario de la base de datos que se solicitó.

PostgreSQL ofrece varios métodos de autenticación de clientes diferentes. El método utilizado para autenticar una conexión de cliente concreta puede seleccionarse en función de la dirección del host (cliente), la base de datos y el usuario.

Los nombres de usuario de la base de datos de PostgreSQL son lógicamente independientes de los nombres de usuario del sistema operativo en el que se ejecuta el servidor. Si todos los usuarios de un servidor concreto también tienen cuentas en la máquina del servidor, tiene sentido asignar nombres de usuario de base de datos que coincidan con sus nombres de usuario del sistema operativo. Sin embargo, un servidor que acepta conexiones remotas podría tener muchos usuarios de base de datos que no tengan cuenta en el sistema operativo local, y en tales casos no tiene por qué haber ninguna relación entre los nombres de usuario de la base de datos y los nombres de usuario del SO.