首页 > 解决方案 > 无法理解 ibd 文件加密如何帮助保护 MySql 中的数据

问题描述

我正在使用 MySql 8.0.11 并使用 keyring_file 插件,我在我的数据库中加密了一个特定的表,比如 t1。

当我检查 t1.ibd 文件的内容时,我可以看到内容在加密成功后被加密。但是,即使 ibd 文件中的内容被加密,我仍然使用查询 (select * from t1) 继续查看表内容。

那么,这是否意味着加密仅适用于 ibd 文件(其中包含数据和索引),但如果我有数据库凭据,我将继续查看表内容而没有任何问题?

更新

我阅读了几条评论并想添加以下问题以澄清我的原始查询: 加密 ibd 文件后,如果黑客入侵我托管数据库的系统,黑客将能够看到实际数据. 那么,加密 ibd 文件如何帮助我保护数据?

标签: mysqlencryptioninnodbtablespace

解决方案


一个.ibd文件包含一个表的所有数据和所有索引。(“表空间”可以包含多个表,原理相同。)

使用插件(等),SELECT自动进行解密,使加密“透明”。尽管如此,它是真实的。您确实必须做一些事情才能启动该程序,对吗?那是“密钥”被加载到 RAM 中以供使用的时候。

加密 .ibd 文件可以保护您免受一种威胁:有人抢夺(或复制)您的磁盘驱动器。

但要小心。有临时表、二进制日志、其他日志等,可能会或可能不会加密。他们暂时保存了一些数据。MySQL 加密的早期版本未能包含其中的一些。

AES函数让您可以对单个字符串进行加密/解密(例如一次一行中的一列)。但这留给您保护加密/解密密钥。或者至少永远不要将它作为明文放在磁盘上。

阅读“静态加密”与“飞行中加密”。加密文件是“静止的”。聪明的黑客会攻击您的代码,以便在加载凭据SELECT 后运行。

无论是否加密,“SQL 注入”(qv) 都是侵入数据甚至文件系统的成熟方法。例如,对此的保护来自验证/转义/等来自 HTML 的数据<form>。加密文件不能防止这种情况。

我为您提供了针对您的数据的威胁的简短列表。真正的清单要长得多。您需要找到这样的清单并决定您愿意投资于哪些清单来防范。安全并不简单。


推荐阅读