피어 인증 postgres 설정에 암호 인증 사용자 추가가 작동하지 않음

Aug 21 2020

인증 방법으로 암호 를 사용하는 기본 피어 인증을 사용하여 원격 서버의 postgres 설정에 읽기 전용 사용자를 추가하고 싶습니다 .

다음과 같이 사용자를 만듭니다.

CREATE USER my_user WITH PASSWORD 'some_pass';
GRANT SELECT ON ALL TABLES IN SCHEMA public TO my_user;
ALTER DEFAULT PRIVILEGES IN SCHEMA public
   GRANT SELECT ON TABLES TO my_user;

이 특정 사용자가 암호를 사용하여 데이터베이스에 액세스 할 수 있어야한다는 규칙을 pg_hba.conf 파일에 추가했습니다.

# TYPE  DATABASE        USER            ADDRESS                 METHOD
local   my_db           my_user                                 password <- my new line
local   all             all                                     peer

그런 다음 다음 psql과 같은 명령 줄에서 시작 합니다.

psql -d my_db -U my_user -W

메시지가 표시되면 'some_pass'를 제공합니다. 이것은 로컬에서 잘 작동하지만 서버에서 다음 오류가 발생합니다.

psql: FATAL:  Peer authentication failed for user "my_user"

pg_hba.conf의 변경 사항이 적용되도록 postgresql을 다시 시작해야합니까? 아니면 누락 된 것이 있습니까? 프로덕션 환경에서 사용 중이기 때문에 postgresql을 다시 시작하는 것을 꺼립니다.

편집 : 나는 서버가 원격이라고 언급하지만 데이터베이스에 액세스하기 전에 먼저 ssh를 사용하여 로그인합니다. 즉, 데이터베이스에 대한 연결이 실제로 로컬임을 의미합니다.

답변

1 a_horse_with_no_name Aug 21 2020 at 18:57

사용자가 원격 클라이언트 호스트에서 연결하므로 인증 유형 은 명명 된 파이프를 사용하는 로컬 연결에 사용되는 것이 host아니라 이어야합니다 local.

"암호"인증 방법도 일반 텍스트로 암호를 전송하므로 사용해서는 안됩니다. 사용 md5하는 대신 (또는 포스트 그레스 서버가 그것을 위해 구성된 경우 scram-sha-256)

원격 연결을 허용하려면 IP 주소도 입력해야합니다. IP 주소를 알고 있다면 추가 할 수 있습니다. 를 사용하면 모든 IP 주소 0.0.0.0/0에서 연결할 수 있습니다.

# TYPE  DATABASE        USER            ADDRESS                 METHOD
host   my_db           my_user          0.0.0.0/0               md5

클라이언트 컴퓨터가 Postgres 서버와 동일한 네트워크에 samenet있는 경우 다음보다 더 안전한 선택이 될 것입니다.0.0.0.0/0

변경 사항을 적용하려면 pg_hba.conf구성을 다시로드해야합니다. 다시 시작할 필요가 없습니다. 예를 들어 select pg_reload_conf();수퍼 유저로 연결되어있는 동안 다시로드 할 수 있습니다 .