본문 바로가기

PostgreSQL

PostgreSQL pg_hba.conf

pg_hba.conf

Client 에 대한 접근 권한을 관리하는 설정파일입니다.
( Host-based authentication )

파일의 내용은 다음과 같이 기술합니다.

local database user auth-method [auth-options]
host database user address auth-method [auth-options]
host database user IP-address IP-mask auth-method [auth-options]
hostssl database user address auth-method [auth-options]
hostssl database user IP-address IP-mask auth-method [auth-options]
hostnossl database user address auth-method [auth-options]
hostnossl database user IP-address IP-mask auth-method [auth-options]

local

Unix-domain sockets 을 사용한 접근을 의미합니다.

host

TCP/IP 를 사용한 접근을 의미합니다.

hostssl

SSL encrypted 된 연결을 의미합니다.


hostnossl

SSL 를 사용하지 않은 연결을 의미합니다.

database

database name 을 의미합니다.
접근 가능한 대상을 기술하며, 
세션을 맺더라도 접근권한이 기술되어 있지 않는 경우 
타 database 에 접근할 수 없습니다.
all 은 all databases 를 의미합니다.

user

database user 를 의미합니다. 
all 은 all users 를 의미합니다.

address

IP ADDRESS, HOSTNAME 을 기술하거나 ALL 를 사용할 수 있습니다.

auth-method

  • trust
  • reject
  • md5 - md5 hashed password 를 요구
  • password - password 를 요구하나 clear text
  • etc ...

pg_hba.conf 사용예시

pg_hba.conf

local all all trust

hostssl all all 12.8.16.0/28 md5

 

위와 같이 pg_hba.conf 를 기술하는 경우 localhost 에서 다음의 명령어로 DB 에 접속할 수 있으며 모든 DATABASES 에 

접근이 가능합니다.

# psql

Localhost 가 아닌 TCP / IP 를 사용하는 경우 다음과 같이 접근 가능합니다. ( 패스워드 필요 )

# psql -Utest -W -h12.8.16.122 -p5432 test

pg_hba.conf  수정과 관련해 주의할 점은 pg_ctl reload 를 수행해야 수정 된 파일이 읽어들여집니다.
이 부분은 프로덕션 운용중에 이슈가 없는지 확인이 필요한 부분입니다.

ORACLE, MariaDB and PostgreSQL

pg_hba.conf 를 통한 접근제어는 다른 DBMS 에서는 각기 다른 방법으로 구현하고 있습니다.

특히 host 의 address 를 통한 인증에 대해서는 이야기를 하자면

  • ORACLE - sqlnet.ora 의 valid node checking
  • MariaDB - USER 에 IP Address 가 포함
  • PostgreSQL - pg_hba.conf 를 통해 연결 클라이언트를 특정함

위 내용을 보면 ORACLE 과 PostgreSQL 이 비슷하며, 실제 USER 를 구성하는 정보도 USERNAME 뿐입니다.

MariaDB 의 경우는 USERNAME 과 IP ADDRESS 로 USER 가 구성 됩니다.