MariaDB
 sql >> Base de Dados >  >> RDS >> MariaDB

Usando o plug-in de log de auditoria Percona para segurança de banco de dados

Por que você precisa usar um plug-in de auditoria para seu banco de dados?

A auditoria em um banco de dados não se desvia de seu significado, pois compartilha a mesma conotação, ou seja, inspecionar, examinar e avaliar esses eventos/transações de banco de dados que estão sendo registrados ou executados em seu banco de dados. De fato, adiciona mais viabilidade para bancos de dados, especialmente como um recurso de segurança, pois recomenda que o lado administrativo seja sensível para gerenciar e processar dados. Ele abrange a responsabilidade e prestação de contas pelo gerenciamento de dados.

A auditoria do banco de dados exige que todas as transações (ou seja, DDLs e DMLs) sejam registradas para registrar rastreamentos e obter uma visão geral completa do que está acontecendo durante as operações do banco de dados. Essas operações podem levar as considerações:

  • Fornece capacidade para monitorar e depurar para aumentar o desempenho no lado do aplicativo
  • Conformidade de segurança e privacidade de dados, como PCI DSS, HIPAA, GDPR etc. 
  • Fornece a capacidade de obter autonomia de dados específica para ambientes de multilocação. Isso permite que eles façam análises de dados para diferenciar e filtrar transações com base na sensibilidade e privacidade para considerações de segurança e desempenho.
  • Direciona ações administrativas para impedir que os usuários do banco de dados realizem ações inadequadas com base em atividades suspeitas de investigação ou limitadas por sua função. Isso significa que usuários de leitura, por exemplo, só terão permissão para extrair dados e apenas acesso limitado a bancos de dados específicos pelos quais são responsáveis ​​apenas ou com escopo limitado de acordo com sua função de trabalho.

O que é o plug-in Percona Audit Log?

As abordagens anteriores de auditoria de transações ou eventos em execução em seu banco de dados podem ser uma abordagem pesada. Ativando o arquivo de log geral ou usando o log de consulta lenta. Não é uma abordagem perfeita, então o plug-in de log de auditoria consegue adicionar mais flexibilidade e parâmetros personalizáveis ​​para preencher a lacuna. Percona afirma que seu plug-in de log de auditoria é uma alternativa ao MySQL Enterprise Audit. Embora isso seja verdade, há uma ressalva aqui de que o plug-in de log de auditoria da Percona não está disponível para instalação do MySQL da Oracle. Não há tarball para download para este binário, mas é fácil de instalar apenas copiando um arquivo audit_log.so existente de uma instalação existente do Percona Server ou Percona XtraDB Cluster. Melhor recomendar usar ou copiar um audit_log.so existente da mesma versão do Percona Server com a versão da comunidade MySQL também. Portanto, se sua versão da comunidade MySQL de destino for 8.x, use também o audit_log.so de uma versão 8.x do Percona Server. Mostraremos como fazer isso em uma versão da comunidade MySQL posteriormente neste blog.

O plug-in de log de auditoria Percona é, obviamente, de código aberto e está disponível gratuitamente. Portanto, se o seu aplicativo corporativo usa um banco de dados de back-end, como o Percona Server ou o MySQL vanilla, você pode usar este plug-in. O MySQL Enterprise Audit está disponível apenas para o MySQL Enterprise Server e isso vem com um preço. Além disso, a Percona está constantemente atualizando e mantendo esse software e isso é uma grande vantagem, já que qualquer versão principal do MySQL upstream está disponível. A Percona também será lançada com base em sua versão principal e isso afeta as atualizações e a funcionalidade testada, bem como a ferramenta de plug-in de log de auditoria. Portanto, qualquer incompatibilidade de suas versões anteriores, deverá ser atualizada também para funcionar com a versão mais recente e segura do MySQL.

O plug-in Percona Audit Log é marcado como uma ferramenta de segurança, mas vamos esclarecer isso novamente. Esta ferramenta é usada para logs de auditoria. Seu único propósito é registrar rastros de transações de seu banco de dados. Não faz firewall nem aplica medidas preventivas para bloquear usuários específicos. Esta ferramenta é principalmente para logs de auditoria e uso para análise de transações de banco de dados.

