본문 바로가기
① IT 스타트 (IT Competence)/Database, 데이터베이스

PostgreSQL에서 접근제어 설정

by ->^_^<- 2025. 7. 29.
반응형

pg_hba.conf는 PostgreSQL에서 클라이언트 접근 제어를 설정하는 핵심 파일
---

📌 pg_hba.conf 개요

위치: 일반적으로 PostgreSQL 데이터 디렉토리 하위에 위치
예: /etc/postgresql/<버전>/main/pg_hba.conf, 또는 /var/lib/pgsql/data/pg_hba.conf

HBA = Host Based Authentication

서버를 재시작 또는 SELECT pg_reload_conf(); 명령으로 재적용 필요



---

🧱 파일 구성 형식

# TYPE   DATABASE   USER   ADDRESS          METHOD

예시

# 로컬접속(local socket)
local   all        all                    trust

# IPv4 주소로 접근 허용 (모든 사용자)
host    all        all    192.168.1.0/24   md5

# 특정 사용자에게만 접근 허용
host    mydb       alice  10.0.0.5/32      scram-sha-256


---

📘 각 필드 설명

필드 설명

TYPE local, host, hostssl, hostnossl 등
DATABASE all 또는 특정 DB 이름
USER all 또는 특정 사용자 이름
ADDRESS IPv4, IPv6, 또는 CIDR 형식
METHOD 인증 방식: trust, md5, scram-sha-256, peer, reject 등



---

🔐 주요 인증 방법

방식 설명

trust 인증 없이 허용 (개발용 또는 로컬 테스트용만!)
md5 비밀번호 해시 기반 인증
scram-sha-256 PostgreSQL 10+부터 지원하는 더 안전한 인증
peer 유닉스 OS 사용자 기반 인증 (local only)
reject 접근 거부



---

🔧 설정 예시

1. 모든 IP에서 모든 DB에 접근 허용 (비추)

host    all    all    0.0.0.0/0    md5

2. 사내망(192.168.0.0/16)에서만 접근 허용

host    all    all    192.168.0.0/16    scram-sha-256

3. 특정 DB, 특정 사용자만 허용

host    prod_db   admin_user   10.0.0.10/32    scram-sha-256


---

🔄 변경 사항 적용

설정 파일 수정 후 아래 명령 중 하나를 실행합니다:

# PostgreSQL 재시작
sudo systemctl restart postgresql

# 설정 재적용 (무중단)
psql -U postgres -c "SELECT pg_reload_conf();"


---

🧪 확인 팁

접속 실패 시 PostgreSQL 로그에서 상세 원인을 확인

pg_hba.conf는 첫 번째로 매칭되는 규칙이 적용됨 (위에 올수록 우선순위 높음)



---

✅ 보안 권장사항

1. 외부 접근 시 반드시 md5 또는 scram-sha-256 사용


2. IP 대역 제한 설정 (0.0.0.0/0 지양)


3. 불필요한 trust, peer 방식 사용 금지


4. 인증 실패 로그 모니터링


5. pg_ident.conf와 함께 OS 사용자

반응형

'① IT 스타트 (IT Competence) > Database, 데이터베이스' 카테고리의 다른 글

Query Folding  (0) 2026.04.16