MariaDB
 sql >> база данни >  >> RDS >> MariaDB

Използване на приставката Percona Audit Log Plugin за сигурност на базата данни

Защо трябва да използвате добавка за одит за вашата база данни?

Одитът в база данни не се отклонява от значението си, тъй като споделя същата конотация, т.е. да инспектира, изследва и оценява за такива събития/транзакции в базата данни, които се регистрират или извършват във вашата база данни. Той всъщност добавя повече осъществимост за базите данни, особено като функция за сигурност, тъй като препоръчва административната страна да бъде чувствителна за управление и обработка на данни. Той обхваща отговорността и отчетността за управлението на данните.

Одитът на базата данни изисква всяка транзакция (т.е. DDL и DML) да се регистрира, за да се записват следи и да се получи пълен преглед на това, което се случва по време на операции с базата данни. Тези операции могат да вземат предвид:

  • Осигурява възможност за наблюдение и отстраняване на грешки, за да се повиши производителността от страна на приложението
  • Спазване на сигурността и поверителността на данните, като PCI DSS, HIPAA, GDPR и др. 
  • Осигурява способност за поемане на автономия на данните, специфична за среди с множество наемания. Това им позволява да извършват анализ на данни, така че да разграничават и филтрират транзакциите въз основа на чувствителността и поверителността от съображения за сигурност и производителност.
  • Задвижва административни действия за предотвратяване на неподходящи действия на потребителите на база данни въз основа на подозрителна разследваща дейност или ограничено от нейната роля. Това означава, че потребителите с четене, например, ще имат право само да изтеглят данни и само ограничен достъп до конкретни бази данни, за които отговарят само или с ограничен обхват в съответствие с тяхната длъжност.

Какво е приставката Percona Audit Log Plugin?

Предишните подходи за одит на транзакции или събития, изпълнявани във вашата база данни, могат да бъдат сериозен подход. Активиране на общ регистрационен файл или използване на бавен регистър на заявките. Това не е перфектен подход, така че приставката за регистрационни файлове за одит успява да добави повече гъвкавост и адаптивни параметри, за да запълни празнината. Percona твърди, че тяхната добавка за одит на журнала е алтернатива на MySQL Enterprise Audit. Въпреки че това е вярно, тук има предупреждение, че приставката Audit Log Plugin на Percona не е налична за MySQL на Oracle за инсталиране. Няма tarball за изтегляне за този двоичен файл, но е лесен за инсталиране, като просто копирате съществуващ файл audit_log.so от съществуващ Percona Server или Percona XtraDB Cluster инсталация. Най-добре е да препоръчате да използвате или копирате съществуващ audit_log.so на същата версия на Percona Server и с версията на общността на MySQL. Така че, ако вашата целева версия на MySQL Community е 8.x, тогава използвайте audit_log.so и от версия на Percona Server 8.x. Ще ви покажем как да направите това във версия на MySQL общност по-късно в този блог.

Приставката Percona Audit Log Plugin, разбира се, е с отворен код и е достъпна за безплатно използване. Така че, ако вашето корпоративно приложение използва бекенд база данни като Percona Server или ванилия MySQL, тогава можете да използвате този плъгин. MySQL Enterprise Audit е наличен само за MySQL Enterprise Server и това идва с цена. Освен това Percona непрекъснато обновява и поддържа този софтуер и това идва като голямо предимство, сякаш е налична някаква голяма версия от MySQL upstream. Percona също ще пусне въз основа на основната си версия и това засяга актуализациите и тествана функционалност, както и за техния инструмент за приставки за регистрационни файлове за одит. Така че всяка несъвместимост от предишните му версии също ще бъде актуализирана, за да работи с най-новата и сигурна версия на MySQL.

Приставката Percona Audit Log Plugin е маркирана като инструмент за сигурност, но нека да изясним това отново. Този инструмент се използва за одит на регистрационни файлове. Единствената му цел е да регистрира следи от транзакции от вашата база данни. Той не прави защитна стена, нито прилага превантивни мерки за блокиране на конкретни потребители. Този инструмент е основно за одит на регистрационни файлове и се използва за анализ на транзакциите в базата данни.

