Nota
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
Error de autenticación de contraseña para el usuario
Este artículo le ayuda a resolver el problema que puede producirse al conectarse a Azure Database for PostgreSQL: Servidor flexible.
Síntomas
Al intentar conectarse a Azure Database for PostgreSQL: Servidor flexible, puede aparecer el siguiente mensaje de error:
psql: error: se ha producido un error en la conexión al servidor en "<server-name>.postgres.database.azure.com" (x.x.x.x), puerto 5432: ERROR GRAVE: no se ha podido realizar la autenticación de contraseña para el usuario "<user-name>"
Este error indica que la contraseña proporcionada para el usuario <user-name>
es incorrecta.
Después del error de autenticación de contraseña inicial, es posible que vea otro mensaje de error en el que se indique que el cliente está intentando volver a conectarse al servidor, esta vez sin cifrado SSL. Este error se debe a que la configuración de pg_hba.conf
del servidor no permite conexiones sin cifrar.
Se ha producido un error en la conexión al servidor en "<server-name>.postgres.database.azure.com" (x.x.x.x), puerto 5432: ERROR GRAVE: no hay ninguna entrada pg_hba.conf para el host "y.y.y.y", usuario "<user-name>", base de datos "postgres", sin cifrado
Cuando se usa un cliente de libpq
que admite SSL, como herramientas tipo psql
, pg_dump
o pgbench
, es un comportamiento estándar intentar conectarse una vez con SSL y una vez sin. El motivo de este enfoque es que el servidor puede tener reglas de pg_hba
diferentes para las conexiones SSL y no SSL.
El mensaje de error combinado que recibe en este escenario tiene este aspecto:
psql: error: se ha producido un error en el servidor en "<server-name>.postgres.database.azure.com" (x.x.x.x), puerto 5432: ERROR GRAVE: no se ha podido realizar la autenticación de contraseña para la conexión del usuario "<user-name>" al servidor en "<server-name>.postgres.database.azure.com" (x.x.x.x), error en el puerto 5432: ERROR GRAVE: no hay ninguna entrada pg_hba.conf para el host "y.y.y.y", usuario "<user-name>", base de datos "postgres", sin cifrado
Para evitar este doble intento y especificar el modo SSL deseado, use la opción de conexión sslmode
en la configuración del cliente. Por ejemplo, si usa variables libpq
en el shell de Bash, puede establecer el modo SSL mediante el comando siguiente:
export PGSSLMODE=require
Causa
El error detectado al establecer la conexión a Azure Database for PostgreSQL: Servidor flexible se debe principalmente a problemas relacionados con la autenticación de contraseña:
Contraseña incorrecta El error de autenticación de contraseña para el usuario
<user-name>
ocurre cuando la contraseña del usuario es incorrecta. Esto puede ocurrir debido a una contraseña mal escrita, un cambio de contraseña reciente que no se ha actualizado en la configuración de conexión u otros problemas similares.Usuario o rol creado sin una contraseña Otra posible causa de este error es la creación de un usuario o rol en PostgreSQL sin especificar una contraseña. La ejecución de comandos como
CREATE USER <user-name>
oCREATE ROLE <role-name>
sin una declaración de contraseña adjunta da como resultado un usuario o rol sin una contraseña establecida. Al intentar conectarse a estos tipos de usuarios o roles sin establecer una contraseña, se producirá un error de autenticación de contraseña.Posible vulneración de seguridad Si el error de autenticación es inesperado, especialmente si hay varios intentos fallidos registrados, podría indicar una posible infracción de seguridad. Los intentos de acceso no autorizados pueden desencadenar estos errores.
Solución
Si encuentra el error "no se ha podido realizar la autenticación de contraseña para el usuario <user-name>
", siga estos pasos para resolver el problema.
Probar a conectarse con otra herramienta
Si el error procede de una aplicación, intente conectarse a la base de datos mediante una herramienta diferente, como
psql
o pgAdmin, con el mismo nombre de usuario y contraseña. Este paso ayuda a determinar si el problema es específico del cliente o un problema de autenticación más amplio. Tenga en cuenta las reglas de firewall pertinentes que puedan afectar a la conectividad. Para obtener instrucciones sobre cómo conectarse mediante distintas herramientas, consulte la hoja "Conectar" en Azure Portal.Cambiar la contraseña
Si sigue teniendo problemas de autenticación de contraseña después de probar otra herramienta, considere la posibilidad de cambiar la contraseña del usuario. Para el usuario administrador, puede cambiar la contraseña directamente en Azure Portal, tal y como se describe en este vínculo. Para otros usuarios, o el usuario administrador en determinadas condiciones, puede cambiar la contraseña de la línea de comandos. Asegúrese de que ha iniciado sesión en la base de datos como usuario con el atributo
CREATEROLE
y la opciónADMIN
en su rol. El comando para cambiar la contraseña es:ALTER USER <user-name> PASSWORD '<new-password>';
Establecer una contraseña para un usuario o un rol creado sin una
Si la causa del error es la creación de un usuario o rol sin contraseña, inicie sesión en la instancia de PostgreSQL y establezca la contraseña para el rol. En el caso de los roles creados sin el privilegio
LOGIN
, asegúrese de conceder este privilegio junto con la configuración de la contraseña:ALTER ROLE <role-name> LOGIN; ALTER ROLE <role-name> PASSWORD '<new-password>';
Si sospecha una posible infracción de seguridad
Si sospecha que una posible vulneración de seguridad está provocando un acceso no autorizado a su instancia de Azure Database for PostgreSQL: Servidor flexible, siga estos pasos para solucionar el problema:
Habilitar la captura de registros: si la captura de registros aún no está activada, configúrela ahora. La captura de registros clave para vigilar las actividades de la base de datos y detectar patrones de acceso extraños. Hay varias formas de hacerlo, incluidos Log Analytics de Azure Monitor y los registros del servidor, que ayudan a almacenar y analizar los registros de eventos de la base de datos.
- Log Analytics: consulte las instrucciones de configuración de Log Analytics de Azure Monitor aquí: Configure y acceda a los registros de Azure Database for PostgreSQL: Servidor flexible.
- Registros del servidor: para una gestión práctica de registros, consulte Configurar la captura de registros del servidor PostgreSQL y registros de actualización de versiones principales.
Identificar la dirección IP del atacante
Revise los registros para buscar la dirección IP desde la que se realizan los intentos de acceso no autorizados. Si el atacante usa una herramienta basada en
libpq
, verá la dirección IP en la entrada de registro asociada al intento de conexión con error:Se ha producido un error en la conexión al servidor en "<server-name>.postgres.database.azure.com" (x.x.x.x), puerto 5432: ERROR GRAVE: no hay ninguna entrada pg_hba.conf para el host "y.y.y.y", usuario "<user-name>", base de datos "postgres", sin cifrado
En este ejemplo,
y.y.y.y
es la dirección IP desde la que el atacante intenta conectarse.Modificar el
log_line_prefix
: para mejorar el registro y facilitar la solución de problemas, debe modificar el parámetrolog_line_prefix
en la configuración de PostgreSQL para incluir la dirección IP del host remoto. Para registrar el nombre de host remoto o la dirección IP, agregue el código de escape%h
allog_line_prefix
.Por ejemplo, puede cambiar el
log_line_prefix
al siguiente formato para el registro completo:log_line_prefix = '%t [%p]: [%l-1] db=%d,user=%u,app=%a,client=%h '
Este formato incluye lo siguiente:
%t
para la marca de tiempo del evento%p
para el identificador del proceso[%l-1]
para el número de línea de sesión%d
para el nombre de la base de datos%u
para el nombre de usuario%a
para el nombre de la aplicación%h
para la dirección IP del cliente
Con este prefijo de línea de registro, puede realizar un seguimiento de la hora, el identificador de proceso, el usuario, la aplicación y la dirección IP de cliente asociados a cada entrada de registro, lo que proporciona un contexto valioso para cada evento del registro del servidor.
Bloquear la dirección IP del atacante: analice los registros para detectar las direcciones IP sospechosas que siguen apareciendo en intentos de acceso no autorizados. Una vez que encuentre estas direcciones IP, bloquéelas inmediatamente en la configuración del firewall. De esta manera se cortará su acceso y evitará cualquier intento más no autorizado. Además, revise las reglas de firewall para asegurarse de que no sean demasiado permisivas. Las reglas demasiado amplias pueden exponer su base de datos a posibles ataques. Limite el acceso solo a intervalos IP conocidos y necesarios.
Siguiendo estos pasos, debería poder resolver los problemas de autenticación y conectarse correctamente a su instancia de Azure Database for PostgreSQL: Servidor flexible. Si sigue teniendo problemas después de seguir las instrucciones proporcionadas, no dude en archivo de una incidencia de soporte técnico.