Permitir a autenticação 'peer' sem senha onde corresponde, mas requer senha para outros usuários

1

Eu tenho o que eu acho que é um simples requisito de autenticação do Postgres, mas não consigo descobrir o pg_hba.conf de encantamento para fazê-lo funcionar.

Eu tenho um usuário do banco de dados (função) chamado dbuser , que é o proprietário de um banco de dados protegido por senha adb . Existe um usuário Unix correspondente chamado dbuser . O usuário do Unix dbuser deve ser capaz de se conectar a adb sem uma senha, todos os outros usuários Unix devem poder se conectar usando a função dbuser e fornecendo a senha do banco de dados. Ou seja,

sudo -u dbuser psql -U dbuser adb

não deve exigir uma senha de banco de dados, mas

sudo -u any_other_user psql -U dbuser adb

deve exigir a senha do banco de dados.

A entrada pg_hba.conf :

local adb dbuser peer

funciona para o primeiro caso, mas falha para o segundo (psql: FATAL: autenticação de peer falhou para o usuário "dbuser"). Eu entendo porque, mas não consigo descobrir as regras certas para fazer o que eu quero. Conexões de soquete Unix (locais) somente. Postgres 9.2 se faz diferença.

    
por Mike Blackwell 10.12.2014 / 20:16

1 resposta

1

O que você quer não é possível com o esquema de autenticação atual do PostgreSQL. Quando a peer de autenticação falhar, o PostgreSQL não passará para a próxima entrada em pg_hba.conf . Somente a primeira entrada é usada e, se falhar, a conexão será rejeitada. O modo peer não oferece a opção de recuperar a autenticação de senha se o ID do usuário não corresponder.

Então você não pode fazer isso. Desculpa. O mais próximo que você pode chegar é usar as conexões local (soquete unix) com peer auth e exigir que outros clientes se conectem por soquetes TCP / IP ( host ) com md5 auth. Usar um protocolo diferente permite escolher um método de autenticação diferente para cada um.

Eu propus recentemente uma mudança no comportamento de autenticação em pgsql-hackers que pode permitir o que você quer em uma versão posterior, se eu puder convencer as pessoas de que é uma boa idéia. Basicamente, o modo peer tomaria uma opção md5_fallback que permitiria solicitar uma senha do cliente se ela falhasse a peer autenticação.

    
por 11.12.2014 / 04:47

Tags