日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

mysql8审计_审计对存储在MySQL 8.0中的分类数据的更改

發布時間:2024/9/27 数据库 23 豆豆
生活随笔 收集整理的這篇文章主要介紹了 mysql8审计_审计对存储在MySQL 8.0中的分类数据的更改 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

作者:Mike Frank ?譯:徐軼韜

面臨的挑戰

使用敏感信息時您需要擁有審計日志。通常,此類數據將包含一個分類級別作為行的一部分,定義如何處理、審計等策略。在之前的博客中,我討論了如何審計分類數據查詢。本篇將介紹如何審計對機密數據所做的數據更改。

敏感數據可能被標記為–高度敏感

最高機密

分類

受限制的

需要清除

高度機密

受保護的

合規要求通常會要求以某種方式對數據進行分類或標記,并審計該數據上數據庫中的事件。特別是對于可能具有數據訪問權限但通常不應查看某些數據的管理員。

敏感數據可以與帶有標簽的數據穿插在一起,例如公開

未分類

其他

當然,您可以在MySQL Audit中打開常規的插入/更新/選擇審計。但是在這種情況下,您將審計所有的更改。如果您只想審計敏感數據是否已更改,下面是您可以執行的一種方法。

一個解決方法

本示例使用MySQL觸發器來審計數據更改。

我們的示例表很簡單,包含id,name,desc,并且還有一個用于sec_level的附加列。我們要審計sec_level高的行– H,H–表示已插入,更新為H或從H更新或刪除。CREATE SCHEMA test_datachange_audit;

CREATE TABLE `test_datachange_audit`.`info_cat_test` (

`id` INT NOT NULL,

`name` VARCHAR(20) NULL,

`desc` VARCHAR(20) NULL,

`sec_level` CHAR(1) NULL,

PRIMARY KEY (`id`));

?

讓我們添加幾行數據。INSERT INTO `test_datachange_audit`.`info_cat_test` (`id`, `name`, `desc`, `sec_level`) VALUES ('1', 'fred', 'engineer', 'H');

INSERT INTO `test_datachange_audit`.`info_cat_test` (`id`, `name`, `desc`, `sec_level`) VALUES ('2', 'jill', 'program manager', 'M');

INSERT INTO `test_datachange_audit`.`info_cat_test` (`id`, `name`, `desc`, `sec_level`) VALUES ('3', 'joe', 'maintenance', 'L');

啟用EE審計(要求使用企業版?–如果需要使用 MySQL shell連接顯示版本信息。–您將需要MySQL EE 8.0.17或更高版本–截至本文撰寫時,最新版本為8.0.22)

> mysqlshmysql> select @@version;

> bin/mysql -u root -pINSTALL COMPONENT "file://component_audit_api_message_emit";

在[mysqld]中啟用啟動時的審計并設置選項。例如:

>vi etc/my.cnfplugin-load-add=audit_log.so

audit-log=FORCE_PLUS_PERMANENT

audit-log-format=JSON

audit-log-strategy=SYNCHRONOUS

有關審計選項和變量的更多詳細信息,請參考審計日志手冊。

重新啟動MySQL服務器。

注意:有多種方法可以啟用審計而無需重新啟動。但是您要強制執行審計-因此,上面是您的操作方式。

以下簡單過程將用于寫入我想在我的審計跟蹤中擁有的審計元數據。FOR和ACTION是寫入審計日志的元數據標簽。在這種情況下,FOR將具有要更改其級別數據的名稱,而ACTION將是在更新(之前和之后),插入或刪除時使用的名稱。DELIMITER $$

CREATE PROCEDURE test_datachange_audit.audit_api_message_emit_sp(name CHAR(20), ttype CHAR(3))

BEGIN

DECLARE aud_msg VARCHAR(255);

select audit_api_message_emit_udf('sec_level_trigger',

'TRIGGER audit_change_attempt',

'Change H level sec data',

'FOR ', name,

'ACTION',ttype

) into aud_msg;

END$$

DELIMITER ;

接下來,我們需要在表格上創建觸發器DELIMITER $$

CREATE TRIGGER test_datachange_audit.audit_delete

BEFORE DELETE ON `test_datachange_audit`.`info_cat_test`

FOR EACH ROW

BEGIN

IF OLD.sec_level = 'H' THEN

CALL audit_api_message_emit_sp(OLD.name,'DEL' );

END IF;

END$$

DELIMITER ;DELIMITER $$

CREATE TRIGGER test_datachange_audit.audit_insert

BEFORE INSERT ON `test_datachange_audit`.`info_cat_test`

FOR EACH ROW

BEGIN

IF NEW.sec_level = 'H' THEN

CALL audit_api_message_emit_sp(NEW.name,'INS');

END IF;

END$$

DELIMITER ;DELIMITER $$

CREATE TRIGGER test_datachange_audit.audit_update

BEFORE UPDATE ON `test_datachange_audit`.`info_cat_test`

FOR EACH ROW

BEGIN

IF OLD.sec_level = 'H' THEN

CALL audit_api_message_emit_sp(OLD.name,'UPO');

END IF;

