MySQL はオープンソースの監査プラグインを使用します

序文

MySQL のエンタープライズ バージョンのみに監査プラグインがあり、オープン ソース コミュニティ バージョンには監査プラグインがありません。MLPS に合格するには、企業は監査機能を有効にする必要がありますが、MySQL Community Edition に監査機能を持たせるために、MariaDB オープンソース監査プラグインが使用されていることがここに記録されています。

1.監査プラグインをダウンロードする

監査プラグインは MariaDB に含まれているため、最初に MariaDB をダウンロードしてからserver_audit.so監査プラグインをコピーする必要があります。

MariaDB バージョン 10.1 は、Oracle の MySQL 5.7 バージョンに対応します。MariaDBの公式ダウンロード アドレスは次のとおりです。リンクから MariaDB をダウンロードできます。

tar -zxvf mariadb-10.1.48-linux-systemd-x86_64.tar.gz

/lib/plugin/ディレクトリを入力してserver_audit.so監査プラグインを見つけます。

ll ./mariadb-10.1.48-linux-systemd-x86_64/lib/plugin/server_audit.so
-rw-r--r-- 1 esadmin mysql 245036 Oct 30  2020 ./mariadb-10.1.48-linux-systemd-x86_64/lib/plugin/server_audit.so

次に、プラグインを MySQL プラグイン ディレクトリにコピーする必要があります。次の SQL を実行して、MySQL ベース ディレクトリをクエリできます。

select @@basedir;
+-------------------+
| @@basedir         |
+-------------------+
| /usr/local/mysql/ |
+-------------------+

MySQL プラグイン ディレクトリはbasedir/lib/plugin/以下にあります。プラグインをこのディレクトリにコピーします。

cp /pg_data/mariadb-10.1.48-linux-systemd-x86_64/lib/plugin/server_audit.so /usr/local/mysql/lib/plugin/

ファイルのグループを変更し、MySQL に接続してプラグインをインストールします。

install plugin server_audit SONAME 'server_audit.so';

次のコマンドを使用して、プラグインが正常に開始されたかどうかを確認します。ステータス = アクティブ:

show plugins;
......
+----------------------------+----------+--------------------+-----------------+---------+
| Name                       | Status   | Type               | Library         | License |
+----------------------------+----------+--------------------+-----------------+---------+
| SERVER_AUDIT               | ACTIVE   | AUDIT              | server_audit.so | GPL     |
+----------------------------+----------+--------------------+-----------------+---------+

2. プラグインパラメータの監査

次のパラメータを使用して、監査プラグインに関連するパラメータを表示できます。

root@mysql 14:33:  [(none)]>show variables like '%audit%';
+-------------------------------+-----------------------+
| Variable_name                 | Value                 |
+-------------------------------+-----------------------+
| server_audit_events           |                       |
| server_audit_excl_users       |                       |
| server_audit_file_path        | server_audit.log      |
| server_audit_file_rotate_now  | OFF                   |
| server_audit_file_rotate_size | 1000000               |
| server_audit_file_rotations   | 9                     |
| server_audit_incl_users       |                       |
| server_audit_loc_info         |                       |
| server_audit_logging          | OFF                   |
| server_audit_mode             | 1                     |
| server_audit_output_type      | file                  |
| server_audit_query_log_limit  | 1024                  |
| server_audit_syslog_facility  | LOG_USER              |
| server_audit_syslog_ident     | mysql-server_auditing |
| server_audit_syslog_info      |                       |
| server_audit_syslog_priority  | LOG_INFO              |
+-------------------------------+-----------------------+

2.1 サーバー監査イベント

このパラメータは、保存する必要がある SQL ステートメントのタイプを設定します。保存できるタイプは次のとおりです:
CONNECT、QUERY、TABLE、QUERY_DDL、QUERY_DML、QUERY_DCL、QUERY_DML_NO_SELECT

このパラメータが設定されていない場合、すべての種類の SQL ステートメントがログに記録されます。

