AWS RDS MySQLデータベース監査がオンになっています

異なるセキュリティニーズ、データベース監査するだけでなく、話題を懸念し、多くのお客様に。RDS MySQLの場合、我々は、各ユーザーのログイン、および操作情報を監査することができますか?答えはイエスです。

MySQLのEnterprise Editionには、この機能を持っている課金コンポーネントです。コミュニティ版MySQLは、一般的な監査プラグインは、「MariaDB監査プラグイン」とPercona監査プラグインです。

RDSのMysql、監査アプローチの1 AWSコミュニティバージョン、公式文書に詳述する方法を用いて、「MariaDB監査プラグイン」を使用。この記事では、設定方法にはなりません。次のパラメータが設定されていることに注意してください。

https://docs.amazonaws.cn/AmazonRDS/latest/UserGuide/Appendix.MySQL.Options.AuditPlugin.html

オプションの設定

有効な値

デフォルト値

説明

SERVER_AUDIT_FILE_PATH

/ rdsdbdata /ログ/監査/

/ rdsdbdata /ログ/監査/

ログファイルの場所。ログファイルには含まれていSERVER_AUDIT_EVENTSのレコードに指定された活動を。詳細については、ビューとリストデータベースのログファイルMySQLデータベースのログファイルを

SERVER_AUDIT_FILE_ROTATE_SIZE

1-1000000000

1000000

このサイズに達すると、バイトでは、ファイルの回転につながることができます。詳細については、ログファイルのサイズを

SERVER_AUDIT_FILE_ROTATIONS

0-100

9

ログローテーションの数を保存します。詳細については、ログファイルのサイズをし、データベースログファイルをダウンロードしてください

SERVER_AUDIT_EVENTS

CONNECT QUERY

CONNECT QUERY

活動の種類にログに記録されます。監査プラグインをインストールMariaDBは自分でログインすることができます。

CONNECT :データベースからデータベース接続と切断の成功と失敗の記録。

QUERY :実行中のすべてのクエリのためのテキストデータベースレコード。

TABLE :クエリを実行するために、データベースに対するクエリによって影響を受けるテーブルのレコード。

MariaDBのために、サポートCONNECT QUERY およびTABLEを

MySQLの場合、サポートCONNECT およびQUERYを

SERVER_AUDIT_INCL_USERS

コンマで区切られた複数の値

ノー

それだけで、指定したユーザーのアクティビティが含まれています。デフォルトでは、すべてのユーザーの活動を記録します。場合SERVER_AUDIT_EXCL_USERS SERVER_AUDIT_INCL_USERSは、両方のユーザーが指定し、ユーザの活動が記録されます。

SERVER_AUDIT_EXCL_USERS

コンマで区切られた複数の値

ノー

指定されたユーザのアクティビティを除外します。デフォルトでは、すべてのユーザーの活動を記録します。場合SERVER_AUDIT_EXCL_USERS SERVER_AUDIT_INCL_USERSは、両方のユーザーが指定し、ユーザの活動が記録されます。

rdsadminのユーザーは、データベースの状態をチェックするために毎秒1回のデータベースを照会します。あなたの他の設定に応じて、この活動は、ログファイルのサイズが非常に急速に成長する可能性があります。あなたはこの活動を記録していない場合は、してくださいrdsadmin にユーザーをSERVER_AUDIT_EXCL_USERSのリスト。

注意を払います

すべてのユーザーがために常に記録されますCONNECT 活動を、このオプションが指定されたユーザを設定した場合でも、。

SERVER_AUDIT_LOGGING

ロギングが有効です。以下のための唯一の有効な値はON Amazon RDSがロギングを無効化をサポートしていません。ロギングを無効にしたい場合は、MariaDBの監査プラグインを削除します。詳細については、MariaDB監査プラグインを削除します

2.私たちは、監査ログにコンソールに表示することができ、監査機能を開きます。

1.png

以下3.私たちは、情報を記録したものを最終的に監査ログ、見てください。

次のように3.1 Iレコードフォアグラウンド操作は次のとおりです。

管理者ユーザのログインデータベースを使用して3.1.1

#mysqlの-hmysql-rds.cq7qaukj3smd.rds.cn-northwest-1.amazonaws.com.cn -uadmin -pxxxxx

3.1.2ユーザーTEST2を作成し、新しいのいくつかを与えます

