상세 컨텐츠

본문 제목

[PostgreSQL] pg_hba.conf 설정

DataBase

by cookieangelo 2024. 3. 15. 10:00

본문

pg_hba.conf 파일은 PostgreSQL 서버에 클라이언트 접속을 허용하는 규칙을 정의하는 설정 파일이다.

이 파일에는 어떤 유형의 연결을 허용할지, 어떤 클라이언트를 허용할지, 어떤 데이터베이스를 접근할 수 있는지 등의 정보를 포함하고 있다. 이 설정에 따라 클라이언트의 접속이 허용되거나 거부된다. 따라서 이 파일의 설정은 매우 중요하며, 조심스럽게 다루어야 한다.

**pg_hba.conf**는 PostgreSQL 데이터베이스 서버에서 클라이언트 연결을 허용 또는 거부하기 위한 설정 파일이다. 이 파일은 PostgreSQL 클라이언트가 데이터베이스 서버에 접속할 때 인증 규칙을 정의한다.

pg_hba.conf 파일은 PostgreSQL 클러스터의 데이터 디렉터리 내에 위치하며, 주로 /etc/postgresql/{버전}/main/ (Linux 기반 시스템)이나 C:\\Program Files\\PostgreSQL\\{버전}\\data\\ (Windows 기반 시스템) 디렉터리에 있습니다. **{버전}**은 사용 중인 PostgreSQL 버전에 따라 다르다.

일반적으로 pg_hba.conf 파일의 각 줄은 호스트, 사용자, 데이터베이스 및 인증 방법에 대한 규칙을 지정한다. 각 규칙은 다음과 같은 형식을 가지고 있다.

# TYPE  DATABASE        USER            ADDRESS                 METHOD
  local   all             all                                     peer
  host    all             all             127.0.0.1/32            md5
  host    all             all             ::1/128                 md5

 

  • TYPE: 규칙의 타입으로, **local**은 로컬 접속을 나타내고 **host**는 원격 접속을 나타낸다.
  • DATABASE: 접속을 허용 또는 거부할 데이터베이스 이름 또는 "all"로 모든 데이터베이스를 나타낸다.                        "replication" 값은 복제 연결이 요청되는 경우 지정한다. 복제 연결은 특정 데이터베이스를 지정하지는 않는다.
  • USER: 접속을 허용 또는 거부할 사용자 이름 또는 "all"로 모든 사용자를 나타낸다.
  • ADDRESS: 클라이언트 주소를 나타냅니다. IPv4 또는 IPv6 주소 형식을 사용할 수 있다.
  • METHOD: 인증 방법으로, 예를 들어 **md5**는 패스워드 기반의 MD5 암호화를 사용하며, **peer**는 운영 체제 사용자와 PostgreSQL 사용자가 동일한 이름일 때만 접속을 허용한다.

이 파일을 수정하여 데이터베이스 서버의 보안 및 접근 규칙을 조정할 수 있다. 수정 후에는 PostgreSQL 서버를 재시작하여 변경 사항을 적용해야 한다.

Method 종류
설정값 설명
trust 모든 역할 이름에 암호없이 연결 가능
reject 연결을 거부
scram-sha-256 암호 인증 가장 안전하지만 일부 클라이언트에서 지원되지 않음
md5 암호 인증
password 암호 인증 암호를 평문으로 전송
gss GSSAPI를 이용한 싱글 사인온
sspi SSPI를 이용한 싱글 사인온
ident Ident 인증
peer Peer 인증
ldap LDAP 인증
radius RADIUS 인증
cert SSL 클라이언트 인증서를 사용한 인증
pam PAM 인증
bsd BSD 인증

 

  1. trust:
    • 가장 무제한적인 메서드로, 모든 연결을 허용.
    • 사용 시 주의가 필요하며, 보안상 취약성을 초래할 수 있다.
  2. reject:
    • 모든 연결을 거부. 주로 특정 호스트 또는 네트워크를 차단할 때 사용.
  3. md5:
    • MD5 암호화를 사용하여 연결을 인증.
    • 일반적으로 비밀번호 기반의 인증에 사용되며, 보안적으로 더 강력함.
  4. password:
    • 암호를 사용하여 연결을 인증합니다. **md5**와 유사하지만, 암호를 평문으로 저장함.
  5. scram-sha-256:
    • SCRAM-SHA-256 알고리즘을 사용하여 연결을 인증.
    • 더 안전한 암호화 방법을 지원하며, PostgreSQL 10 이후에 도입되었다.
  6. cert:
    • 클라이언트 증명서를 사용하여 인증.
    • SSL/TLS 연결을 통해 클라이언트 증명서를 요구할 수 있다.
  7. peer:
    • 운영 체제 사용자와 데이터베이스 사용자가 일치하는 경우에만 연결을 허용.
    • 로컬 연결에서 유용하며, 일반적으로 Unix 소켓을 통한 연결에서 사용.

관련글 더보기