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 가 구성 됩니다.