Usando o plug-in de registro de auditoria Percona

Nesta seção, veremos como instalar, usar e quão benéfico o plug-in pode ser, especialmente em situações do mundo real.

Instalando o plug-in

Percona vem com várias fontes para seus binários de banco de dados. Depois de instalar o servidor de banco de dados corretamente, a instalação padrão colocará o objeto compartilhado do plug-in de log de auditoria em  /usr/lib64/mysql/plugin/audit_log.so. A instalação do plugin como forma de habilitá-lo no servidor Percona/MySQL pode ser feita com as seguintes ações abaixo. Essas etapas são feitas usando o 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)

As etapas são as seguintes:

  1. Verifique primeiro se o plugin existe ou não

## Verifique se o plugin está ativado ou 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)
  1. Instale o plug-in,

## Verifique onde estão localizados os plugins

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

## Pronto e depois instale

mysql> INSTALL PLUGIN audit_log SONAME 'audit_log.so';

Query OK, 0 rows affected (0.01 sec)
  1. Verifique novamente

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)

Instalando o plug-in de auditoria Percona na versão da comunidade MySQL

Ao instalar em versões do Oracle MySQL, como mencionamos acima, sempre combine com a versão do Percona Server de onde veio o arquivo audit_log.so. Então, por exemplo, eu tenho as seguintes versões do MySQL abaixo,

nodeB $  mysqld --version

/usr/sbin/mysqld  Ver 8.0.22 for Linux on x86_64 (MySQL Community Server - GPL)

Considerando que meu servidor Percona é,

nodeA $ mysqld --version

/usr/sbin/mysqld  Ver 8.0.21-12 for Linux on x86_64 (Percona Server (GPL), Release 12, Revision 7ddfdfe)

Tudo que você precisa fazer é copiar da fonte Percona para o servidor onde você instalou o MySQL Community Server.

nodeA $ scp /usr/lib64/mysql/plugin/audit_log.so nodeB:/tmp/

Então vá para /usr/lib64/mysql/plugin onde os plugins devem ser localizados.

