Condividi tramite


Autenticazione della password non riuscita per l'utente <user-name>

Questo articolo illustra come risolvere un problema che può verificarsi durante la connessione a Database di Azure per PostgreSQL - Server flessibile.

Sintomi

Quando si tenta di connettersi a Database di Azure per PostgreSQL - Server flessibile, è possibile che venga visualizzato il messaggio di errore seguente:

psql: error: connection to server at "<server-name.postgres.database.azure.com>" (x.x.x.x), port 5432 failed: FATAL: password authentication failed for user "<user-name>"

Questo errore indica che la password specificata per l'utente <user-name> non è corretta.

Dopo l'errore di autenticazione della password iniziale, potrebbe essere visualizzato un altro messaggio di errore che indica che il client sta tentando di riconnettersi al server, questa volta senza crittografia SSL. L'errore è dovuto alla configurazione del pg_hba.conf server che non consente connessioni non crittografate.

connessione al server in "<server-name.postgres.database.azure.com>" (x.x.x.x),porta 5432 non riuscita: nessuna voce pg_hba.conf per l'host "y.y.y.y", user "<user-name>", database "postgres", nessuna crittografia

Quando si usa un libpq client che supporta SSL, ad esempio strumenti come psql, pg_dumpo pgbench, si tratta di un comportamento standard per provare a connettersi una volta con SSL e una sola volta senza. Il motivo di questo approccio è che il server può avere regole diverse pg_hba per le connessioni SSL e non SSL. Il messaggio di errore combinato visualizzato in questo scenario è simile al seguente:

psql: error: connection to server at "<server-name.postgres.database.azure.com" (x.x.x.x), port 5432 failed: FATAL: password authentication failed for user-name>> connection to server at "<<server-name.postgres.database.azure.com> eseguire la porta 5432: FATAL: nessuna voce pg_hba.conf per l'host "y.y.y.y", user "<user-name>", database "postgres", nessuna crittografia

Per evitare questo doppio tentativo e specificare la modalità SSL desiderata, usare l'opzione sslmode di connessione nella configurazione client. Ad esempio, se si usano libpq variabili nella shell bash, è possibile impostare la modalità SSL usando il comando seguente:

export PGSSLMODE=require

Causa

L'errore riscontrato durante la connessione a Database di Azure per PostgreSQL - Il server flessibile deriva principalmente da problemi correlati all'autenticazione della password:

  • Password errata L'autenticazione della password non è riuscita per l'errore dell'utente <user-name> quando la password per l'utente non è corretta. Questo problema può verificarsi a causa di una password digitata in modo non crittografato, di una modifica recente della password che non è stata aggiornata nelle impostazioni di connessione o di altri problemi simili.

  • Utente o ruolo creato senza password Un'altra possibile causa di questo errore è la creazione di un utente o di un ruolo in PostgreSQL senza specificare una password. L'esecuzione di comandi come CREATE USER <user-name> o CREATE ROLE <role-name> senza un'istruzione password associata comporta un utente o un ruolo senza set di password. Il tentativo di connettersi a questi tipi di utenti o ruoli senza impostare una password causerà un errore di autenticazione con l'autenticazione della password non riuscita.

  • Potenziale violazione della sicurezza Se l'errore di autenticazione è imprevisto, in particolare se sono stati registrati più tentativi non riusciti, potrebbe indicare una potenziale violazione della sicurezza. I tentativi di accesso non autorizzati potrebbero attivare tali errori.

Risoluzione

