PostgreSQL을 실행하는 Amazon RDS DB 인스턴스에 대한 로그인 실패를 추적하려면 어떻게 해야 합니까?
최종 업데이트 날짜: 2019년 12월 11일
해결 방법
PostgreSQL은 매시간 새로운 로그 파일을 생성합니다. PostgreSQL을 실행하는 DB 인스턴스에 대한 로그인 시도 실패를 추적하려면 해당 DB 인스턴스에 연결된 사용자 지정 파라미터 그룹에서 log_connections 파라미터를 활성화합니다. 자세한 내용은 DB 파라미터 그룹의 파라미터 수정을 참조하세요. log_connections 파라미터를 활성화한 후 사용자가 잘못된 자격 증명으로 DB 인스턴스에 로그인하려고 하면 실패한 시도가 로그에 기록됩니다(예: error/postgresql.log.2018-04-19-10).
실패한 로그인 시도에 대한 예는 다음을 참조하십시오.
2018-04-19 10:12:31 UTC:123.45.67.8(6789):[unknown]@[unknown]:[12507]:LOG: connection received: host=123.45.67.8port=12345
2018-04-19 10:12:31 UTC:123.45.67.8(6789):test_user@Test_DB:[12507]:FATAL: password authentication failed for user "test_user"
또한 PostgreSQL log_connections를 사용하여 PostgreSQL을 실행하는 DB 인스턴스에 대한 성공적인 로그인 시도도 기록할 수 있습니다.
성공적인 로그인 시도에 대한 예는 다음을 참조하세요.
2018-04-19 10:19:20 UTC:123.45.67.8(6789):[unknown]@[unknown]:[17196]:LOG: connection received: host=123.45.67.8 port=12345
2018-04-19 10:19:20 UTC:123.45.67.8(6789):test_user@Test_DB:[17196]:LOG: connection authorized: user=test_user database=Test_DB SSL enabled (protocol=xxxx, cipher=xxxx, compression=off)
log_connections 및 log_disconnections 파라미터를 사용하여 사용자 세션의 지속 시간을 기록할 수 있습니다.
세션 지속 시간의 예는 다음을 참조하세요.
2018-04-19 10:19:43 UTC:123.45.67.8(6789):test_user@Test_DB:[17196]:LOG: disconnection: session time: 0:00:23.753 user=test_user database=Test_DB host=123.45.67.8 port=12345
참고: 클라이언트 시스템의 IP 주소는 123.45.67.8이며 6789는 PostgreSQL 데이터베이스 프로세스에 제공된 PID(프로세스 ID)입니다.
로그 파일 구문 분석
AWS CLI(AWS 명령줄 인터페이스) 또는 Amazon RDS 콘솔을 사용하여 로그를 다운로드합니다. 그런 다음 grep 유틸리티를 사용하여 실패한 연결을 검색합니다.
참고: AWS CLI 명령을 실행할 때 오류가 발생하는 경우 최신 버전의 AWS CLI를 사용하고 있는지 확인하세요.
$ grep -B 1 "authentication failed" postgresql.log.2018-04-19-10
2018-04-19 10:12:31 UTC:123.45.67.8(6789):[unknown]@[unknown]:[12507]:LOG: connection received: host=123.45.67.8port=12345
2018-04-19 10:12:31 UTC:123.45.67.8(6789):test_user@Test_DB:[12507]:FATAL: password authentication failed for user "test_user"
참고: - B 1 파라미터는 검색 중인 패턴과 일치하는 줄의 선행 줄도 표시하도록 grep에 지시합니다. 이 예에 사용된 패턴은 authentication failed입니다.
PostgreSQL log_fdw 확장을 사용하여 이러한 로그를 외부 테이블 형태로 액세스할 수도 있습니다. PostgreSQL 로그 파일을 보존 기간보다 오래 보관하려는 경우 PostgreSQL 9.6.6 이상 버전 및 10.4 이상 버전을 사용하고 있다면 Amazon RDS PostgreSQL 로그를 CloudWatch Logs로 내보낼 수 있습니다.