[PostgreSQL] 외부에서 접속할 때 비밀번호 요구데이터베이스/PostgreSQL2024. 12. 24. 15:36
Table of Contents
나는 PostgreSQL을 homebrew를 통해서 설치하였다.
nano /opt/homebrew/var/postgresql@14/pg_hba.conf
이 파일을 열면 아래 부분에 아래와 같이 기본적으로 설정되어있다.
# TYPE DATABASE USER ADDRESS METHOD
# "local" is for Unix domain socket connections only
local all all trust
# IPv4 local connections:
host all all 127.0.0.1/32 trust
# IPv6 local connections:
host all all ::1/128 trust
# Allow replication connections from localhost, by a user with the
# replication privilege.
local replication all trust
host replication all 127.0.0.1/32 trust
host replication all ::1/128 trust
METHOD 부분에 TRUST는 비밀번호 없이 접속을 허용하는 인증 방식을 의미한다.
이 방식은 PostgreSQL에서 가장 낮은 보안 수준의 인증 방법으로, 지정된 조건만 충족하면 클라이언트가 비밀번호를 입력하지 않고도 데이터베이스에 접속할 수 있다.
이렇게 기본 설정은 보안 수준이 매우 낮기 때문에 바꿀 필요가 있다.
운영 환경에서는 반드시 비밀번호 인증 방식(md5 또는 scram-sha-256)을 사용하는 것이 보안상 안전하다.
나는 아래와 같이 로컬에서는 trust, 외부 접속에서는 내 계정명과 비밀번호를 요구하게끔 바꾸었다.
# TYPE DATABASE USER ADDRESS METHOD
local all all trust
host all dba 0.0.0.0/0 md5
local replication all trust
host replication dba 0.0.0.0/0 md5
참고로 md5보다 scram-sha-256 방식이 더 안전하다고 한다.