Използване на приставката Percona Audit Log Plugin

В този раздел ще разгледаме как да инсталирате, използвате и колко полезна може да бъде приставката, особено в реални ситуации.

Инсталиране на приставката

Percona идва с различни източници за техните двоични файлове на базата данни. След като инсталирате правилно сървъра на базата данни, стандартната инсталация ще постави споделения обект на плъгина за регистрационни файлове за одит в  /usr/lib64/mysql/plugin/audit_log.so. Инсталирането на плъгина като начин да го активирате в сървъра на Percona/MySQL може да се извърши със следните действия по-долу. Тези стъпки се извършват с помощта на 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)

След това стъпките са както следва:

  1. Първо проверете дали приставката съществува или не

## Проверете дали приставката е активирана или инсталирана

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. Инсталирайте приставката,

## Проверете къде се намират плъгините

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

## Готовност и след това инсталиране

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

Query OK, 0 rows affected (0.01 sec)
  1. Проверете го отново

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)

Инсталиране на Percona Audit Plugin през версията на MySQL Community

Когато инсталирате на Oracle MySQL версии, както споменахме по-горе, винаги съвпадайте с версията на Percona Server, откъдето идва файлът audit_log.so. Така например, имам следните версии на MySQL по-долу,

nodeB $  mysqld --version

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

Като има предвид, че моят Percona сървър е,

nodeA $ mysqld --version

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

Всичко, което трябва да направите, е да копирате от източника на Percona на сървъра, където имате инсталиран MySQL Community Server.

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

След това преминете към /usr/lib64/mysql/plugin, за които ще се намират плъгини.