mysql>  GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP, RELOAD, PROCESS, REFERENCES, INDEX, ALTER, SHOW DATABASES, CREATE TEMPORARY TABLES ON *.* TO 'test2'@'ec2-52-80-168-237.cn-north-1.compute.amazonaws.com.cn'  identified by 'xxxxx' WITH GRANT OPTION;
Query OK, 0 rows affected, 1 warning (0.02 sec)

3.1.3 使用新建的用户连接数据库

# mysql -hmysql-rds.cq7qaukj3smd.rds.cn-northwest-1.amazonaws.com.cn -utest2 -pxxxxx

3.1.4  执行数据库切换,创建表等命令

mysql> use tests;
mysql> create table xx  as select * from liang;
mysql> commit;  -----注释:create 是DDL语句,默认提交,所以这里commit没有意义。

3.2 audit log如下,可以看到以下几点信息

3.2.1. 谁访问和执行的,来至于哪里?

 --test2,ec2-52-80-168-237.cn-north-1.compute.amazonaws.com.cn

3.2.2. 执行的全部操作信息记录

20190726 15:10:01,ip-10-4-2-104,admin,ec2-52-80-168-237.cn-north-1.compute.amazonaws.com.cn,13,883,QUERY,,'GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP, RELOAD, PROCESS, REFERENCES, INDEX, ALTER, SHOW DATABASES, CREATE TEMPORARY TABLES ON *.* TO \'test2\'@\'ec2-52-80-168-237.cn-north-1.compute.amazonaws.com.cn\' IDENTIFIED WITH \'mysql_native_password\' AS \'*01A6717B58FF5C7EAFFF6CB7C96F7428EA65FE4C\' WITH GRANT OPTION',0
20190726 15:10:03,ip-10-4-2-104,admin,ec2-52-80-168-237.cn-north-1.compute.amazonaws.com.cn,13,0,DISCONNECT,,,0
......
20190726 15:10:10,ip-10-4-2-104,test2,ec2-52-80-168-237.cn-north-1.compute.amazonaws.com.cn,14,0,CONNECT,,,0
20190726 15:10:10,ip-10-4-2-104,test2,ec2-52-80-168-237.cn-north-1.compute.amazonaws.com.cn,14,893,QUERY,,'select @@version_comment limit 1',0
20190726 15:10:19,ip-10-4-2-104,test2,ec2-52-80-168-237.cn-north-1.compute.amazonaws.com.cn,14,894,QUERY,,'SELECT DATABASE()',0
20190726 15:10:19,ip-10-4-2-104,test2,ec2-52-80-168-237.cn-north-1.compute.amazonaws.com.cn,14,896,QUERY,tests,'show databases',0
20190726 15:10:19,ip-10-4-2-104,test2,ec2-52-80-168-237.cn-north-1.compute.amazonaws.com.cn,14,897,QUERY,tests,'show tables',0
20190726 15:10:31,ip-10-4-2-104,test2,ec2-52-80-168-237.cn-north-1.compute.amazonaws.com.cn,14,913,QUERY,tests,'create table as select * from liang',1064
......
20190726 15:10:39,ip-10-4-2-104,test2,ec2-52-80-168-237.cn-north-1.compute.amazonaws.com.cn,14,922,QUERY,tests,'create table xx  as select * from liang',0
20190726 15:10:43,ip-10-4-2-104,test2,ec2-52-80-168-237.cn-north-1.compute.amazonaws.com.cn,14,923,QUERY,tests,'commit',0

4. 当然审计日志会记录数据库的全部操作,自然也就有一些我们不需要的信息参杂其中。例如RDS后台操作用户rdsadmin的全部操作记录。

突然意识到,audit log,也可以用来研究AWS RDS后面实现的一些自动化运维的原理。

