乾物|MySQLデータベースセキュリティの監査

4974 ワード

どの会社も業務の高速成長を望んでいるので、いくつかの爆金製品や爆金業務を出して、会社の収益を高速に上昇させることができるほうがいいです.しかし、データベース管理者の立場に立つと、これは実際の圧力であり、業務の高速成長は必然的にデータ量の急増をもたらす.データベース・システムの選択と設計は、ビジネス・システム全体をサポートする重要な要素です.
MySQLデータベースはクラウドベースのデータベース製品の一つであり、クラウドネイティブはクラウドデータベースに重要な動力を提供し、従来の自己構築データベースに比べて、クラウドデータベースは単一データベースよりも弾力性と拡張性が高い.
データベース監査は、主にデータベース・サーバに対する様々な操作行為を監視し、記録し、監査ログまたはデータベースに記録して、後で追跡、照会、分析を行い、ユーザー操作の監視と監査を実現するために使用されます.監査は非常に重要な仕事であり、企業データセキュリティシステムの重要な構成部分でもあります.
MySQLエンタープライズ版には監査機能が付いていますが、料金がかかります.MySQLコミュニティ版は監査機能がなく、コストの考慮に基づいて、多くのユーザーがコミュニティ版MySQLを業務システムデータベースとして採用している.コミュニティ版MySQLを使用して、重要な監査機能をどのように実現するかについて、本稿では、自己構築とクラウドサービスの2つの状況からこの問題を解決します.
MySQLデータベースを作成するシーン
本論文の自己構築データベースのすべての実験環境はwindow 10下MySQL 5に基づいている.7このバージョン.
方法一Genreal Log
デフォルトでは、MySQLはGeneral logをオンにしません.General logをオンにすると、MySQLはMySQL Serverに到達したすべてのSQL文を記録します.
General logステップをオンにします.
1、General Logのオープン状況を表示する:SQLコマンドshow variables like'%general_を実行するlog%’ ;デフォルトgeneral_が表示されます.ロゴはOFF:
2、General Logを開く:SQLコマンドset global generalを実行するlog=onでgeneral_を表示logが開きました:
3、検証:general_logが開くと、すべてのSQLへのアクセスがgeneral_に記録されます.log_fileが指すログファイル.いくつかのSQL文のテストを行います.
その後ZB-PF 11 H 2 E 3を確認する.logログファイルの内容は、さっき行った操作がログに記録されているのを見ました.
General Logをオンにすると、ユーザーが操作を実行する限り、正しいかどうかにかかわらずMySQLがログを記録します.そうすると、ログの量が膨大になり、データベースの効率に影響します.そのため、一般的にはオープン機能をお勧めしません.場合によっては、トラブルシューティングなどで一時的に開く可能性があります.
メソッド2 BinLog+Init_connect
BinLogはMySQL操作時に残されたログであり、BinLogはデータベースのリカバリとプライマリ・スレーブ・レプリケーションに使用できる一方で、データベースの監査に使用できます.
BinLogログでは、誰がどの時間帯にログインしたのかなどの情報を検索できないため、監査に必要な情報が不足しています.MySQLでは、接続ごとにinit_が先に実行されます.接続の初期化を行い、ここでユーザーのログイン名とthread ID値を取得できます.そしてBinLogに合わせて,各操作文の操作時間,操作者などの情報を追跡し,BinLogのログ情報を加えて監査を行う.
構成と検証の手順は次のとおりです.
1、監査用のデータベースとテーブルの作成:
2、auditdbデータを操作する権限を持つユーザーを作成する:
ユーザーがauditdbを操作する権限を追加します.
 1 MySQL> insert into mysql.db (Host,Db,User1,Insert_priv) values ('%','auditdb','','Y');
 2 Query OK, 1 row affected (0.03 sec)
 3 MySQL> flush privileges;
 4 Query OK, 0 rows affected (0.00 sec)

3、設定init_接続してMySQLデータベースを再起動し、初期化パラメータファイル[mysql]セクションに次の内容を追加します.
   1 log-bin=mysql-bin #  Binlog
   2 init_connect='insert into auditdb.accesslog(connectionid, connectionuser,logintime) values(connection_id(),user(),now());' #         