2.2server_audit_excl_users

ユーザー リスト: 設定後、このリスト内のユーザーの行動は記録されなくなります。これはブラックリストに相当します。

2.3 サーバー監査出力タイプ

ログ出力タイプを指定します。SYSLOG または FILE を指定できます。デフォルトの推奨モードは FILE モードです。

2.4 サーバー監査ファイルのパス

server_audit_output_type=file の場合、このパラメータを使用してログ保存ディレクトリを設定できます。デフォルトはserver_audit.logデータ ディレクトリです。

2.5server_audit_file_rotate_now

ログ ファイルのローテーションを強制します。

2.6 サーバー監査ファイルの回転サイズ

ログ ファイルのサイズを制限します。デフォルトは 1000000 です。

2.7 サーバー監査ファイルの回転

ログのローテーション数。デフォルト値は 0 で、ローテーションがないことを意味します。

2.8server_audit_incl_users

ユーザーリスト。設定後、どのユーザーの操作を記録する必要があるかを示します。優先度は、server_audit_excl_users パラメータリストよりも高くなります。

2.9server_audit_loc_info

内部情報はログに記録されますが、ユーザーは無視できます。

2.10 サーバー監査ロギング

デフォルトは OFF で、これを ON に設定すると、監査ログがオンになります。

2.11 サーバー監査モード

カーネル担当者が開発とデバッグに使用するパラメータ。ユーザーは無視できます。

2.12server_audit_query_log_limit

監査ログ レコード内の文字列の長さを制限します。デフォルトは 1024 です。

2.13 サーバー監査syslog_facility

SYSLOG モード変数には、何らかの「機能」を設定します。

2.14 サーバー監査_syslog_ident

監査ログの一部として ident を設定します。

2.15 サーバー監査_syslog_info

指定された文字列を監査ログに追加します。

2.16 サーバー監査_syslog_優先順位

SYSLOG-mode 変数は、syslog のログの優先順位を定義します。

3. 監査プラグインの使用

監査ログをオンにします。各ログのサイズは 5G で、10 個のファイルをローテーションできます。

server_audit_logging = ON
server_audit_file_path = /pg_data/mysql_audit_log
server_audit_file_rotate_size = 5G
server_audit_file_rotations = 10
server_audit_file_rotate_now = ON

事前にserver_audit_file_pathパラメータのディレクトリを作成し、mysql属性グループを設定してからMySQLサービスを再起動する必要があります。

監査ログの記録形式は次のとおりです。

[timestamp],[serverhost],[username],[host],[connectionid],[queryid],[operation],[database],[object],[retcode]
20230830 15:55:51,db4,root,localhost,2,0,CONNECT,,,0
20230830 15:55:51,db4,root,localhost,2,1,QUERY,,'select @@version_comment limit 1',0
20230830 15:55:51,db4,root,localhost,2,2,QUERY,,'select USER()',0
20230830 15:55:56,db4,root,localhost,2,3,QUERY,,'show databases',0
20230830 15:56:16,db4,root,localhost,2,4,QUERY,,'SELECT DATABASE()',0
20230830 15:56:16,db4,root,localhost,2,6,QUERY,op_service_db,'show databases',0
20230830 15:56:16,db4,root,localhost,2,7,QUERY,op_service_db,'show tables',0
20230830 15:56:19,db4,root,localhost,2,19,QUERY,op_service_db,'show tables',0
20230830 15:59:25,db4,root,localhost,2,20,QUERY,op_service_db,'set global server_audit_syslog_ident = \'test01\'',0

4. 監査プラグインをアンインストールする

次の SQL を実行してプラグインをアンインストールします。

UNINSTALL PLUGIN 'server_audit';

5. まとめ

上記は監査ログの設定と使用手順ですが、監査を有効にするとデータベースのパフォーマンスのオーバーヘッドが増加するため、ディスク容量の使用量に注意する必要があることに注意してください。

おすすめ

転載: blog.csdn.net/qq_42768234/article/details/132580726