¿Por qué necesita usar un complemento de auditoría para su base de datos?
La auditoría en una base de datos no se desvía de su significado, ya que comparte la misma connotación, es decir, inspeccionar, examinar y evaluar los eventos/transacciones de la base de datos que se registran o realizan dentro de su base de datos. De hecho, agrega más viabilidad para las bases de datos, especialmente como una característica de seguridad, ya que recomienda que el lado administrativo sea sensible para administrar y procesar datos. Abarca la responsabilidad y la responsabilidad por la gestión de datos.
La auditoría de la base de datos requiere que cada transacción (es decir, DDL y DML) se registre para registrar los rastros y obtener una descripción completa de lo que sucede durante las operaciones de la base de datos. Estas operaciones pueden tener las consideraciones:
- Proporciona la capacidad de monitorear y depurar para aumentar el rendimiento en el lado de la aplicación
- Cumplimiento de seguridad y privacidad de datos como PCI DSS, HIPAA, GDPR, etc.
- Proporciona la capacidad de tomar la autonomía de datos específica para entornos de múltiples inquilinos. Esto les permite realizar análisis de datos para diferenciar y filtrar transacciones en función de la confidencialidad y la privacidad por motivos de seguridad y rendimiento.
- Impulsa acciones administrativas para evitar que los usuarios de la base de datos realicen acciones inapropiadas basadas en actividades sospechosas de investigación o limitadas por su rol. Esto significa que los usuarios de lectura, por ejemplo, solo podrán extraer datos y solo tendrán acceso limitado a bases de datos específicas de las que solo son responsables o con un alcance limitado de acuerdo con su función laboral.
¿Qué es el complemento de registro de auditoría de Percona?
Los enfoques anteriores sobre la auditoría de transacciones o eventos que se ejecutan en su base de datos pueden ser un enfoque considerable. Habilitar el archivo de registro general o usar el registro de consultas lentas. No es un enfoque perfecto, por lo que el complemento de registro de auditoría logra agregar más flexibilidad y parámetros personalizables para llenar el vacío. Percona afirma que su complemento de registro de auditoría es una alternativa a MySQL Enterprise Audit. Aunque eso es cierto, hay una advertencia aquí de que el complemento de registro de auditoría de Percona no está disponible para la instalación de MySQL de Oracle. No hay tarball descargable para este binario, pero es fácil de instalar simplemente copiando un archivo audit_log.so existente de una instalación existente de Percona Server o Percona XtraDB Cluster. Lo mejor es recomendar usar o copiar un audit_log.so existente de la misma versión de Percona Server con la versión de la comunidad de MySQL también. Por lo tanto, si su versión objetivo de MySQL Community es de 8.x, entonces use audit_log.so de una versión de Percona Server 8.x también. Le mostraremos cómo hacer esto en una versión comunitaria de MySQL más adelante en este blog.
El complemento de registro de auditoría de Percona es, por supuesto, de código abierto y está disponible para su uso gratuito. Entonces, si su aplicación empresarial usa una base de datos de back-end como Percona Server o MySQL estándar, entonces puede usar este complemento. MySQL Enterprise Audit solo está disponible para MySQL Enterprise Server y tiene un precio. Además, Percona está constantemente actualizando y manteniendo este software y esto es una gran ventaja como si hubiera disponible alguna versión importante de MySQL upstream. Percona también se lanzará en función de su versión principal y eso afecta las actualizaciones y la funcionalidad probada también para su herramienta de complemento de registro de auditoría. Por lo tanto, cualquier incompatibilidad con sus versiones anteriores también se actualizará para que funcione con la versión más reciente y segura de MySQL.
El complemento de registro de auditoría de Percona está etiquetado como una herramienta de seguridad, pero aclaremos esto nuevamente. Esta herramienta se utiliza para auditar registros. Su único propósito es registrar rastros de transacciones desde su base de datos. No hace cortafuegos ni aplica medidas preventivas para bloquear usuarios específicos. Esta herramienta es principalmente para auditar registros y usar para el análisis de transacciones de bases de datos.
Uso del complemento de registro de auditoría de Percona
En esta sección, repasaremos cómo instalar, usar y cuán beneficioso puede ser el complemento, especialmente en situaciones del mundo real.
Instalación del complemento
Percona viene con varias fuentes para sus binarios de base de datos. Una vez que instale correctamente el servidor de la base de datos, la instalación estándar colocará el objeto compartido del complemento de registro de auditoría en /usr/lib64/mysql/plugin/audit_log.so. La instalación del complemento como una forma de habilitarlo dentro del servidor Percona/MySQL se puede realizar con las siguientes acciones a continuación. Estos pasos se realizan utilizando Percona Server 8.0,
mysql> select @@version_comment, @@version\G
*************************** 1. row ***************************
@@version_comment: Percona Server (GPL), Release 12, Revision 7ddfdfe
@@version: 8.0.21-12
1 row in set (0.00 sec)
Entonces los pasos son los siguientes:
-
Verifique primero si el complemento existe o no
## Verifique si el complemento está habilitado o instalado
mysql> select * from information_schema.PLUGINS where PLUGIN_NAME like '%audit%';
Empty set (0.00 sec)
mysql> show variables like 'audit%';
Empty set (0.00 sec)
-
Instalar el complemento,
## Comprobar dónde se encuentran los complementos
mysql> show variables like 'plugin%';
+---------------+--------------------------+
| Variable_name | Value |
+---------------+--------------------------+
| plugin_dir | /usr/lib64/mysql/plugin/ |
+---------------+--------------------------+
1 row in set (0.00 sec)
mysql> \! ls -a /usr/lib64/mysql/plugin/audit_log.so
/usr/lib64/mysql/plugin/audit_log.so
## Listo y luego instalar
mysql> INSTALL PLUGIN audit_log SONAME 'audit_log.so';
Query OK, 0 rows affected (0.01 sec)
-
Verifíquelo una vez más
mysql> select * from information_schema.PLUGINS where PLUGIN_NAME like '%audit%'\G
*************************** 1. row ***************************
PLUGIN_NAME: audit_log
PLUGIN_VERSION: 0.2
PLUGIN_STATUS: ACTIVE
PLUGIN_TYPE: AUDIT
PLUGIN_TYPE_VERSION: 4.1
PLUGIN_LIBRARY: audit_log.so
PLUGIN_LIBRARY_VERSION: 1.10
PLUGIN_AUTHOR: Percona LLC and/or its affiliates.
PLUGIN_DESCRIPTION: Audit log
PLUGIN_LICENSE: GPL
LOAD_OPTION: ON
1 row in set (0.00 sec)
mysql> show variables like 'audit%';
+-----------------------------+---------------+
| Variable_name | Value |
+-----------------------------+---------------+
| audit_log_buffer_size | 1048576 |
| audit_log_exclude_accounts | |
| audit_log_exclude_commands | |
| audit_log_exclude_databases | |
| audit_log_file | audit.log |
| audit_log_flush | OFF |
| audit_log_format | OLD |
| audit_log_handler | FILE |
| audit_log_include_accounts | |
| audit_log_include_commands | |
| audit_log_include_databases | |
| audit_log_policy | ALL |
| audit_log_rotate_on_size | 0 |
| audit_log_rotations | 0 |
| audit_log_strategy | ASYNCHRONOUS |
| audit_log_syslog_facility | LOG_USER |
| audit_log_syslog_ident | percona-audit |
| audit_log_syslog_priority | LOG_INFO |
+-----------------------------+---------------+
18 rows in set (0.00 sec)
Instalación del complemento de auditoría de Percona sobre la versión de la comunidad de MySQL
Al instalar en versiones de Oracle MySQL, como hemos mencionado anteriormente, siempre haga coincidir con la versión de Percona Server de donde proviene el archivo audit_log.so. Entonces, por ejemplo, tengo las siguientes versiones de MySQL a continuación,
nodeB $ mysqld --version
/usr/sbin/mysqld Ver 8.0.22 for Linux on x86_64 (MySQL Community Server - GPL)
Mientras que mi servidor Percona es,
nodeA $ mysqld --version
/usr/sbin/mysqld Ver 8.0.21-12 for Linux on x86_64 (Percona Server (GPL), Release 12, Revision 7ddfdfe)
Todo lo que necesita hacer es copiar desde la fuente de Percona al servidor donde tiene instalado MySQL Community Server.
nodeA $ scp /usr/lib64/mysql/plugin/audit_log.so nodeB:/tmp/
Luego vaya a /usr/lib64/mysql/plugin para encontrar los complementos.
[email protected] > show global variables like 'plugin%';
+---------------+--------------------------+
| Variable_name | Value |
+---------------+--------------------------+
| plugin_dir | /usr/lib64/mysql/plugin/ |
+---------------+--------------------------+
1 row in set (0.00 sec)
nodeB $ mv /tmp/audit_log.so /usr/lib64/mysql/plugin
Todo lo demás, puede seguir los pasos indicados anteriormente para continuar instalando o habilitando el complemento de inicio de sesión de auditoría de Percona para MySQL Community Server.
Configuración y administración del complemento de registro de auditoría de Percona
Percona Audit Log Plugin es una herramienta muy flexible que es muy configurable o personalizable para satisfacer sus requisitos a medida que registra las conexiones o transacciones de su base de datos. Es una implementación de moda lineal para su configuración dada, por lo que incluso si es flexible para personalizarse según sus parámetros dados, solo esos valores dados se registrarán y auditarán durante todo el tiempo que se ejecute su base de datos y se hace de forma asíncrona de forma predeterminada. Todas las variables de parámetros en este complemento son importantes, pero a continuación se encuentran los parámetros más importantes que puede usar para configurar el complemento:
- estrategia_de_registro_de_auditoría - Se utiliza para especificar la estrategia de registro de auditoría y cuando audit_log_handler se establece en ARCHIVO. que son los siguientes valores posibles:
- ASYNCHRONOUS - (predeterminado) registro usando el búfer de memoria, no descartar mensajes si el búfer está lleno
- RENDIMIENTO:registro usando el búfer de memoria, soltar mensajes si el búfer está lleno
- SEMISYNCHRONOUS:inicie sesión directamente en el archivo, no vacíe y sincronice todos los eventos
- SYNCHRONOUS:inicie sesión directamente en el archivo, vacíe y sincronice todos los eventos
- archivo_de_registro_de_auditoría - Nombre de archivo que se usará para almacenar registros de auditoría, que por defecto es el archivo ${datadir}/audit.log. Puede usar la ruta de archivo relativa desde el directorio de datos de su base de datos o la ruta de archivo absoluta.
- auditoría_log_flush - Útil cuando necesita vaciar el registro, como cuando se usa en coordinación con logrotate
- auditoría_log_buffer_size - De forma predeterminada, el registro de auditoría de Percona registra los seguimientos en el registro de archivos predeterminado. Esta variable es útil cuando audit_log_handler =FILE y audit_log_strategy =ASYNCHRONOUS o PERFORMANCE. Cuando se establece, se utiliza para especificar el tamaño del búfer de memoria utilizado para el registro. Esto le permite evitar la degradación de la penalización del rendimiento cuando la auditoría de registros está habilitada.
- formato_de_registro_de_auditoría - Formato para especificar cuándo registrar o guardar información en su archivo de registro de auditoría. Acepta formatos como ANTIGUO/NUEVO (basado en formato XML), JSON y CSV. Esto es muy útil, especialmente cuando se incorpora más adelante con otras herramientas externas para extraer sus registros de auditoría que admiten formatos específicos.
- audit_log_exclude_accounts /audit_log_include_accounts:se utiliza para especificar la lista de usuarios que puede incluir o excluir con respecto a su nombre de parámetro. Acepta NULL, de lo contrario, una lista separada por comas en el formato de [email protected] o 'usuario'@'host'. Estas variables son mutuamente excluyentes, por lo que debe desactivarse (es decir, el valor es NULL) una u otra
- audit_log_include_commands /audit_log_exclude_commands :se usa para especificar la lista de comandos (ya sea NULL o una lista separada por comas) para los que se aplica el filtrado por tipo de comando SQL. Estas variables son mutuamente excluyentes, por lo que debe desactivarse (es decir, el valor es NULL) una u otra. Para obtener la lista de tipos de comandos SQL en MySQL o Percona, haga lo siguiente:
- habilita la variable performance_schema=ON en tu my.cnf (requiere reiniciar el servidor de la base de datos)
- Ejecute la siguiente consulta:SELECT GROUP_CONCAT(SUBSTRING_INDEX(name, '/', -1) ORDER BY name) sql_statement FROM performance_schema.setup_instruments WHERE name LIKE "statement/sql/%"\G
- audit_log_include_databases /audit_log_exclude_databases:se usa para especificar filtrar por nombre de base de datos y junto con audit_log_{include,exclude}_commands para filtrar la lista de comandos para que sea más granular al iniciar sesión durante los registros de auditoría. Estas variables son mutuamente excluyentes, por lo que debe desactivarse (es decir, el valor es NULL) una u otra.
- política_de_registro_de_auditoría - Se utiliza para especificar qué eventos se deben registrar. Técnicamente, puede configurar esta variable dinámicamente para habilitar o deshabilitar (establecer el valor en NINGUNO) para su registro de auditoría. Los valores posibles son:
- TODOS:se registrarán todos los eventos
- INICIO DE SESIÓN:solo se registrarán los inicios de sesión
- CONSULTAS:solo se registrarán las consultas
- NINGUNO:no se registrarán eventos
Administración del complemento de registro de auditoría
Como se mencionó, el archivo de registro predeterminado va a ${data_dir}/audit.log y usa formato XML como mi ejemplo a continuación:
[[email protected] ~]# ls /var/lib/mysql/audit.log | xargs tail -28
<AUDIT_RECORD
NAME="Ping"
RECORD="28692714_2020-10-28T19:12:18"
TIMESTAMP="2020-10-29T09:39:56Z"
COMMAND_CLASS="error"
CONNECTION_ID="10"
STATUS="0"
SQLTEXT=""
USER="cmon[cmon] @ [192.168.10.200]"
HOST=""
OS_USER=""
IP="192.168.10.200"
DB="information_schema"
/>
<AUDIT_RECORD
NAME="Query"
RECORD="28692715_2020-10-28T19:12:18"
TIMESTAMP="2020-10-29T09:39:56Z"
COMMAND_CLASS="show_status"
CONNECTION_ID="10"
STATUS="0"
SQLTEXT="SHOW GLOBAL STATUS"
USER="cmon[cmon] @ [192.168.10.200]"
HOST=""
OS_USER=""
IP="192.168.10.200"
DB="information_schema"
/>
Ahora, administremos el complemento de registro de auditoría de Percona en un caso real. Inspirándonos en el trabajo del blog de Percona de Dani, consideremos cambiar las siguientes variables en my.cnf,
[[email protected] ~]# grep -i 'audit' /etc/my.cnf
## Audit Log
audit_log_format=JSON
audit_log_strategy=PERFORMANCE
audit_log_policy=QUERIES
audit_log_exclude_databases=s9s
Entonces vamos a crear la siguiente base de datos y tablas,
CREATE DATABASE s9s;
CREATE TABLE `audit_records` ( `id` int unsigned NOT NULL AUTO_INCREMENT, `audit_record` json, PRIMARY KEY (`id`) ) ENGINE=InnoDB;
Luego, usemos una canalización con nombre o FIFO en Linux para recopilar registros listos para la auditoría, pero que luego podemos usar de manera factible.
$ mkfifo /tmp/s9s_fifo
$ exec 1<>/tmp/s9s_fifo
$ tail -f /var/lib/mysql/audit.log 1>/tmp/s9s_fifo 2>&1
Then, let's insert any logs to our table `s9s`.`audit_records` using the following script below,
#/bin/bash
pipe=/tmp/s9s_fifo
while true; do
if read line <$pipe; then
if [[ "$line" == 'quit' ]]; then
break
fi
mysql --show-warnings -vvv -e "INSERT INTO s9s.audit_records (audit_record) VALUES(\"${line//\"/\\\"}\")"
fi
done
Luego intenté ejecutar un punto de referencia usando sysbench. Ahora, con las siguientes entradas que tengo,
mysql> select count(1) from audit_records\G
*************************** 1. row ***************************
count(1): 37856
1 row in set (0.11 sec)
Puedo realizar algunas auditorías con JSON, lo que me permite realizar auditorías e investigaciones o incluso análisis de rendimiento de mi base de datos. Por ejemplo,
mysql> SELECT top10_select_insert from ((select audit_record->"$.audit_record" as top10_select_insert from audit_records where audit_record->"$.audit_record.command_class" in ('select') order by audit_records.id desc limit 10) union all (select audit_record->"$.audit_record" as top10_select_insert from audit_records where audit_record->"$.audit_record.command_class" in ('insert') order by audit_records.id desc limit 10)) AS b\G
*************************** 1. row ***************************
top10_select_insert: {"db": "sbtest", "ip": "192.168.10.200", "host": "", "name": "Query", "user": "cmon[cmon] @ [192.168.10.200]", "record": "326263176_2020-10-29T10:35:07", "status": 0, "os_user": "", "sqltext": "SELECT DISTINCT c FROM sbtest1 WHERE id BETWEEN 5001 AND 5100 ORDER BY c", "timestamp": "2020-10-29T11:11:56Z", "command_class": "select", "connection_id": "25143"}
*************************** 2. row ***************************
top10_select_insert: {"db": "sbtest", "ip": "192.168.10.200", "host": "", "name": "Query", "user": "cmon[cmon] @ [192.168.10.200]", "record": "326263175_2020-10-29T10:35:07", "status": 0, "os_user": "", "sqltext": "SELECT c FROM sbtest4 WHERE id BETWEEN 4875 AND 4974 ORDER BY c", "timestamp": "2020-10-29T11:11:56Z", "command_class": "select", "connection_id": "25143"}
*************************** 3. row ***************************
top10_select_insert: {"db": "sbtest", "ip": "192.168.10.200", "host": "", "name": "Query", "user": "cmon[cmon] @ [192.168.10.200]", "record": "326263174_2020-10-29T10:35:07", "status": 0, "os_user": "", "sqltext": "SELECT SUM(k) FROM sbtest1 WHERE id BETWEEN 5017 AND 5116", "timestamp": "2020-10-29T11:11:56Z", "command_class": "select", "connection_id": "25143"}
*************************** 4. row ***************************
top10_select_insert: {"db": "sbtest", "ip": "192.168.10.200", "host": "", "name": "Query", "user": "cmon[cmon] @ [192.168.10.200]", "record": "326263173_2020-10-29T10:35:07", "status": 0, "os_user": "", "sqltext": "SELECT c FROM sbtest8 WHERE id BETWEEN 4994 AND 5093", "timestamp": "2020-10-29T11:11:56Z", "command_class": "select", "connection_id": "25153"}
*************************** 5. row ***************************
top10_select_insert: {"db": "sbtest", "ip": "192.168.10.200", "host": "", "name": "Query", "user": "cmon[cmon] @ [192.168.10.200]", "record": "326263172_2020-10-29T10:35:07", "status": 0, "os_user": "", "sqltext": "SELECT c FROM sbtest3 WHERE id=4976", "timestamp": "2020-10-29T11:11:56Z", "command_class": "select", "connection_id": "25153"}
*************************** 6. row ***************************
top10_select_insert: {"db": "sbtest", "ip": "192.168.10.200", "host": "", "name": "Query", "user": "cmon[cmon] @ [192.168.10.200]", "record": "326263171_2020-10-29T10:35:07", "status": 0, "os_user": "", "sqltext": "SELECT c FROM sbtest3 WHERE id=5018", "timestamp": "2020-10-29T11:11:56Z", "command_class": "select", "connection_id": "25153"}
*************************** 7. row ***************************
top10_select_insert: {"db": "sbtest", "ip": "192.168.10.200", "host": "", "name": "Query", "user": "cmon[cmon] @ [192.168.10.200]", "record": "326263170_2020-10-29T10:35:07", "status": 0, "os_user": "", "sqltext": "SELECT c FROM sbtest3 WHERE id=5026", "timestamp": "2020-10-29T11:11:56Z", "command_class": "select", "connection_id": "25153"}
*************************** 8. row ***************************
top10_select_insert: {"db": "sbtest", "ip": "192.168.10.200", "host": "", "name": "Query", "user": "cmon[cmon] @ [192.168.10.200]", "record": "326263169_2020-10-29T10:35:07", "status": 0, "os_user": "", "sqltext": "SELECT c FROM sbtest3 WHERE id=5711", "timestamp": "2020-10-29T11:11:56Z", "command_class": "select", "connection_id": "25153"}
*************************** 9. row ***************************
top10_select_insert: {"db": "sbtest", "ip": "192.168.10.200", "host": "", "name": "Query", "user": "cmon[cmon] @ [192.168.10.200]", "record": "326263168_2020-10-29T10:35:07", "status": 0, "os_user": "", "sqltext": "SELECT c FROM sbtest3 WHERE id=5044", "timestamp": "2020-10-29T11:11:56Z", "command_class": "select", "connection_id": "25153"}
*************************** 10. row ***************************
top10_select_insert: {"db": "sbtest", "ip": "192.168.10.200", "host": "", "name": "Query", "user": "cmon[cmon] @ [192.168.10.200]", "record": "326263167_2020-10-29T10:35:07", "status": 0, "os_user": "", "sqltext": "SELECT c FROM sbtest3 WHERE id=5637", "timestamp": "2020-10-29T11:11:56Z", "command_class": "select", "connection_id": "25153"}
*************************** 11. row ***************************
top10_select_insert: {"db": "sbtest", "ip": "192.168.10.200", "host": "", "name": "Query", "user": "cmon[cmon] @ [192.168.10.200]", "record": "326263151_2020-10-29T10:35:07", "status": 0, "os_user": "", "sqltext": "INSERT INTO sbtest9 (id, k, c, pad) VALUES (4998, 4986, '02171032529-62046503057-07366460505-11685363597-46873502976-33077071866-44215205484-05994642442-06380315383-02875729800', '19260637605-33008876390-94789070914-09039113107-89863581488')", "timestamp": "2020-10-29T11:11:56Z", "command_class": "insert", "connection_id": "25124"}
*************************** 12. row ***************************
top10_select_insert: {"db": "sbtest", "ip": "192.168.10.200", "host": "", "name": "Query", "user": "cmon[cmon] @ [192.168.10.200]", "record": "326263133_2020-10-29T10:35:07", "status": 0, "os_user": "", "sqltext": "INSERT INTO sbtest8 (id, k, c, pad) VALUES (6081, 4150, '18974493622-09995560953-16579360264-35381241173-70425414992-87533708595-45025145447-98882906947-17081170077-49181742629', '20737943314-90440646708-38143024644-95915967543-47972430163')", "timestamp": "2020-10-29T11:11:56Z", "command_class": "insert", "connection_id": "25133"}
*************************** 13. row ***************************
top10_select_insert: {"db": "sbtest", "ip": "192.168.10.200", "host": "", "name": "Query", "user": "cmon[cmon] @ [192.168.10.200]", "record": "326263126_2020-10-29T10:35:07", "status": 0, "os_user": "", "sqltext": "INSERT INTO sbtest2 (id, k, c, pad) VALUES (5014, 5049, '82143477938-07198858971-84944276583-28705099377-04269543238-74209284999-24766869883-70274359968-19384709611-56871076616', '89380034594-52170436945-89656244047-48644464580-26885108397')", "timestamp": "2020-10-29T11:11:56Z", "command_class": "insert", "connection_id": "25135"}
*************************** 14. row ***************************
top10_select_insert: {"db": "sbtest", "ip": "192.168.10.200", "host": "", "name": "Query", "user": "cmon[cmon] @ [192.168.10.200]", "record": "326263119_2020-10-29T10:35:07", "status": 0, "os_user": "", "sqltext": "INSERT INTO sbtest5 (id, k, c, pad) VALUES (4995, 3860, '07500343929-19373180618-48491497019-86674883771-87861925606-04683804124-03278606074-05397614513-84175620410-77007118978', '19374966620-11798221232-19991603086-34443959669-69834306417')", "timestamp": "2020-10-29T11:11:56Z", "command_class": "insert", "connection_id": "25142"}
*************************** 15. row ***************************
top10_select_insert: {"db": "sbtest", "ip": "192.168.10.200", "host": "", "name": "Query", "user": "cmon[cmon] @ [192.168.10.200]", "record": "326263112_2020-10-29T10:35:07", "status": 0, "os_user": "", "sqltext": "INSERT INTO sbtest10 (id, k, c, pad) VALUES (5766, 5007, '46189905191-42872108894-20541866044-43286474408-49735155060-20388245380-67571749662-72179825415-56363344183-47524887111', '24559469844-22477386116-04417716308-05721823869-32876821172')", "timestamp": "2020-10-29T11:11:56Z", "command_class": "insert", "connection_id": "25137"}
*************************** 16. row ***************************
top10_select_insert: {"db": "sbtest", "ip": "192.168.10.200", "host": "", "name": "Query", "user": "cmon[cmon] @ [192.168.10.200]", "record": "326263083_2020-10-29T10:35:07", "status": 0, "os_user": "", "sqltext": "INSERT INTO sbtest7 (id, k, c, pad) VALUES (5033, 4986, '20695843208-59656863439-60406010814-11793724813-45659184103-02803540858-01466094684-30557262345-15801610791-28290093674', '14178983572-33857930891-42382490524-21373835727-23623125230')", "timestamp": "2020-10-29T11:11:56Z", "command_class": "insert", "connection_id": "25118"}
*************************** 17. row ***************************
top10_select_insert: {"db": "sbtest", "ip": "192.168.10.200", "host": "", "name": "Query", "user": "cmon[cmon] @ [192.168.10.200]", "record": "326263076_2020-10-29T10:35:07", "status": 0, "os_user": "", "sqltext": "INSERT INTO sbtest1 (id, k, c, pad) VALUES (5029, 5016, '72342762580-04669595160-76797241844-46205057564-77659988460-00393018079-89701448932-22439638942-02011990830-97695117676', '13179789120-16401633552-44237908265-34585805608-99910166472')", "timestamp": "2020-10-29T11:11:56Z", "command_class": "insert", "connection_id": "25121"}
*************************** 18. row ***************************
top10_select_insert: {"db": "sbtest", "ip": "192.168.10.200", "host": "", "name": "Query", "user": "cmon[cmon] @ [192.168.10.200]", "record": "326263036_2020-10-29T10:35:07", "status": 0, "os_user": "", "sqltext": "INSERT INTO sbtest1 (id, k, c, pad) VALUES (5038, 5146, '62239893938-24763792785-75786071570-64441378769-99060498468-07437802489-36899434285-44705822299-70849806976-77287283409', '03220277005-21146501539-10986216439-83162542410-04253248063')", "timestamp": "2020-10-29T11:11:55Z", "command_class": "insert", "connection_id": "25127"}
*************************** 19. row ***************************
top10_select_insert: {"db": "sbtest", "ip": "192.168.10.200", "host": "", "name": "Query", "user": "cmon[cmon] @ [192.168.10.200]", "record": "326263018_2020-10-29T10:35:07", "status": 0, "os_user": "", "sqltext": "INSERT INTO sbtest4 (id, k, c, pad) VALUES (5004, 5028, '15487433957-59189974170-83116468418-96078631606-58760747556-09307871236-40520753062-17596570189-73692856496-38267942694', '98937710805-24695902707-05013528796-18454393948-39118534483')", "timestamp": "2020-10-29T11:11:55Z", "command_class": "insert", "connection_id": "25129"}
*************************** 20. row ***************************
top10_select_insert: {"db": "sbtest", "ip": "192.168.10.200", "host": "", "name": "Query", "user": "cmon[cmon] @ [192.168.10.200]", "record": "326262989_2020-10-29T10:35:07", "status": 0, "os_user": "", "sqltext": "INSERT INTO sbtest3 (id, k, c, pad) VALUES (5015, 5030, '30613877119-41343977889-67711116708-96041306890-46480766663-68231747217-07404586739-83073703805-75534384550-12407169697', '65220283880-37505643788-94809192635-84679347406-74995175373')", "timestamp": "2020-10-29T11:11:55Z", "command_class": "insert", "connection_id": "25139"}
20 rows in set (0.00 sec)
Agregue sus registros de auditoría con otras herramientas
Ahora que puede analizar el resultado de sus registros de auditoría, puede comenzar a incorporarlo a otras herramientas externas y comenzar a agregar con su entorno actual o pila de tecnología siempre que lea o sea compatible con JSON. Por ejemplo, usar ELK (Elasticsearch, Logstash Kibana) para analizar y centralizar sus registros. También puede intentar incorporar con Graylog o Fluentd. Por otro lado, puede crear su propio visor e incorporarlo a su configuración de software actual. El uso del Registro de auditoría de Percona hace que estas cosas sean factibles para hacer más análisis con alta productividad y, por supuesto, también factibles y extensibles.