mysql - 无法理解 ibd 文件加密如何帮助保护 MySql 中的数据

标签 mysql encryption innodb tablespace

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

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

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

更新

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

最佳答案

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

使用插件(等),SELECT自动进行解密,使加密变得“透明”。然而它是真实的。您确实必须做一些事情才能启动该程序,对吗?这时“ key ”被加载到 RAM 中使用。

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

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

AES 函数可让您加密/解密单个字符串(例如一次一行中的一列)。但这需要您来保护加密/解密 key 。或者至少永远不要将其以明文形式保存在磁盘上。

了解“静态加密”与“动态加密”。加密文件是“静态”的。聪明的黑客会攻击您的代码,以便他可以运行 SELECT 加载凭据后

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

我已经给您提供了针对您的数据的威胁的简短列表。真正的 list 要长得多。您需要找到这样一个列表,并决定您愿意投资哪些内容来防范。安全并不简单。

关于mysql - 无法理解 ibd 文件加密如何帮助保护 MySql 中的数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52223526/

相关文章:

mysql - 如何在MySQL递归查询中求和

php - 每次获取相同值时,Mysql 查询都会运行 COUNT

asp.net - Web 服务开发从哪里开始?

apache - 更新 Apache 上的 Let's Encrypt 配置

sql - MySQL 查询需要更长的索引?

mysql - 帮助查询直接更改数据库中的值

php - MySqli 添加多行到数据库

delphi - 如何在不使用外部 DLL 或运行时的情况下压缩和加密大文件?

mysql - 如何提高 MySQL INSERT 和 UPDATE 性能?

mysql - 如何从 varchar 列中获取单词及其在 mysql 中的出现频率