본문 바로가기
데브옵스 이야기

Terraform으로 AWS RDS MySQL 8.0에 감사 로그(Audit Log) 설정하기

by lakescript 2025. 5. 4.
728x90

 

  

Audit log 파라미터 설정 시 발생하는 오류

기본적으로 terraform으로 AWS RDS의 MySQL을 구성했다면, 아래와 같이 감시 로그(audit_log)를 설정합니다.

# 감사 로그 이벤트 설정
parameter {
    name  = "server_audit_events"
    value = "CONNECT,QUERY"
}

# 감사 로그 제외 사용자(rdsadmin)
parameter {
    name  = "server_audit_excl_users"
    value = "rdsadmin"
}
...

 

그러나 위와 같은 파라미터 설정은 MySQL 8.0에서는 적용되지 않아, 아래와 같은 에러가 발생합니다.

Error: Error modifying DB Parameter Group: InvalidParameterValue: Could not find parameter with name: server_audit_logging

 
즉, server_audit_logging 파라미터가 MySQL 8.0 파라미터 그룹에서 지원되지 않는 것을 확인할 수 있습니다.
 
 

Audit log 설정을 위한 Option Group 사용

https://docs.aws.amazon.com/ko_kr/AmazonRDS/latest/UserGuide/USER_LogAccess.MySQL.LogFileSize.html#USER_LogAccess.MySQL.Auditlog

 

RDS for MySQL 데이터베이스 로그 개요 - Amazon Relational Database Service

이 페이지에 작업이 필요하다는 점을 알려 주셔서 감사합니다. 실망시켜 드려 죄송합니다. 잠깐 시간을 내어 설명서를 향상시킬 수 있는 방법에 대해 말씀해 주십시오.

docs.aws.amazon.com

 
 
위의 공식문서를 참고해보면 감사로그를 활성화하려면 MARIADB_AUDIT_PLUGIN 옵션 그룹을 통해 옵션으로 감사 로그를 활성화해야 합니다.
 

옵션 값 자세히 보기

옵션명 설명
SERVER_AUDIT_LOGGING 로깅 활성화 여부
SERVER_AUDIT_EVENTS 기록할 이벤트 유형 (예: CONNECT, QUERY)
SERVER_AUDIT_EXCL_USERS 로깅 제외할 사용자
SERVER_AUDIT_QUERY_LOG_LIMIT 쿼리 문자열 길이 제한

 

Terraform으로 Option Group 생성하기

위의 옵션 값을 토대로 수정한 최종 terraform 파일은 아래와 같습니다.
 

resource "aws_db_option_group" "mysql_audit_og" {
  name                     = "mysql-audit-og"
  option_group_description = "MariaDB Audit Plugin Option Group"
  engine_name              = "mysql"
  major_engine_version     = "8.0"

  option {
    option_name = "MARIADB_AUDIT_PLUGIN"

    # 서버 감사 로깅 이벤트 설정
    option_settings {
      name  = "SERVER_AUDIT_EVENTS"
      value = "CONNECT,QUERY"
    }

    # 서버 감사 로깅 제외 사용자 설정(rdsadmin)
    option_settings {
      name  = "SERVER_AUDIT_EXCL_USERS"
      value = "rdsadmin"
    }

    # 서버 감사 로깅 활성화
    option_settings {
      name  = "SERVER_AUDIT_LOGGING"
      value = "ON"
    }
  }

  tags = {
		...
  }
} 

 
 

DB 인스턴스에 옵션 그룹 연결하기

옵션 그룹을 변경한 경우, 적용을 위해 인스턴스를 재시작해야 할 수 있습니다.

 

resource "aws_db_instance" "mysql-rds" {
...
	
  # 옵션그룹 설정
  option_group_name = aws_db_option_group.mysql_audit_og.name

...

 
그 후 위와 같이 db instance를 정의한 tf 파일에 옵션 그룹을 설정합니다.
 

728x90