새소식

MySQL & Maria

[ Maria ] DB 접근 관리 Aduit_log

  • -
반응형

MariaDB와 MySQL은 사용자의 액세스를 기록해야하는 경우 이전에는 데이터베이스 솔루션을 사용해야 했다. 그러나 현재는 Audit log 플러그인을 이용해서 액세스 기록을 할 수 있게되었다. 

기본적으로 MariaDB Audit 플러그인의 목적은 서버의 활동을 기록하는 것으로, 각 클라이언트 세션에 대해 누가 서버에 접속했는지 ( 사용자 / 호스트 ) 쿼리 내용, 엑세스한 테이블을 기록하는 것이다.

MariaDB 감사 플러그인은 MariaDB, MySQL(버전 5.5.34 및 10.0.7 현재) 및 Percona Server에서 작동합니다. MariaDB는 기본적으로 버전 10.0.10 및 5.5.37의 감사 플러그인을 포함하기 시작했으며 MariaDB 5.5.20의 모든 버전에 설치할 수 있습니다 .

 

 

■ 감사 플러그인 설치

1. Plugin directory 확인
MariaDB [(none)]> show variables like '%plugin_dir%';
+---------------+------------------------------------------------+
| Variable_name | Value                                          |
+---------------+------------------------------------------------+
| plugin_dir    | /data/mariadb-10.2.12-linux-x86_64/lib/plugin/ |
+---------------+------------------------------------------------+
1 row in set (0.00 sec)

2.현재 Audit plugin이 설치 되어있는지 확인 
MariaDB [(none)]> show global variables like '%server_audi%';
Empty set (0.00 sec)

3.Plugin 설치
MariaDB [(none)]> install  plugin server_audit soname 'server_audit.so';
Query OK, 0 rows affected (0.07 sec)

4.설치되어있는지 확인
MariaDB [(none)]>  select * from mysql.plugin;
+--------------+-----------------+
| name         | dl              |
+--------------+-----------------+
| server_audit | server_audit.so |
+--------------+-----------------+
1 row in set (0.00 sec)

 

■ my.cnf 수정 

- server_audit_output_type : 원하는 출력 유형을 지정 ( Default : File ) syslog : syslogd 데몬으로 전송한다.

- server_audit_syslog_ident :  SYSLOG 모드 변수입니다. 각 syslog 레코드의 'ident' 부분에 대한 문자열 값입니다. 기본값은 'mysql-server_auditing'입니다. 새 값은 로깅을 다시 시작한 후에만 적용됩니다.

- server_audit_excl_users : Audit에서 제외할 유저 설정이다 하지만 Connection 이벤트는 이 설정 값과 상관없이 모늗 유저에 대해 기록을 남긴다.

- server_audit_logging : audit_logging을 활성화 시킬 것인지

[root@lee ~]# vi /etc/my.cnf

[mysqld]
(생략)
server_audit_output_type = syslog
server_audit_syslog_ident = mysql
server_audit_excl_users = 'root'
server_audit_logging = 1

* Audit 관련 설정값들은 동적으로도 바꿀수 있다.

MariaDB [(none)]>  set global server_audit_logging=ON;
Query OK, 0 rows affected (0.00 sec)

MariaDB [(none)]>  set global server_audit_output_type=file;
Query OK, 0 rows affected (0.00 sec)

MariaDB [(none)]> set global server_audit_file_path='/data/log/audit.log';
Query OK, 0 rows affected (0.00 sec)

MariaDB [(none)]> set global server_audit_events='connect,query,query_ddl';
Query OK, 0 rows affected (0.00 sec)

 

■ Audit 파일에 떨어지는 확인

- Lee 유저로 test.test 테이블을 조회하고 Audit log에 남는지 확인해보자

[root@redis ~]# mysql -ulee -p

MariaDB [(none)]> use test;

MariaDB [test]> select * from test;
+------+
| a    |
+------+
|    1 |
+------+
1 row in set (0.00 sec)


##LOG 확인
[root@redis ~]# cat /data/log/audit.log 
(생략)
20211025 13:53:41,redis,lee,localhost,46,0,CONNECT,,,0
20211025 13:53:41,redis,lee,localhost,46,81,QUERY,,'select @@version_comment limit 1',0
20211025 13:53:42,redis,lee,localhost,46,82,QUERY,,'SELECT DATABASE()',0
20211025 13:53:42,redis,lee,localhost,46,84,QUERY,test,'show databases',0
20211025 13:53:42,redis,lee,localhost,46,85,QUERY,test,'show tables',0
20211025 13:53:46,redis,lee,localhost,46,87,QUERY,test,'select * from test',0
20211025 13:54:22,redis,lee,localhost,46,0,DISCONNECT,test,,0
반응형

'MySQL & Maria' 카테고리의 다른 글

[MySQL / Maria] Innodb_flush_log_at_trx_commit  (0) 2021.11.10
[Maria] max_binlog_size 이슈  (0) 2021.10.26
[Maria] Maria DB Upgrade  (0) 2021.10.11
[MariaDB] MariaDB Memroy 튜닝가이드  (0) 2021.10.08
[Maria] Thread 모니터링  (0) 2021.10.07
Contents

포스팅 주소를 복사했습니다

이 글이 도움이 되었다면 공감 부탁드립니다.