Se viene visualizzato l'errore "Autenticazione della password non riuscita per l'utente <user-name>", seguire questa procedura per risolvere il problema.

  • Provare a connettersi con uno strumento diverso

    Se l'errore proviene da un'applicazione, tentare di connettersi al database usando uno strumento diverso, ad esempio psql o pgAdmin, con lo stesso nome utente e la stessa password. Questo passaggio consente di determinare se il problema è specifico del client o un problema di autenticazione più ampio. Tenere presente tutte le regole del firewall pertinenti che potrebbero influire sulla connettività. Per istruzioni sulla connessione con diversi strumenti, vedere il pannello "Connetti" nel portale di Azure.

  • Modificare la password

    Se si verificano ancora problemi di autenticazione della password dopo aver provato uno strumento diverso, provare a modificare la password per l'utente. Per l'utente amministratore, è possibile modificare la password direttamente nel portale di Azure come descritto in questo collegamento. Per altri utenti o per l'utente amministratore in determinate condizioni, è possibile modificare la password dalla riga di comando. Assicurarsi di aver eseguito l'accesso al database come utente con l'attributo CREATEROLE e l'opzione ADMIN nel ruolo. Il comando per modificare la password è:

    ALTER USER <user-name> PASSWORD '<new-password>';
    
  • Impostare la password per l'utente o il ruolo creato senza un ruolo

    Se la causa dell'errore è la creazione di un utente o di un ruolo senza password, accedere all'istanza di PostgreSQL e impostare la password per il ruolo. Per i ruoli creati senza privilegi LOGIN , assicurarsi di concedere questo privilegio insieme all'impostazione della password:

    ALTER ROLE <role-name> LOGIN;
    ALTER ROLE <role-name> PASSWORD '<new-password>';
    
  • Se si sospetta una potenziale violazione della sicurezza

    Se si sospetta che una potenziale violazione della sicurezza causi l'accesso non autorizzato al Database di Azure per PostgreSQL - Server flessibile, seguire questa procedura per risolvere il problema:

    1. Abilitare l'acquisizione dei log Se l'acquisizione del log non è già attiva, configurarla ora. Chiave di acquisizione dei log per tenere d'occhio le attività del database e intercettare eventuali modelli di accesso dispari. È possibile eseguire questa operazione in diversi modi, tra cui Log Analytics e log del server di Monitoraggio di Azure, che consentono di archiviare e analizzare i log eventi del database.

    2. Identificare l'indirizzo IP dell'utente malintenzionato

      • Esaminare i log per trovare l'indirizzo IP da cui vengono eseguiti i tentativi di accesso non autorizzati. Se l'utente malintenzionato usa uno libpqstrumento basato su , verrà visualizzato l'indirizzo IP nella voce di log associata al tentativo di connessione non riuscita:

        connessione al server in "<server-name.postgres.database.azure.com>" (x.x.x.x),porta 5432 non riuscita: nessuna voce pg_hba.conf per l'host "y.y.y.y", user "<user-name>", database "postgres", nessuna crittografia

        In questo esempio è y.y.y.y l'indirizzo IP da cui l'utente malintenzionato sta tentando di connettersi.

      • Modificare per log_line_prefix migliorare la registrazione e semplificare la risoluzione dei problemi, è necessario modificare il log_line_prefix parametro nella configurazione di PostgreSQL per includere l'indirizzo IP dell'host remoto. Per registrare il nome host remoto o l'indirizzo IP, aggiungere il %h codice di escape a log_line_prefix.

        Ad esempio, è possibile passare log_line_prefix al formato seguente per la registrazione completa:

        log_line_prefix = '%t [%p]: [%l-1] db=%d,user=%u,app=%a,client=%h '
        

        Questo formato include:

        • %t per il timestamp dell'evento
        • %p per l'ID del processo
        • [%l-1] per il numero di riga della sessione
        • %d per il nome del database
        • %u per il nome utente
        • %a per il nome dell'applicazione
        • %h per l'indirizzo IP del client

        Usando questo prefisso della riga di log, è possibile tenere traccia dell'ora, dell'ID processo, dell'utente, dell'applicazione e dell'indirizzo IP client associato a ogni voce di log, fornendo un contesto prezioso per ogni evento nel log del server.

    3. Bloccare l'indirizzo IP dell'utente malintenzionato Scava nei log per individuare eventuali indirizzi IP sospetti che continuano a essere visualizzati in tentativi di accesso non autorizzati. Dopo aver trovato questi INDIRIZZI IP, bloccarli immediatamente nelle impostazioni del firewall. Ciò impedisce l'accesso e impedisce altri tentativi non autorizzati. Esaminare anche le regole del firewall per assicurarsi che non siano troppo permissive. Regole eccessivamente ampie possono esporre il database a potenziali attacchi. Limitare l'accesso solo agli intervalli IP noti e necessari.

Seguendo questa procedura, dovrebbe essere possibile risolvere i problemi di autenticazione e connettersi correttamente al server flessibile Database di Azure per PostgreSQL. Se si verificano ancora problemi dopo aver seguito le indicazioni fornite, non esitare a inviare un ticket di supporto.