Partilhar via


Falha na autenticação de senha para o usuário <user-name>

Este artigo ajuda você a resolver um problema que pode ocorrer ao se conectar ao Banco de Dados do Azure para PostgreSQL - Servidor Flexível.

Sintomas

Ao tentar se conectar ao Banco de Dados do Azure para PostgreSQL - Servidor Flexível, você pode encontrar a seguinte mensagem de erro:

psql: erro: conexão com o servidor em "<server-name.postgres.database.azure.com>" (x.x.x.x), porta 5432 falhou: FATAL: falha na autenticação de senha para o usuário "<user-name>"

Este erro indica que a senha fornecida para o usuário <user-name> está incorreta.

Após o erro de autenticação de senha inicial, você pode ver outra mensagem de erro indicando que o cliente está tentando se reconectar ao servidor, desta vez sem criptografia SSL. A falha aqui é devido à configuração do pg_hba.conf servidor não permitir conexões não criptografadas.

Falha na conexão com o servidor em "<server-name.postgres.database.azure.com>" (x.x.x.x), porta 5432: FATAL: nenhuma entrada pg_hba.conf para host "y.y.y.y", usuário "<user-name>", banco de dados "postgres", sem criptografia

Ao usar um libpq cliente que suporta SSL, como ferramentas como psql, pg_dumpou pgbench, é um comportamento padrão tentar se conectar uma vez com SSL e uma vez sem. A razão para essa abordagem é que o servidor pode ter regras diferentes pg_hba para conexões SSL e não-SSL. A mensagem de erro combinada que recebe neste cenário tem o seguinte aspeto:

psql: erro: conexão com o servidor em "<server-name.postgres.database.azure.com>" (x.x.x.x), porta 5432 falhou: FATAL: falha na autenticação de senha para conexão de "<nome> de usuário" do usuário com o servidor em "<server-name.postgres.database.azure.com>" (x.x.x.x), porta 5432 falhou: FATAL: nenhuma entrada pg_hba.conf para host "y.y.y.y", usuário "<user-name>", banco de dados "postgres", sem criptografia

Para evitar essa tentativa dupla e especificar o modo SSL desejado, use a opção de conexão na configuração do sslmode cliente. Por exemplo, se você estiver usando libpq variáveis no shell bash, poderá definir o modo SSL usando o seguinte comando:

export PGSSLMODE=require

Causa

O erro encontrado ao conectar-se ao Banco de Dados do Azure para PostgreSQL - Servidor Flexível decorre principalmente de problemas relacionados à autenticação de senha:

  • Senha incorreta A autenticação de senha falhou por erro do usuário <user-name> ocorre quando a senha do usuário está incorreta. Isso pode acontecer devido a uma senha digitada incorretamente, uma alteração recente de senha que não foi atualizada nas configurações de conexão ou outros problemas semelhantes.

  • Usuário ou função criada sem senha Outra possível causa desse erro é a criação de um usuário ou função no PostgreSQL sem especificar uma senha. A execução de comandos como CREATE USER <user-name> ou CREATE ROLE <role-name> sem uma instrução de senha que acompanha resulta em um usuário ou função sem senha definida. Tentar se conectar com esses tipos de usuários ou funções sem definir uma senha levará a uma falha de autenticação com erro de falha de autenticação de senha.

  • Potencial violação de segurança Se a falha de autenticação for inesperada, especialmente se houver várias tentativas com falha registradas, isso pode indicar uma possível violação de segurança. Tentativas de acesso não autorizado podem desencadear tais erros.

Resolução