20190726 15:10:20,ip-10-4-2-104,rdsadmin,localhost,2,900,QUERY,,'SELECT 1',0
20190726 15:10:20,ip-10-4-2-104,rdsadmin,localhost,2,901,QUERY,,'SELECT 1',0
20190726 15:10:20,ip-10-4-2-104,rdsadmin,localhost,2,902,QUERY,,'SELECT 1',0
20190726 15:10:20,ip-10-4-2-104,rdsadmin,localhost,2,903,QUERY,,'SELECT count(*) from information_schema.TABLES WHERE TABLE_SCHEMA = \'mysql\' AND TABLE_NAME = \'rds_heartbeat2\'',0
20190726 15:10:20,ip-10-4-2-104,rdsadmin,localhost,2,904,QUERY,,'SELECT 1',0
20190726 15:10:20,ip-10-4-2-104,rdsadmin,localhost,2,905,QUERY,,'SELECT value FROM mysql.rds_heartbeat2',0
20190726 15:10:20,ip-10-4-2-104,rdsadmin,localhost,2,906,QUERY,,'SELECT 1',0
20190726 15:10:20,ip-10-4-2-104,rdsadmin,localhost,2,907,QUERY,,'SELECT @@GLOBAL.read_only',0
20190726 15:10:25,ip-10-4-2-104,rdsadmin,localhost,2,908,QUERY,,'SELECT 1',0
20190726 15:10:25,ip-10-4-2-104,rdsadmin,localhost,2,909,QUERY,,'SELECT NAME, VALUE FROM mysql.rds_configuration',0
20190726 15:10:25,ip-10-4-2-104,rdsadmin,localhost,2,910,QUERY,,'SELECT 1',0
20190726 15:10:25,ip-10-4-2-104,rdsadmin,localhost,2,911,QUERY,,'SELECT @@session.transaction_read_only',0
20190726 15:10:25,ip-10-4-2-104,rdsadmin,localhost,2,912,QUERY,,'PURGE BINARY LOGS TO \'mysql-bin-changelog.008941\'',0

5. 但是真的rdsadmin的操作信息,是不需要做审计的。我们可以考虑不记录rdsadmin用户的审计信息,只需修改“选项组”的参数SERVER_AUDIT_EXCL_USERS=rdsadmin即可

5.1 关闭之后的audit log输出:

20190727 14:24:54,ip-10-4-0-205,rdsadmin,localhost,19,0,CONNECT,,,0
20190727 14:24:54,ip-10-4-0-205,rdsadmin,localhost,19,0,DISCONNECT,,,0

---正常情况下,rdsadmin 用户会每秒查询一次数据库,以检查数据库的运行状况。不记录rdsadmin的信息之后,世界立即清净了许多

20190727 14:25:04,ip-10-4-0-205,admin,ec2-52-80-168-237.cn-north-1.compute.amazonaws.com.cn,18,2689,QUERY,,'create database user',0
20190727 14:25:06,ip-10-4-0-205,admin,ec2-52-80-168-237.cn-north-1.compute.amazonaws.com.cn,18,2690,QUERY,,'SELECT DATABASE()',0
20190727 14:25:06,ip-10-4-0-205,admin,ec2-52-80-168-237.cn-north-1.compute.amazonaws.com.cn,18,2692,QUERY,user,'show databases',0
20190727 14:25:06,ip-10-4-0-205,admin,ec2-52-80-168-237.cn-north-1.compute.amazonaws.com.cn,18,2693,QUERY,user,'show tables',0
20190727 14:25:26,ip-10-4-0-205,admin,ec2-52-80-168-237.cn-north-1.compute.amazonaws.com.cn,18,2715,QUERY,user,'create table xx (id int)',0
20190727 14:25:29,ip-10-4-0-205,admin,ec2-52-80-168-237.cn-north-1.compute.amazonaws.com.cn,18,2716,QUERY,user,'commit',0

6. 针对数据库的审计,加密等操作,在增加安全性的同时,也要付出性能损耗的成本。

下文是AWS官方blog,其中讨论到RDS Mysql在开启审计之后,还是有比较大的性能损耗的。

https://aws.amazon.com/cn/blogs/china/cloudwatch-logs-kinesis-firehose-athena-quicksight-amazon-aurora/?nc1=b_rp

7. 开启audit之后,会有大量的audit log产生,但是RDS的日志会滚动删除,不能长久的保存。如果为了长时间审计的需求,将audit保存下来,还可以做更多的统计和分析。

通过RDS的Modify页面,将audit log输出到cloudwatch。

2.png

至此,RDS Mysql数据库审计功能如何使用已经了解了。后续,我会继续分享,如何利用audit作为数据源。

通过数据处理,汇总到数据集/湖 中,以进一步分析使用。


おすすめ

転載: blog.51cto.com/hsbxxl/2424208