Entrada

PostgreSQL 🐘 : Almacenar Credenciales de Forma Segura

Cuando trabajas con bases de datos en PostgreSQL y en general, una de las tareas más comunes es conectarte a las bases de datos desde la línea comandos usando el cliente psql. Sin embargo, cada vez que lo haces, el servidor de PostgreSQL te pide la contraseña. Esto puede resultar tedioso, especialmente al automatizar tareas o ejecutar scripts. Para evitar este inconveniente, PostgreSQL ofrece una herramienta denominada pgpass, que permite almacenar las credenciales de acceso de forma segura y automática, eliminando la necesidad de ingresar la contraseña en cada conexión. En este post aprenderás a crear y utilizar el archivo pgpass de manera efectiva.

¿Qué es el Archivo Pgpass?

El archivo pgpass es un archivo de texto que almacena credenciales de autenticación para servidores PostgreSQL. Su función principal es permitir conexiones automáticas sin que el usuario tenga que ingresar manualmente la contraseña en cada sesión.

Este archivo es especialmente útil en los siguientes casos:

  • Automatización de tareas: Si usas scripts o cron jobs (tareas programadas) que requieren conectarse a PostgreSQL, pgpass evita que tengas que escribir la contraseña en cada ejecución.
  • Conexión desde aplicaciones: Herramientas como psql, pg_dump o pg_restore pueden usar pgpass para conectarse sin pedir credenciales.
  • Mejor seguridad: Evita almacenar contraseñas en scripts o en variables de entorno, reduciendo riesgos de exposición.

Ubicación del Archivo Pgpass

El archivo pgpass debe guardarse en una ubicación específica dependiendo del sistema operativo.

  • La ubicación del archivo en Linux/macOS normalmente se encuentra en el directorio de inicio de tu usuario (~/.pgpass) Ejemplo:

    1
    
    /Users/<user>/.pgpass
    
  • En Windows se debe buscar el destino de instalación, generalmente es %APPDATA%\postgresql\pgpass.conf. Ejemplo:

    1
    
    C:\Users\<usuario>\AppData\Roaming\postgresql\pgpass.conf
    

Crear Archivo Pgpass

Como ya sabemos el archivo pgpass debe guardarse en una ubicación específica dependiendo del sistema operativo. Para ello realiza los siguientes pasos:

  1. Abre una terminal o símbolo del sistema.
  2. Crea el archivo pgpass en la ubicación que corresponda según tu sistema operativo.
  • En Linux/macOS creamos el archivo con el comando touch:

    1
    
    touch ~/.pgpass
    
  • En Windows debes buscar el destino de instalación, puede ser algo como %APPDATA%\postgresql\pgpass.conf. Una vez encontrado, ejecuta el siguiente comando:

    1
    
    echo '' > pgpass.conf
    

Formato del archivo pgpass

El archivo pgpass tiene un formato muy sencillo, donde cada línea describe las credenciales para una conexión específica. La estructura es la siguiente:

1
hostname:port:database:username:password
  • hostname: El nombre del host del servidor de la base de datos. Si la base de datos está en tu máquina local, usamos localhost.
  • port: El puerto en el que PostgreSQL está escuchando. El puerto predeterminado es 5432, aunque puede ser otro si lo has configurado de manera diferente.
  • database: El nombre de la base de datos a la que deseas conectarte.
  • username: El nombre de usuario con el que te conectarás a la base de datos.
  • password: La contraseña asociada a ese usuario.

Añadir las credenciales

Escribe las credenciales necesarias en el archivo pgpass siguiendo el formato indicado anteriormente. Puedes agregar tantas entradas como necesites, una por línea.

Ejemplo:

1
localhost:5432:postgres:admin:secreta123

Conectarse a PostgreSQL sin ingresar la contraseña

Con el archivo pgpass configurado correctamente, ahora puedes conectarte a PostgreSQL de la siguiente manera:

1
psql -h localhost -U admin -d postgres

PostgreSQL leerá la contraseña desde el archivo pgpass y se conectará automáticamente.

Esta entrada está licenciada bajo CC BY 4.0 por el autor.