본문 바로가기
엑셈 경쟁력/DB 인사이드

DB 인사이드 | PostgreSQL 참고자료 - Configuration File : pg_hba.conf

by EXEM 2022. 3. 30.

 

 

PostgreSQL Authentication

PostgreSQL에 접속하기 위한 Client는 인증을 획득해야하며, 인증은 $PGDATA/pg_hba.conf 파일을 통해서 이뤄집니다. 해당 파일에서 한개의 레코드는 5개의 필드값(Type, Database, User, Address, Method)으로 작성이 되며 특정 사용자에 대한 인증 혹은 특정 IP 대역의 접속 제한을 수행합니다. 해당 파일 작성시 다음과 같은 규칙을 따릅니다.

  • #(주석)문자 뒤의 내용은 무시
  • 빈줄 무시
  • 백슬래시(\)로 줄을 끝내면 레코드 다음줄로 계속 작성 가능
  • 공백 및 탭으로 필드 구분

📌 HBA란 Host-Base Authentication 의 줄임말로 호스트 기반 인증을 나타냅니다.

 

pg_hba.conf Sample

# Unix 도메인 소켓을 통한 연결로 md5 인증방식으로 모든 데이터베이스 연결을 허용합니다.
# TYPE  DATABASE        USER            ADDRESS                 METHOD
local   all             all                                     md5        

# 클라이언트의 IP 주소가 ::1/128의 경우 md5 인증방식으로 모든 데이터베이스 연결을 허용합니다.
# 단, Replication은 제외됩니다.
# TYPE  DATABASE        USER            ADDRESS                 METHOD
host    all             all             ::1/128                 md5    

# 클라이언트의 IP 주소가 127.0.0.1/32의 경우 md5 인증방식으로 모든 데이터베이스 연결을 허용합니다.
# 단, Replication은 제외됩니다.
# TYPE  DATABASE        USER            ADDRESS                 METHOD
host    all             all             127.0.0.1/32            md5     

📌 127.0.0.1/32 : 로컬 루프백 주소로 자신을 나타내는 IP주소입니다. (localhost와 동일) ::1/128 : IPv6의 로컬 루프백 주소

 

레코드 설정 형식

pg_hba.conf 파일의 하나의 레코드는 5개의 필드로 구성이 됩니다. 각각의 필드가 의미하는 내용과 선택 가능한 옵션은 다음과 같습니다.

TYPE          DATABASE  USER  ADDRESS  METHOD
------------- --------- ----- -------- -----------------
local         DATABASE  USER           METHOD  [OPTIONS]
host          DATABASE  USER  ADDRESS  METHOD  [OPTIONS]
hostssl       DATABASE  USER  ADDRESS  METHOD  [OPTIONS]
hostnossl     DATABASE  USER  ADDRESS  METHOD  [OPTIONS]
hostgssenc    DATABASE  USER  ADDRESS  METHOD  [OPTIONS]
hostnogssenc  DATABASE  USER  ADDRESS  METHOD  [OPTIONS]

TYPE

local, host, hostssl, hostnossl, hostgssenc, hostnogssenc 중 하나를 설정합니다.

  • local은 Unix 도메인 소켓을 사용하여 연결하는 경우에 사용 됩니다.
  • host, hostssl, hostnossl, hostgssenc, hostnogssenc는 모두 TCP/IP를 사용하여 연결하는 경우에 사용됩니다.

DATABASE

연결할 수 있는 Database 이름을 지정합니다. 복수 지정의 경우 쉼표(,)로 구분하여 작성합니다.

  • all로 지정한 경우 복제(Replication)을 제외한 모든 Database를 의미합니다.
  • sameuser로 지정한 경우 사용자 이름과 동일한 이름의 Database를 의미합니다.
  • samerole로 지정한 경우 연결하는 사용자가 연결하는 Database와 동일한 이름의 Role 구성원이어야 합니다.
  • replication으로 지정한 경우 복제 권한이 있는 사용자에 의한 복제 연결을 허용합니다.
  • Database 이름을 포함하는 별도의 파일은 @파일이름 으로 지정할 수 있습니다.

USER

연결할 수 있는 Role을 지정합니다. 복수 지정의 경우 쉼표(,)로 구분하여 작성합니다.

  • all로 지정한 경우 모든 Role를 의미합니다.
  • Database 사용자나 Group이름 앞에 +를 붙이면, 해당 User나 Group이 사용되고 있는 Role을 의미합니다.
  • Role 이름을 포함하는 별도의 파일은 파일 이름 앞에 @파일이름 으로 지정할 수 있습니다.

ADDRESS

연결할 수 있는 Host 이름 또는 IP 주소 범위를 지정합니다. IP주소는 IPv4의 경우 10.10.30.160/24 와 같은 형식으로, IPv6의 경우 fe80::a4e8:f42d:2556:f68a/96과 같은 형식으로 지정합니다. 또한, 별도의 Honstname(별칭)을 지정할 수 있습니다.

  • all로 지정한 경우 모든 IP 주소를 의미합니다.
  • samehost로 지정한 경우 PostgreSQL이 기동중인 서버와 동일한 IP 주소를 의미합니다.
  • samenet으로 지정한 경우 PostgreSQL 서버와 동일한 네트워크를 의미합니다.

METHOD

데이터베이스 연결 시 인증방법을 지정합니다.

METHOD 설명
trust 모든 Role에 암호없이 연결 가능
reject 연결 거부
scram-sha-256 encrypted password
가장 안전한 암호 인증이지만 일부 클라이언트에서 미지원
md5 암호인증
password 암호를 평문으로 전송하는 암호 인증
gss GSSAPI를 이용한 Single SignOn.
한 번의 로그인으로 여러개의 서비스들을 이용 가능
** GSSAPI : 인증 자체는 안전하지만, SSL을 사용하지 않을 경우 데이터베이스 연결을 통해 전송된 데이터는 암호화되지 않은 상태로 전송
sspi SSPI를 이용한 Single SignOn
** SSPI : 보안 인증을 위한 Windows 기술
ident Ident 인증. ident.conf를 통한 인증
peer Peer 인증
Client OS User를 가져와 DB user로 사용. 로컬 연결에서만 지원.
ldap ldap 인증 메커니즘 사용
radius RADIUS 인증 메커니즘 사용. password Method와 유사하게 작동
cert SSL Client 인증서를 사용한 인증
pam PAM 인증 메커니즘 사용. password Method와 유사하게 작동
** PAM : Pluggable Authentication Modules
bsd BSD 인증 메커니즘 사용. password Method와 유사하게 작동

댓글