4、user 1ユーザーでログインし、書き込みと削除の操作を実行する.
5、mysqlbinlogツールでBinLogを確認し、delete操作によって対応するThreadIdを見つけ、前に作成した監査ログ表auditdb.アクセスログには、ThreadIDに基づいてユーザー登録情報が表示されます.
現在のbinlog mysqlbinを表示します.000029の内容、delete操作に対応するThreadID D:mysql 57 bin>mysqlbinlog.../data/mysql-bin.000029
BinlogからTest 2テーブルの削除に対応するthreadidが8であることがわかり、ThreadIDに基づいて監査テーブルにユーザのログイン情報を表示すると、この削除操作はuser 1ユーザが自機で実行する操作であることがわかる.
説明:このように監査を行うと、init-connectは接続時にのみ実行するため、データベースに大きな性能影響を及ぼすことはないが、init-connectはroot権限を持つユーザレコードを記録しない.
方法3監査プラグインの使用
商業版の監査プラグインのほか、3種類の監査プラグインPercona Audit Log Plugin、MariaDB Audit Plugin、McAfee SQL MyAudit Pluginが一般的です.このいくつかのプラグインの機能は大きく異なりますが、表示されている内容とフォーマットは少し違います.MariaDB Audit Pluginを例に、Mysqlデータの監査をプラグインで実現する方法を紹介します.
一、ダウンロードとインストール
1、MariaDB Audit Pluginプラグイン(ダウンロードアドレス:https://downloads.mariadb.org...
2、インストール:server_audit.dll対応するmysqlプラグインライブラリにコピーD:mysql 57 libplugin、installインストールコマンドを実行:
3、インストール検証:Mysql>show variables like'%audit%'
二、肝心な監査パラメータの説明
server_audit_logging:監査serverの起動または停止audit_events:記録イベントのタイプを指定し、カンマで区切られる複数の値(connect,query,table)を指定します.デフォルトでは、すべてのイベントを監査するために空です.server_audit_incl_users:どのユーザーのアクティビティが記録されるかを指定し、デフォルトではserver_よりもすべてのユーザーを監査します.audit_excl_users優先度の高いserver_audit_excl_users:server_を記録しないユーザーの動作を指定します.audit_output_type:SYSLOGまたはFILEのログ出力タイプを指定し、デフォルトで監査ファイルに出力
三、監査プロセスの例
1、監査mysql>set global server_を開くaudit_logging=on
検証テストのため、残りのパラメータはデフォルトで設定されています.
2、いくつかのデータベース操作を実行する:
3、監査ログの表示、server_audit.log、デフォルトはdataディレクトリの下にあります.
さっきMysqlデータベースでの操作は監査されていました.
パブリッククラウドRDSサービスを使用するシーン
現在、クラウドコンピューティングの普及により、クラウドサプライヤーはクラウドデータベースサービスを提供しており、もちろんMysqlはクラウドデータベースサービスの重要な一員である.従来のデータベースに比べて、クラウドデータベースは導入、管理、拡張が容易で、データの信頼性、セキュリティ、稼働状態の監視などのソリューションを提供します.では、クラウドデータベースMysqlでは、データベースの監査をどのように実現しているのでしょうか.京東クラウドデータベースMysqlを例にとると、京東クラウドのMysql監査機能はMariaDB Audit Pluginプラグインによって実現されています.クラウドデータベースMysql監査のオン、使用、オフなどの機能について説明します.
1、登録クラウドデータベースRDS管理コンソール;
2、SQL監査が必要な目標インスタンスを選択し、目標インスタンスをクリックし、インスタンス詳細ページに入り、SQL監査Tabページに切り替える.
3、監査状態スイッチをクリックすると、オンラインで監査のオンとオフを切り替えることができる.
4、いくつかのデータベースの操作を実行し、監査データを見る.監査が開始されると、SQL監査クエリー機能の説明は以下の通りです.
≪実行時間|Execute Time|oem_src≫:SQL監査クエリーの期間として、現在の時間から7日前の期間を選択できます.データベース:指定したデータベースのSQL文を表示できます.アカウント:指定したアカウントのSQL文を表示できます.
5、検索ボタンをクリックして、要求に合うSQL監査結果リストを表示する:
上記の例では、クラウドデータベースの管理とメンテナンスは、自己構築データベースよりも簡単であり、ユーザーが監査の方法、監査データの格納場所などに関心を持たないことがわかります.ただし、クラウドデータベースはエンドユーザーにクラウドサービスとして提供されるため、ユーザーはクラウドサービスの要求と使用説明に従って操作する必要があります.
重ポンド襲来618クラウドデータベース-MySQLに連れて行くには1割引しかかかりません
詳細については、クラウドデータベースをクリックしてください