[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

Всичко останало, можете да следвате стъпките, посочени по-горе, за да продължите да инсталирате или активирате приставката за вход на Percona Audit за MySQL Community Server.

Приставка за конфигуриране и управление на Percona Audit Log Plugin

Percona Audit Log Plugin е много гъвкав инструмент, който е много конфигурируем или персонализиран, за да задоволи вашите изисквания, докато регистрирате връзките или транзакциите на вашата база данни. Това е линейна модна реализация за дадената й конфигурация, така че дори и да е гъвкава да бъде персонализирана според дадените й параметри, само тези дадени стойности ще бъдат регистрирани и одитирани през цялото време, докато вашата база данни работи и се извършва асинхронно по подразбиране. Всички променливи на параметрите в този плъгин са важни, но по-долу са най-важните параметри, които можете да използвате, за да конфигурирате приставката:

  • audit_log_strategy - Използва се за определяне на стратегията на регистрационния файл за одит и когато audit_log_handler е настроен на FILE. което е или следните стойности са възможни: 
    • АСИНХРОНО - (по подразбиране) дневник, използващ буфер на паметта, не изпускайте съобщения, ако буферът е пълен
    • ПРОИЗВОДИТЕЛНОСТ - регистрирайте се с помощта на буфер на паметта, пускайте съобщения, ако буферът е пълен
    • ПОЛУСИНХРОНО - регистрирайте се директно във файла, не изтривайте и синхронизирайте всяко събитие
    • СИНХРОНО - регистрирайте се директно във файла, изтривайте и синхронизирайте всяко събитие
  • audit_log_file - Име на файла, което да се използва за съхраняване на регистрационни файлове за одит, което по подразбиране е файл ${datadir}/audit.log. Можете да използвате относителен път към файла от директорията с данни на вашата база данни или абсолютния път на файла.
  • audit_log_flush - Полезно, когато трябва да промиете дневника, като например да се използва в координация с logrotate
  • audit_log_buffer_size - По подразбиране Percona Audit Log записва следи към файловия дневник по подразбиране. Тази променлива е полезна, когато audit_log_handler =FILE и audit_log_strategy =ASYNCHRONOUS или PERFORMANCE. Когато е зададен, се използва за определяне на размера на буфера на паметта, използван за регистриране. Това ви позволява да избегнете влошаване на производителността, когато е активиран одит на регистрационни файлове.
  • audit_log_format - Формат, който да посочите, когато записвате или запазвате информация във вашия регистрационен файл за одит. Приема формати като СТАР/НОВ (въз основа на XML формат), JSON и CSV. Това е много полезно, особено когато го включите по-късно с други външни инструменти, за да изтеглите вашите одитни регистрационни файлове, които поддържат специфични формати.
  • audit_log_exclude_accounts /audit_log_include_accounts - Използва се за уточняване на списъка с потребители, които можете да включите или изключите в съответствие с името на параметъра. Приема NULL, в противен случай списък, разделен със запетая, във формат [email protected] или 'user'@'host'. Тези променливи са взаимно изключващи се, така че трябва да бъдат отменени (т.е. стойността е NULL) една или друга
  • audit_log_include_commands /audit_log_exclude_commands  – Използва се за указване на списък с команди (или NULL, или разделен със запетая списък), за които се прилага филтриране по тип SQL команда. Тези променливи са взаимно изключващи се, така че трябва да бъде отменена (т.е. стойността е NULL) една или друга. За да получите списък с типове SQL команди в MySQL или Percona, направете следното:
    • активирайте променлива performance_schema=ON във вашия my.cnf (изисква рестартиране на сървъра на базата данни)
    • Изпълнете следната заявка: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 - използва се за филтриране по име на базата данни и заедно с audit_log_{include,exclude}_commands за филтриране на списъка с команди, така че да бъде по-подробен при регистриране по време на одит на регистрационни файлове. Тези променливи са взаимно изключващи се, така че трябва да бъдат отменени (т.е. стойността е NULL) една или друга.
  • audit_log_policy - Използва се за указване кои събития трябва да бъдат регистрирани. Технически можете да зададете тази променлива динамично, за да активирате или деактивирате (задайте стойност на NONE) за регистрирането на вашия одит. Възможните стойности са:
    • ВСИЧКИ - всички събития ще бъдат регистрирани
    • ВХОДИ - ще се регистрират само влизания
    • ЗАПИТКИ - ще се записват само заявки
    • НЯМА - няма да се записват събития

Управление на приставката за регистър на одита

Както споменахме, регистрационният файл по подразбиране отива в ${data_dir}/audit.log и използва XML формат точно като моя пример по-долу:

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

/>

Сега нека управляваме Percona Audit Log Plugin в реален случай. Вдъхновени от работата на блога на Дани за Percona, нека помислим за промяна на следните променливи в 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

След това нека създадем следната база данни и таблици,

CREATE DATABASE s9s;

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

След това нека използваме A named pipe или FIFO в Linux, за да събираме регистрационни файлове, готови за одит, но които по-късно можем да използваме осъществимо.

$ 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

След това се опитах да пусна бенчмарк с помощта на sysbench. Сега, със следните записи, които имам,

mysql> select count(1) from audit_records\G

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

count(1): 37856

1 row in set (0.11 sec)

Мога да направя някои одити с помощта на JSON, което ми прави възможно да правя одит и проучване или дори анализ на ефективността на моята база данни. Например,

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)

Агрегирайте вашите одитни регистрационни файлове с други инструменти

Сега, когато сте в състояние да анализирате изхода от вашите одитни регистрационни файлове, можете да започнете да го включвате в други външни инструменти и да започнете да агрегирате с текущата си среда или технологичен стек, стига да чете или поддържа JSON. Например, като използвате ELK (Elasticsearch, Logstash Kibana), за да анализирате и централизирате вашите регистрационни файлове. Може също да опитате да се включите с Graylog или Fluentd. От друга страна, можете да създадете свой собствен зрител и да го включите с текущата си настройка на софтуера. Използването на Percona Audit Log прави тези неща осъществими за извършване на повече анализи с висока производителност и, разбира се, също осъществими и разширяеми.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Как работи ROUND() в MariaDB

  2. Как работи SHOW COLLATION в MariaDB

  3. Балансиране на натоварването на базата данни:разпределени срещу централизирани настройки

  4. Как работи MICROSECOND() в MariaDB

  5. Как работи UPDATEXML() в MariaDB