목차

PostgreSQL 사용자 계정 접근설정

PostgreSQL의 클라이언트 인증 설정 파일인 pg_hba.conf는 PostgreSQL 서버 보안의 핵심적인 부분입니다. “HBA”는 “Host-Based Authentication”의 약자입니다.

1. 파일의 주요 역할

이 파일은 다음과 같은 중요한 사항들을 제어합니다:

2. 레코드(규칙)의 형식

pg_hba.conf 파일의 각 레코드(규칙 한 줄)는 다음 중 하나의 형식으로 작성됩니다. 대문자로 표시된 부분은 실제 값으로 대체되어야 합니다.

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] (PostgreSQL 12부터 추가)
hostnogssenc DATABASE USER ADDRESS METHOD [OPTIONS] (PostgreSQL 12부터 추가)

3. 레코드의 필드 설명

3.1. 첫 번째 필드: 연결 유형 (Connection Type)

연결 유형은 클라이언트가 서버에 접속하는 방식을 지정합니다.

3.2. DATABASE 필드

이 규칙이 적용될 데이터베이스를 지정합니다.

3.3. USER 필드

이 규칙이 적용될 PostgreSQL 사용자 이름을 지정합니다.

3.4. ADDRESS 필드 (''local'' 연결 유형 제외)

이 규칙과 일치하는 클라이언트 호스트(들)를 지정합니다.

3.5. METHOD 필드

클라이언트 인증 방법을 지정합니다.

주의: password 방식은 암호를 평문으로 전송하므로, md5 또는 scram-sha-256 사용이 강력히 권장됩니다.

3.6. [OPTIONS] 필드 (선택 사항)

NAME=VALUE 형식으로 인증 방법에 따른 추가 옵션을 설정합니다. 사용 가능한 옵션은 선택된 METHOD에 따라 다릅니다. 예를 들어, ldap 인증의 경우 LDAP 서버 주소, 바인딩 DN 등을 옵션으로 지정할 수 있습니다. 자세한 내용은 PostgreSQL 공식 문서의 “Client Authentication” 섹션을 참조해야 합니다.

4. 이름에 특수 문자가 포함된 경우

데이터베이스 이름이나 사용자 이름에 공백, 쉼표, 따옴표 또는 기타 특수 문자가 포함된 경우, 해당 이름을 큰따옴표(“”)로 묶어야 합니다.
키워드인 “all”, “sameuser”, “samerole”, “replication”을 큰따옴표로 묶으면 특수한 의미를 잃고 해당 문자열 자체를 이름으로 간주하게 됩니다. (예: “all”all이라는 이름의 데이터베이스나 사용자를 의미하게 됨)

5. 설정 파일 변경 사항 적용

pg_hba.conf 파일은 다음 경우에 다시 읽힙니다:

따라서 파일을 편집한 후에는 위 방법 중 하나를 사용하여 서버가 변경 사항을 인식하도록 해야 합니다.

참조