PostgreSQL을 실행하는 내 Amazon RDS 인스턴스에 대한 로그인 시도 실패를 추적하려면 어떻게 해야 합니까?

최종 업데이트 날짜: 2019년 5월 9일

내 Amazon RDS(Amazon Relational Database Service) 인스턴스에 대한 연결 실패 횟수를 추적해야 합니다. PostgreSQL을 실행하는 내 Amazon RDS DB 인스턴스에 대한 로그인 실패를 추적하려면 어떻게 해야 합니까?

​해결 방법

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_connectionslog_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 유틸리티를 사용하여 실패한 연결을 검색합니다.

$ 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 확장을 사용하여 이러한 로그를 외부 테이블 형태로 액세스할 수도 있습니다.