Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Falha na autenticação de senha para o usuário
Esse 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), a porta 5432 falhou: FATAL: falha na autenticação de senha para o usuário "<user-name>"
Esse erro indica que a senha fornecida para o usuário <user-name>
está incorreta.
Após o erro inicial de autenticação de senha, você poderá ver outra mensagem de erro indicando que o cliente está tentando se reconectar ao servidor, dessa vez sem criptografia SSL. A falha aqui ocorre devido ao fato de a configuração pg_hba.conf
do servidor não permitir conexões não criptografadas.
conexão 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
Ao usar um cliente libpq
que dá suporte a SSL, como ferramentas como psql
, pg_dump
ou pgbench
, tentar se conectar uma vez com SSL e uma vez sem é um comportamento padrão. O motivo dessa abordagem é que o servidor pode ter regras pg_hba
diferentes para conexões SSL e não SSL.
A mensagem de erro combinada recebida neste cenário é semelhante a esta:
psql: erro: falha na conexão com o servidor em "<server-name.postgres.database.azure.com>" (x.x.x.x), falha na porta 5432: FATAL: falha na autenticação de senha para a conexão "<user-name>" do usuário com o servidor em "<server-name>.postgres.database.azure.com" (x.x.x.x), a porta 5432 falhou: FATAL: nenhuma entrada pg_hba.conf para o 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, você pode usar a opção de conexão sslmode
na sua configuração do cliente. Por exemplo, se você estiver usando variáveis libpq
no shell bash, poderá definir o modo SSL usando o seguinte comando:
export PGSSLMODE=require
Causa
O erro encontrado ao se conectar 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 porque o erro do usuário
<user-name>
ocorre quando a senha do usuário está incorreta. Isso pode acontecer devido a uma senha com tipo incorreto, uma alteração de senha recente 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 é criar um usuário ou função no PostgreSQL sem especificar uma senha. Executar comandos como
CREATE USER <user-name>
ouCREATE ROLE <role-name>
sem uma instrução de senha que acompanha resulta em um usuário ou função sem conjunto de senhas. A tentativa de se conectar com esses tipos de usuário ou função sem definir uma senha resultará em uma falha de autenticação com erro de autenticação de senha.Possível violação de segurança se a falha de autenticação for inesperada, especialmente se houver várias tentativas com falha registradas, poderá indicar uma possível violação de segurança. Tentativas de acesso não autorizadas podem disparar esses erros.
Resolução
Se você estiver encontrando o erro "falha na autenticação de senha para o usuário <user-name>
", siga essas etapas para resolver o problema.
Tente se conectar com uma ferramenta diferente
Se o erro for proveniente 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. Essa etapa ajuda a determinar se o problema é específico para o cliente ou um problema de autenticação mais amplo. Tenha em mente todas as 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 senha
Se você ainda encontrar problemas de autenticação de senha depois de tentar uma ferramenta diferente, considere alterar a senha para o usuário. Para o usuário administrador, você pode alterar a senha diretamente no portal do Azure, conforme descrito nesse link. Para outros usuários ou o usuário administrador em determinadas condições, você pode alterar a senha da linha de comando. Verifique se você está conectado ao banco de dados como um usuário com o atributo
CREATEROLE
e a opçãoADMIN
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 logon na instância do PostgreSQL e defina a senha para a função. Para funções criadas sem o privilégio
LOGIN
, conceda esse privilégio juntamente com a configuração da senha:ALTER ROLE <role-name> LOGIN; ALTER ROLE <role-name> PASSWORD '<new-password>';
Se você suspeitar de uma possível violação de segurança
Se você suspeitar que uma possível violação de segurança está causando acesso não autorizado ao Banco de Dados do Azure para PostgreSQL – Servidor Flexível, siga essas etapas para resolver o problema:
Habilite a captura de log se a captura de log ainda não estiver ativada, configure-a agora. A captura de logs é fundamental para manter-se atento às atividades do banco de dados e detectar padrões de acesso suspeitos. Há várias maneiras de fazer isso, incluindo o Log Analytics do Azure Monitor e logs de servidor, que ajudam a armazenar e analisar logs de eventos de banco de dados.
- Log Analytics: confira as instruções de instalação do Log Analytics do Azure Monitor aqui: Configurar e acessar logs no Banco de Dados do Azure para PostgreSQL – Servidor Flexível.
- Logs de servidor, para gerenciamento de log prático, consulte Configurar a captura de logs de servidor PostgreSQL e logs de atualização de versão principal.
Identifique o endereço IP do invasor
Examine os logs para localizar o endereço IP do qual as tentativas de acesso não autorizado estão sendo feitas. Se o invasor estiver usando uma ferramenta baseada em
libpq
, você verá o endereço IP na entrada de log associada à tentativa de conexão com falha:conexão 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
Nesse exemplo,
y.y.y.y
é o endereço IP do qual o invasor está tentando se conectar.Modifique o
log_line_prefix
para melhorar o registro em log e facilite a solução de problemas, você deve modificar o parâmetrolog_line_prefix
na 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 em log, adicione o código de escape%h
ao seulog_line_prefix
.Por exemplo, você pode alterar seu
log_line_prefix
para o seguinte formato para um registro em log abrangente:log_line_prefix = '%t [%p]: [%l-1] db=%d,user=%u,app=%a,client=%h '
Esse formato inclui:
%t
para o carimbo de data/hora do evento%p
para a ID do processo.[%l-1]
para o número da linha de sessão%d
para o nome do banco de dados%u
para o nome de usuário%a
para o nome do aplicativo%h
para o endereço IP do cliente
Usando esse prefixo de linha de log, você pode acompanhar 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 um contexto valioso para cada evento no log do servidor.
Bloqueie o endereço IP do invasor pesquise os logs para detectar endereços IP suspeitos que continuem aparecendo em tentativas de acesso não autorizadas. Depois de encontrar esses IPs, bloqueie-os imediatamente nas configurações de firewall. Isso interrompe o acesso deles e impede mais tentativas não autorizadas. Além disso, examine as regras de firewall para garantir que elas não sejam muito permissivas. Regras excessivamente amplas podem expor seu banco de dados a possíveis ataques. Limite o acesso a apenas intervalos de IP conhecidos e necessários.
Seguindo essas etapas, você deve ser capaz de resolver os problemas de autenticação e conectar-se com êxito ao Banco de Dados do Azure para PostgreSQL – Servidor Flexível. Se ainda estiver enfrentando problemas depois de seguir as diretrizes fornecidas, não hesite em enviar um tíquete de suporte.