안녕하세요
MariaDB 10.4.18 로 서비스를 운영 중입니다.
보안 정책상 감사로그가 필요 해서 server_audit.so 플러그인을 설치 해서 로그를 수집하고자 합니다.
기본 설정에서는 로그가 잘 남겨지는데, 관리 목적으로 log-rotate 를 설정해서 일단위로 압축해서 보관하고자
아래와 같은 설정 스크립트를 crontab 에 등록해서 매일 새벽에 실행하고 있습니다.
/data/********/logs/mysql_audit.log {
create 0600 mysql mysql
daily
rotate 3
notifempty
missingok
compress
dateext
postrotate
if test -x /usr/bin/mysqladmin && \
/usr/bin/mysqladmin -uroot -p********* ping & > /dev/null
then
/usr/bin/mysqladmin -uroot -p******** flush-logs
fi
endscript
}
문제는 위 스크립트를 실행되고 나면 mysql_audit.log에 아무 내용도 찍히지 않아서 MariaDB 접속해서
set global server_audit_logging=OFF; set global server_audit_logging=ON;
명령을 실행하고 나면 mysql_audit.log 파일에 다시 로그가 찍히고 있습니다.
궁여지책 끝에 로그 rorate 실행후 MariaDB gloval variable 변경하는 스크립트를 넣으면 어떨까 하고 있는데
크론텝에서 작동 하도록 OS 커맨드 라인에서 실행 하는 방법을 찾고 있습니다.
조언 주시는 분 감사드립니다.
자답
/data/mysql-logs/logs/mysql_audit.log {
create 600 mysql mysql
daily
rotate 5
missingok
compress
dateext
postrotate
if test -x /usr/bin/mysqladmin && \
/usr/bin/mysqladmin -uroot -p******** ping & > /dev/null
then
/usr/bin/mysqladmin -uroot -p******** flush-logs
/usr/bin/mysql -uroot -p******** -e 'set global server_audit_logging=OFF;set global server_audit_logging=ON;'
fi
endscript
}
이렇게 해결 했습니다.
무식한 방법인지 모르겠지만 하루 지켜본 결과로는 원하는 대로 동작하긴 합니다.