[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 o resto, você pode seguir os passos descritos acima para continuar instalando ou habilitando o Percona Audit Login Plugin for MySQL Community Server.

Configuração e gerenciamento do plug-in de registro de auditoria Percona

Percona Audit Log Plugin é uma ferramenta muito flexível que é muito configurável ou personalizável para atender às suas necessidades à medida que você registra suas conexões ou transações de banco de dados. É uma implementação de moda linear para sua configuração fornecida, portanto, mesmo que seja flexível para ser personalizado por seus parâmetros fornecidos, apenas esses valores fornecidos devem ser registrados e auditados durante todo o tempo em que seu banco de dados é executado e é feito de forma assíncrona por padrão. Todas as variáveis ​​de parâmetro neste plugin são importantes, mas abaixo estão os parâmetros mais importantes que você pode usar para configurar o plugin:

  • audit_log_strategy - Usado para especificar a estratégia de log de auditoria e quando audit_log_handler é definido como FILE. que são os seguintes valores possíveis: 
    • ASYNCHRONOUS - (padrão) log usando buffer de memória, não descarte mensagens se o buffer estiver cheio
    • PERFORMANCE - registrar usando buffer de memória, descartar mensagens se o buffer estiver cheio
    • SEMISYNCHRONOUS - registre diretamente no arquivo, não libere e sincronize todos os eventos
    • SYNCHRONOUS - registre diretamente no arquivo, libere e sincronize todos os eventos
  • audit_log_file - Nome do arquivo a ser usado para armazenar logs de auditoria, cujo padrão é o arquivo ${datadir}/audit.log. Você pode usar o caminho de arquivo relativo do datadir do seu banco de dados ou o caminho de arquivo absoluto.
  • audit_log_flush - Útil quando você precisa liberar o log, como sendo usado em coordenação com logrotate
  • audit_log_buffer_size - Por padrão, o Percona Audit Log registra os rastreamentos no log de arquivo padrão. Essa variável é útil quando audit_log_handler =FILE e audit_log_strategy =ASYNCHRONOUS ou PERFORMANCE. Quando definido, é usado para especificar o tamanho do buffer de memória usado para registro. Isso permite evitar a degradação da penalidade de desempenho quando os registros de auditoria estão ativados.
  • audit_log_format - Formato para especificar ao gravar ou salvar informações em seu arquivo de log de auditoria. Aceita formatos como OLD/NEW (com base no formato XML), JSON e CSV. Isso é muito útil, especialmente quando você incorpora posteriormente outras ferramentas externas para extrair seus logs de auditoria compatíveis com formatos específicos.
  • audit_log_exclude_accounts /audit_log_include_accounts - Usado para especificar a lista de usuários que você pode incluir ou excluir em relação ao seu nome de parâmetro. Aceita NULL caso contrário uma lista separada por vírgulas no formato de [email protected] ou 'user'@'host'. Essas variáveis ​​são mutuamente exclusivas, portanto, devem ser desdefinidas (ou seja, o valor é NULL) uma ou outra
  • audit_log_include_commands /audit_log_exclude_commands  - Usado para especificar a lista de comandos (NULL ou lista separada por vírgulas) para a qual a filtragem por tipo de comando SQL é aplicada. Essas variáveis ​​são mutuamente exclusivas, portanto, devem ser desdefinidas (ou seja, o valor é NULL) uma ou outra. Para obter a lista de tipos de comandos SQL no MySQL ou Percona, faça o seguinte:
    • habilite a variável performance_schema=ON em seu my.cnf (requer reinicialização do servidor de banco de dados)
    • Execute a seguinte 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 - usado para especificar para filtrar por nome de banco de dados e com conjunto para audit_log_{include,exclude}_commands para filtrar a lista de comandos para ser mais granular ao registrar durante os logs de auditoria. Essas variáveis ​​são mutuamente exclusivas, portanto, devem ser desdefinidas (ou seja, o valor é NULL) uma ou outra.
  • audit_log_policy - Usado para especificar quais eventos devem ser registrados. Tecnicamente, você pode definir essa variável dinamicamente para habilitar ou desabilitar (definir o valor como NONE) para seu log de auditoria. Os valores possíveis são:
    • TODOS - todos os eventos serão registrados
    • LOGINS - somente logins serão registrados
    • CONSULTAS - somente as consultas serão registradas
    • NENHUM - nenhum evento será registrado

Gerenciando o plug-in de log de auditoria

Como mencionado, o arquivo de log padrão vai para ${data_dir}/audit.log e usa o formato XML como meu exemplo abaixo:

[[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"

/>

Agora, vamos gerenciar o plug-in Percona Audit Log em um cenário de caso real. Inspirados no trabalho do blog de Percona da Dani, vamos considerar mudar as seguintes variáveis ​​em 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

Então vamos criar o seguinte banco de dados e tabelas,

CREATE DATABASE s9s;

CREATE TABLE `audit_records` ( `id` int unsigned NOT NULL AUTO_INCREMENT,  `audit_record` json,   PRIMARY KEY (`id`) ) ENGINE=InnoDB;

Então vamos usar um pipe nomeado ou FIFO no Linux para coletar logs prontos para auditoria, mas que podemos usar mais tarde de forma viável.

$ 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

Então eu tentei executar um benchmark usando o sysbench. Agora, com as seguintes entradas que tenho,

mysql> select count(1) from audit_records\G

*************************** 1. row ***************************

count(1): 37856

1 row in set (0.11 sec)

Eu posso fazer algumas auditorias usando JSON, o que está me tornando viável fazer auditorias e investigações ou até mesmo análises de desempenho do meu banco de dados. Por exemplo,

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 seus registros de auditoria com outras ferramentas

Agora que você pode analisar a saída de seus logs de auditoria, pode começar a incorporá-la a outras ferramentas externas e começar a agregar com seu ambiente atual ou pilha de tecnologia, desde que leia ou suporte JSON. Por exemplo, usando ELK (Elasticsearch, Logstash Kibana) para analisar e centralizar seus logs. Você também pode tentar incorporar com Graylog ou Fluentd. Por outro lado, você pode criar seu próprio visualizador e incorporá-lo à configuração atual do software. O uso do Percona Audit Log torna essas coisas viáveis ​​para fazer mais análises com alta produtividade e, claro, viáveis ​​e extensíveis também.