IF NEW.sec_level = 'H' THEN

CALL audit_api_message_emit_sp(NEW.name, 'UPN');

END IF;

END$$

DELIMITER ;

接下來運行在“ H”級或“ M”和“ L”級更改

請記住,只有對“ H” sec_level列進行更改時,觸發器才會審計。DELETE from `test_datachange_audit`.`info_cat_test` where id=1;

INSERT INTO `test_datachange_audit`.`info_cat_test` (`id`, `name`, `desc`, `sec_level`) VALUES ('5', 'joey', 'spy', 'H');

INSERT INTO `test_datachange_audit`.`info_cat_test` (`id`, `name`, `desc`, `sec_level`) VALUES ('8', 'jessie', 'engineer', 'L');

UPDATE`test_datachange_audit`.`info_cat_test` set sec_level='H' where id=2;

UPDATE`test_datachange_audit`.`info_cat_test` set sec_level='M' where id=2;

您將看到ACTION的4個不同標簽-INS,DEL,UPN(N的意思為新的–表示沒有“ H”的人已更新為“ H”)和UPO(O表示舊的–帶有“ H”的人從'H'進行了更新)

現在,我們可以在審計日志中看到它。

注意:使用位置–默認情況下是您的“select @@datadir;”

對于我而言,我將運行以下OS命令,并尋找sec_level_trigger來從日志中過濾掉這些審計事件。>sudo cat usr/local/mysql/data/audit.log | grep sec_level_trigger

{ "timestamp": "2020-11-17 20:04:32", "id": 13, "class": "message", "event": "user", "connection_id": 9, "account": { "user": "root", "host": "localhost" }, "login": { "user": "root", "os": "", "ip": "127.0.0.1", "proxy": "" }, "message_data": { "component": "sec_level_trigger", "producer": "TRIGGER audit_change_attempt", "message": "Change H level sec data", "map": { "Action": "DEL", "FOR ": "fred" } } },

{ "timestamp": "2020-11-17 20:04:32", "id": 14, "class": "message", "event": "user", "connection_id": 9, "account": { "user": "root", "host": "localhost" }, "login": { "user": "root", "os": "", "ip": "127.0.0.1", "proxy": "" }, "message_data": { "component": "sec_level_trigger", "producer": "TRIGGER audit_change_attempt", "message": "Change H level sec data", "map": { "Action": "DEL", "FOR ": "joey" } } },

{ "timestamp": "2020-11-17 20:04:35", "id": 2, "class": "message", "event": "user", "connection_id": 9, "account": { "user": "root", "host": "localhost" }, "login": { "user": "root", "os": "", "ip": "127.0.0.1", "proxy": "" }, "message_data": { "component": "sec_level_trigger", "producer": "TRIGGER audit_change_attempt", "message": "Change H level sec data", "map": { "Action": "INS", "FOR ": "fred" } } },

{ "timestamp": "2020-11-17 20:04:45", "id": 2, "class": "message", "event": "user", "connection_id": 9, "account": { "user": "root", "host": "localhost" }, "login": { "user": "root", "os": "", "ip": "127.0.0.1", "proxy": "" }, "message_data": { "component": "sec_level_trigger", "producer": "TRIGGER audit_change_attempt", "message": "Change H level sec data", "map": { "Action": "DEL", "FOR ": "fred" } } },

{ "timestamp": "2020-11-17 20:04:47", "id": 2, "class": "message", "event": "user", "connection_id": 9, "account": { "user": "root", "host": "localhost" }, "login": { "user": "root", "os": "", "ip": "127.0.0.1", "proxy": "" }, "message_data": { "component": "sec_level_trigger", "producer": "TRIGGER audit_change_attempt", "message": "Change H level sec data", "map": { "Action": "INS", "FOR ": "joey" } } },

{ "timestamp": "2020-11-17 20:04:51", "id": 2, "class": "message", "event": "user", "connection_id": 9, "account": { "user": "root", "host": "localhost" }, "login": { "user": "root", "os": "", "ip": "127.0.0.1", "proxy": "" }, "message_data": { "component": "sec_level_trigger", "producer": "TRIGGER audit_change_attempt", "message": "Change H level sec data", "map": { "Action": "UPN", "FOR ": "jill" } } },

{ "timestamp": "2020-11-17 20:04:54", "id": 2, "class": "message", "event": "user", "connection_id": 9, "account": { "user": "root", "host": "localhost" }, "login": { "user": "root", "os": "", "ip": "127.0.0.1", "proxy": "" }, "message_data": { "component": "sec_level_trigger", "producer": "TRIGGER audit_change_attempt", "message": "Change H level sec data", "map": { "Action": "UPO", "FOR ": "jill" } } },

結論

您可能會采用這種方法。這只是一個例子。通常審計其特性與數量的關系。以及有關評估審計日志內容的信息-這樣您就可以發現任何濫用情況。

與往常一樣,感謝您使用MySQL。

感謝您關注“MySQL解決方案工程師”!

總結

以上是生活随笔為你收集整理的mysql8审计_审计对存储在MySQL 8.0中的分类数据的更改的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。