Se você estiver encontrando o erro "falha na autenticação de senha para o usuário <user-name>", siga estas etapas para resolver o problema.

  • Tente conectar-se com uma ferramenta diferente

    Se o erro vier de um aplicativo, tente se conectar ao banco de dados usando uma ferramenta diferente, como psql ou pgAdmin, com o mesmo nome de usuário e senha. Esta etapa ajuda a determinar se o problema é específico do cliente ou um problema de autenticação mais amplo. Lembre-se de quaisquer regras de firewall relevantes que possam afetar a conectividade. Para obter instruções sobre como se conectar usando ferramentas diferentes, consulte a folha "Conectar" no portal do Azure.

  • Alterar a palavra-passe

    Se você ainda encontrar problemas de autenticação de senha depois de tentar uma ferramenta diferente, considere alterar a senha do usuário. Para o usuário administrador, você pode alterar a senha diretamente no portal do Azure, conforme descrito neste link. Para outros usuários ou o usuário administrador sob determinadas condições, você pode alterar a senha na linha de comando. Verifique se você está conectado ao banco de dados como um usuário com o CREATEROLE atributo e a ADMIN opção em sua função. O comando para alterar a senha é:

    ALTER USER <user-name> PASSWORD '<new-password>';
    
  • Definir senha para usuário ou função criada sem uma

    Se a causa do erro for a criação de um usuário ou função sem senha, faça login na sua instância do PostgreSQL e defina a senha para a função. Para funções criadas sem o LOGIN privilégio, certifique-se de conceder esse privilégio juntamente com a configuração da senha:

    ALTER ROLE <role-name> LOGIN;
    ALTER ROLE <role-name> PASSWORD '<new-password>';
    
  • Se suspeitar de uma potencial violação de segurança

    Se suspeitar que uma potencial violação de segurança está a causar acesso não autorizado à sua Base de Dados do Azure para PostgreSQL - Servidor Flexível, siga estes passos para resolver o problema:

    1. Ativar captura de log Se a captura de log ainda não estiver ativada, configure-a agora. Chave de captura de log para ficar de olho nas atividades do banco de dados e capturar quaisquer padrões de acesso estranhos. Há várias maneiras de fazer isso, incluindo o Azure Monitor Log Analytics e os logs do servidor, que ajudam a armazenar e analisar logs de eventos do banco de dados.

    2. Identificar o endereço IP do atacante

      • Revise os logs para encontrar o endereço IP a partir do qual as tentativas de acesso não autorizado estão sendo feitas. Se o invasor estiver usando uma libpqferramenta baseada em você, você verá o endereço IP na entrada de log associada à tentativa de conexão com falha:

        Falha na conexão com o servidor em "<server-name.postgres.database.azure.com>" (x.x.x.x), porta 5432: FATAL: nenhuma entrada pg_hba.conf para host "y.y.y.y", usuário "<user-name>", banco de dados "postgres", sem criptografia

        Neste exemplo, y.y.y.y é o endereço IP a partir do qual o invasor está tentando se conectar.

      • Modifique o Para melhorar o log_line_prefix registro em log e facilitar a solução de problemas, você deve modificar o log_line_prefix parâmetro em sua configuração do PostgreSQL para incluir o endereço IP do host remoto. Para registrar o nome do host remoto ou o endereço IP, adicione o código de %h escape ao seu log_line_prefix.

        Por exemplo, você pode alterar log_line_prefix o formato para o seguinte para registro em log abrangente:

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

        Este formato inclui:

        • %t para o carimbo de data/hora do evento
        • %p para o ID do processo
        • [%l-1] para o número da linha da sessão
        • %d para o nome do banco de dados
        • %u para o nome de utilizador
        • %a para o nome do aplicativo
        • %h para o endereço IP do cliente

        Usando esse prefixo de linha de log, você pode controlar a hora, a ID do processo, o usuário, o aplicativo e o endereço IP do cliente associados a cada entrada de log, fornecendo contexto valioso para cada evento no log do servidor.

    3. Bloquear o endereço IP do atacante Aprofunde-se nos registos para detetar quaisquer endereços IP suspeitos que continuem a aparecer em tentativas de acesso não autorizado. Depois de encontrar esses IPs, bloqueie-os imediatamente nas configurações do firewall. Isso corta seu acesso e impede mais tentativas não autorizadas. Além disso, reveja as regras de firewall para garantir que não são demasiado permissivas. Regras excessivamente amplas podem expor seu banco de dados a possíveis ataques. Limite o acesso apenas a intervalos de IP conhecidos e necessários.

Seguindo estas etapas, você deve ser capaz de resolver os problemas de autenticação e conectar-se com êxito ao seu Banco de Dados do Azure para PostgreSQL - Servidor Flexível. Se você ainda estiver enfrentando problemas depois de seguir as orientações fornecidas, não hesite em enviar um tíquete de suporte.