AWS

[AWS] RDS Log Generation (General, slow query, audit logs)

안녕하세요. ManVSCloud 김수현입니다.

오늘은 오랜만에 AWS에 대한 포스팅입니다.
최근 ISMS-P를 준비가 필요하여 RDS에서 로그를 남기는 방법에 대한 질문을 받은 적이 있어 이를 블로그로도 공유하고자 올립니다.


RDS Log

RDS 생성 또는 수정시 체크할 수 있는 로그 내보내기 옵션입니다.
생각보다 이 기능이 로그를 생성하는 옵션인 것으로 아시는 분들이 있었습니다.
위 내보내기를 전부 체크하여도 에러 로그만 생성되고 나머지 로그가 생성이 되지 않는 것을 확인할 수 있습니다. (에러 로그는 Default가 생성이라 따로 설정하지 않아도 생성됩니다.)

이 기능은 말 그대로 로그를 CloudWatch Logs로 게시할 수 있도록 내보내는 옵션이며
로그를 생성하는 옵션은 따로 존재합니다.

일반 로그와 느린 쿼리 로그를 생성하기 위해서는 아래 첨부된 이미지와 같이 파라미터 그룹 수정이 필요합니다.

일반 로그는 general_log를 검색하면 나오고 슬로우 쿼리는 slow_query_log라고 검색하면 나옵니다.

두 값을 1로 변경 해줍시다. (1로 설정해야 로그가 생성됩니다.)

현재 운영중인 RDS 인스턴스의 파라미터 그룹이 default 파라미터로 설정되어 있다면 사용자 지정 파라미터 그룹을 생성하여 파라미터 수정 및 파라미터 그룹 수정을 진행합니다.
(RDS 인스턴스 [수정]을 이용하여 파라미터 그룹을 변경할 수 있습니다.)

여기서 중요한 점은 또 Down Time의 여부겠죠.
파라미터 그룹을 변경하게 될 경우 또는 파라미터 값을 수정하게 될 경우 재부팅이 필요하여 Down Time이 발생하게 될까요?

정답은 아래와 같습니다.

그렇다면 동적 파라미터와 정적 파라미터를 어떻게 구분하느냐?

파라미터 그룹 내에 파라미터들을 보면 [적용 유형]이 있습니다.
Dynamic이 동적 파라미터, Static이 정적 파라미터로 수정이 필요한 파라미터를 검색하여
해당하는 파라미터의 값이 수정될 경우 재부팅이 필요한가?를 알 수 있으니 이를 확인하여 적절한 시간에 작업을 진행할 수 있습니다.


RDS Audit Log

파라미터 그룹까지 설정하였습니다. 하지만 파라미터 그룹에서 감사 로그는 찾을 수 없습니다. 그 이유로 감사 로그는 파라미터 그룹이 아닌 옵션 그룹에서 설정이 필요하기 때문입니다.

옵션 그룹에서 감사 로그를 설정 해주려면 default 옵션 그룹에서 새로 생성한 옵션 그룹으로 변경이 필요합니다.

새로 생성한 옵션 그룹에서 위와 같이 MARIADB_AUDIT_PLUGIN 옵션을 추가하여 설정할 수 있습니다. 크게 사용하실만한 옵션에 대해서만 간단하게 설명하자면 다음과 같습니다.

  • SERVER_AUDIT_FILE_ROTATE_SIZE : 로그 파일 용량 크기를 제한합니다. (1–1000000000)
    최대 1GB까지 설정 가능하며 Default 값은 1000000 입니다.
  • SERVER_AUDIT_FILE_ROTATIONS : 로그 파일의 로테이션 수를 설정합니다. (0-100)
    최대 100개의 파일까지 생성가능하며 Default값은 9입니다.
  • SERVER_AUDIT_EVENTS : 특정 이벤트 유형으로 제한하여 로그를 남깁니다.
    이를 설정하지 않을 경우 모든 이벤트 유형을 남기게 됩니다.
    Default 값은 CONNECT, QUERY 입니다.
  • SERVER_AUDIT_INCL_USERS : SERVER_AUDIT_EXCL_USERS보다 우선 순위가 높으며 기록할 사용자를 추가합니다. 또한 값이 없을 경우 로깅에 모든 사용자를 로깅합니다.(SERVER_AUDIT_INCL_USERS 값에 admin을 추가하고 SERVER_AUDIT_EXCL_USERS 값이 비어있다면 admin 계정에 대한 로그만 남깁니다.)
  • SERVER_AUDIT_EXCL_USERS : 값에 사용자를 추가할 경우 해당 사용자를 로그에 기록이 남지않습니다. (로그 예외 처리 계정 추가라고 보면 이해가 쉽습니다.)
    값이 없을 경우 로깅에 예외 처리할 사용자가 없다라는 의미가 됩니다.
  • SERVER_AUDIT_QUERY_LOG_LIMIT : 쿼리 문자열 길이를 제한합니다. (0–2147483647)
    Default값은 1024입니다.

옵션 변경 및 옵션 그룹 변경이 완료되었다면 RDS 로그에서 아래 이미지와 같이 Audit.log가 생성되는 것을 확인할 수 있습니다.

Cloudwatch logs로 내보내기 설정을 하게될 경우 CloudWatch 로그 이벤트에서도 로그를 자세히 확인할 수 있습니다.
DB에서 show databases 및 show tables를 입력해보았는데 Audit 로그에 그대로 남았습니다.


Aurora DB, Using advanced auditing

Aurora MySQL에서는 RDS MySQL과 다르게 고급 감사를 사용할 수 있습니다.
설정 방법은 크게 어렵지 않아 어떠한 고급 감사 기능이 있는지 링크만 남겨두도록 하겠습니다.


Personal Comments

오늘은 오랜만에 AWS의 RDS 로그 생성 방법에 대해 알아보았습니다.

아무래도 감사 로그를 남기는 부분은 ISMS-P를 준비하실 때 필요한 부분이니 이 부분은 어느정도 도움이 되시리라 생각합니다.

긴 글 읽어주셔서 감사합니다.

Previous Post Next Post

You Might Also Like

No Comments

Leave a Reply