作者: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)
> mysqlsh
mysql> select @@version;
> bin/mysql -u root -p
INSTALL COMPONENT "file://component_audit_api_message_emit";<