PostgreSQL 문제 해결
본 문서는 PostgreSQL 서비스 관련 문제를 해결하기 위한 방법을 설명합니다.
PostgreSQL 로그에 사용자 비밀번호 노출
CREATE, ALTER와 같은 명령어를 사용할 때 PostgreSQL 로그에 사용자의 비밀번호와 같은 주요 정보가 일반 텍스트로 노출됩니다.
비밀번호 노출 예시
# CREATE 명령어를 사용합니다.
postgres=> CREATE ROLE test_kc_mapo WITH PASSWORD ‘test0701’;
#로그를 조회하면 패스워드가 그대로 노출됩니다.
2025-07-01 12:00:00 UTC [12345] LOG: statement: CREATE ROLE test_kc_mapo WITH PASSWORD 'test0701'
▶️ 해결 방법: 보안 위험을 방지하기 위해 비밀번호 관련 작업은 SQL 명령문이 아닌 클라이언트에서 동작하는 \password
사용을 권장드립니다.
-
사용자 비밀번호 관련 작업에
\password
명령어를 사용합니다.\password 사용 예시# 1. 'test_kc_mapo' 계정을 생성합니다. ALTER 로그를 확인하기 위해 로그인 권한을 부여하지 않습니다.
postgres=> CREATE ROLE test_kc_mapo NOLOGIN;CREATE ROLE
#2. `\password` 를 활용하여 비밀번호를 변경하고 로그인 권한을 부여합니다.
postgres=> \password test_kc_mapo
Enter new password:
Enter it again:
postgres=> ALTER ROLE test_kc_mapo LOGIN;
ALTER ROLE
postgres=> -
변경 작업에 대한 로그를 확인합니다.
로그 조회 예시# 암호화 방식은 PostgreSQL마다 상이하나 기본적으로 패스워드는 암호화되어 노출되지 않습니다.
2025-07-01 12:00:29 UTC [12345] LOG: statement: CREATE ROLE test_kc_mapo NOLOGIN;
2025-07-01 12:00:48 UTC [12345] LOG: statement: ALTER USER test_kc_mapo PASSWORD '*******'
2025-07-01 12:01:06 UTC [12345] LOG: statement: CREATE ROLE test_kc_mapo LOGIN;