본문 중간의 쿠팡 추천 상품 구매시 쿠팡 파트너스에서 일정액의 수수료를 제공받습니다.

PostgreSQL password_encryption 기준 정리
password_encryption은 PostgreSQL에서 새 비밀번호를 저장할 때 어떤 해시 알고리즘을 쓸지 결정하는 설정이다. 2026년 6월 5일 기준 PostgreSQL 공식 문서의 current 버전은 18.4이며, 이 문서에서는 password_encryption의 기본값을 scram-sha-256로 안내한다.
이 설정은 로그인 자체를 허용할지 말지를 직접 정하는 값은 아니지만, 이후 pg_hba.conf에서 선택하는 인증 방식과 실제 호환성에 영향을 준다. 운영 환경에서는 구형 클라이언트 호환이 필요한지, MD5를 언제까지 유지할지, 비밀번호를 다시 설정해야 하는 시점이 언제인지가 핵심 판단 기준이다.
password_encryption은 무엇을 바꿀까?
공식 문서 기준으로 password_encryption은 CREATE ROLE 또는 ALTER ROLE로 비밀번호를 지정하는 시점에만 적용된다. 즉 값을 바꾼다고 기존 계정의 저장된 비밀번호 해시가 자동으로 재변환되지는 않는다.
현재 지원되는 값은 scram-sha-256와 md5다. 다만 current 문서는 기본값이 scram-sha-256이고, MD5로 저장된 비밀번호 지원은 deprecated이며 향후 릴리스에서 제거될 예정이라고 명시한다.
기본값은 무엇이고 왜 중요할까?
| 항목 | 공식 문서 기준 | 실무 의미 |
|---|---|---|
| 기본값 | scram-sha-256 |
새로 설정하는 비밀번호는 기본적으로 SCRAM 해시로 저장된다. |
| 레거시 값 | md5 |
구형 클라이언트 호환이 필요할 때만 제한적으로 고려한다. |
| 적용 시점 | 비밀번호를 새로 저장할 때 | 설정만 바꾸고 비밀번호를 재설정하지 않으면 기존 해시는 그대로 남는다. |
| 추가 관련 설정 | scram_iterations |
SCRAM 저장 시 반복 횟수를 높일 수 있지만, 기존 비밀번호에는 소급 적용되지 않는다. |
운영자가 가장 자주 놓치는 부분은 적용 시점이다. 서버 설정을 scram-sha-256로 바꿔도, 이미 MD5로 저장된 계정은 비밀번호를 다시 설정하기 전까지 그대로 MD5 해시를 유지할 수 있다.
대부분의 환경에서 어떤 값을 고르면 될까?
PostgreSQL 공식 문서는 비밀번호 기반 인증 방식 중 scram-sha-256를 현재 제공되는 방식 가운데 가장 안전한 선택으로 설명한다. 따라서 일반적인 신규 구축이나 운영 환경에서는 password_encryption = 'scram-sha-256'를 기본값으로 유지하는 편이 자연스럽다.
예외는 구형 드라이버나 오래된 클라이언트 라이브러리가 아직 SCRAM을 지원하지 않는 경우다. 이때는 인증 실패를 피하려고 MD5를 잠시 유지할 수 있지만, current 문서가 MD5 저장 비밀번호 지원의 제거 예정 상태를 명확히 밝히고 있으므로 장기 기본값으로 보기는 어렵다.
pg_hba.conf와는 어떻게 연결될까?
password_encryption은 저장 형식을 정하고, pg_hba.conf는 접속 시 어떤 인증 방법을 요구할지 정한다. 두 설정은 분리되어 있지만 실제 접속 결과에서는 함께 작동한다.
- 비밀번호가 SCRAM 형식으로 저장돼 있으면
scram-sha-256인증을 사용할 수 있다. - 문서에 따르면
pg_hba.conf에md5를 적어도, 저장된 비밀번호가 SCRAM 형식이면 SCRAM 기반 인증이 자동 선택될 수 있다. - 비밀번호가 MD5 형식으로 저장돼 있으면
scram-sha-256인증 전용 구성으로는 바로 전환할 수 없다.
즉 서버 설정 파일 하나만 바꾸는 방식으로 전환이 끝나지 않는다. 저장된 비밀번호 형식과 pg_hba.conf의 인증 방식이 서로 맞아야 한다.
MD5에서 SCRAM으로 바꿀 때 순서는?
공식 문서의 전환 설명은 비교적 단순하다. 먼저 사용 중인 클라이언트 라이브러리가 SCRAM을 지원하는지 확인하고, 그다음 postgresql.conf에서 password_encryption = 'scram-sha-256'를 설정한다. 이후 각 사용자 비밀번호를 다시 설정하고, 마지막으로 pg_hba.conf의 인증 방식도 scram-sha-256로 정리한다.
이 순서가 중요한 이유는 중간 단계 호환성 때문이다. 비밀번호를 다시 저장하기 전까지는 기존 해시가 남아 있고, 드라이버가 SCRAM을 지원하지 않으면 인증 실패가 발생할 수 있다.
scram_iterations는 같이 봐야 할까?
current 문서는 scram_iterations의 기본값을 4096으로 설명한다. 반복 횟수를 높이면 저장된 비밀번호 해시에 대한 brute-force 공격 저항성이 커지지만, 인증 시 계산 비용도 증가한다.
여기서도 적용 시점은 같다. 이 값을 바꿔도 기존 SCRAM 비밀번호에는 영향이 없고, 새로 비밀번호를 설정한 계정에만 새 반복 횟수가 반영된다. 그래서 반복 횟수 조정은 계정 비밀번호 갱신 계획과 같이 보는 편이 맞다.
자주 헷갈리는 질문
1. 설정만 바꾸면 기존 계정도 바로 SCRAM이 될까?
아니다. 공식 문서 기준으로 password_encryption은 비밀번호를 저장하는 시점에 적용된다. 기존 계정을 SCRAM으로 전환하려면 비밀번호를 다시 설정해야 한다.
2. md5를 쓰면 평문 비밀번호가 서버에 저장될까?
그렇지는 않다. 문서는 MD5도 해시 형태로 저장된다고 설명한다. 다만 current 문서는 MD5 알고리즘 자체가 더 이상 충분히 안전하지 않다고 보고, MD5 저장 비밀번호 지원을 deprecated 상태로 다룬다.
3. SCRAM이면 네트워크도 자동으로 암호화될까?
아니다. SCRAM은 비밀번호 인증 방식에 대한 이야기다. 네트워크 전송 암호화는 SSL/TLS나 GSSAPI 암호화 같은 별도 설정이 담당한다.
FAQ
Q. 신규 PostgreSQL 서버라면 굳이 값을 바꿔야 할까?
current PostgreSQL 18.4 문서 기준 기본값이 이미 scram-sha-256이므로, 특별한 레거시 호환 요구가 없다면 그대로 두는 편이 무난하다.
Q. 구형 클라이언트가 하나라도 있으면 전환을 미뤄야 할까?
적어도 그 클라이언트가 SCRAM을 지원하는지 확인하기 전에는 일괄 전환을 바로 진행하기 어렵다. 공식 문서도 오래된 클라이언트가 SCRAM을 지원하지 않을 수 있다고 설명한다.
Q. 보안만 보면 md5를 계속 유지할 이유가 있을까?
공식 문서 기준으로는 호환성 전환 구간을 제외하면 설득력이 크지 않다. current 문서에서 SCRAM을 더 안전한 방식으로 설명하고, MD5 저장 비밀번호 지원은 제거 예정이라고 밝히기 때문이다.
정리
password_encryption은 PostgreSQL의 비밀번호 저장 형식을 결정하는 설정이고, 2026년 6월 5일 기준 current PostgreSQL 18.4 문서의 기본값은 scram-sha-256다. 실무에서 중요한 기준은 신규 서버인지, 구형 클라이언트 호환이 필요한지, 기존 계정 비밀번호를 다시 설정할 수 있는지 세 가지다.
신규 구축은 SCRAM을 기본값으로 두고, 기존 환경은 드라이버 호환 확인 후 비밀번호 재설정과 pg_hba.conf 정리를 함께 진행하는 방식이 공식 문서와 가장 잘 맞는다.
참고 자료
'프로그래밍 > 서버, DBMS' 카테고리의 다른 글
| PostgreSQL listen_addresses 기준 정리 (0) | 2026.06.08 |
|---|---|
| PostgreSQL sslmode 기준 정리 (0) | 2026.05.31 |
| PostgreSQL pg_hba.conf 인증 기준 정리 (0) | 2026.05.26 |
| PostgreSQL wal_level 설정 기준 정리 (0) | 2026.05.23 |
| PostgreSQL synchronous_commit은 언제 꺼도 될까? off, local, remote_write 차이 정리 (0) | 2026.05.19 |





