我使用mysql 8.0.11和keyring\u文件插件,加密了数据库中的一个特定表,比如t1。
当我检查t1.ibd文件的内容时,我可以看到内容在成功加密之后被加密了。但是,即使ibd文件中的内容是加密的,我仍然使用query(select*fromt1)查看表内容。
那么,这是否意味着加密只在ibd文件(包含数据和索引)上工作,但如果我有数据库凭据,我将继续看到表内容而不会出现任何问题?
更新
我读了一些评论,并想补充以下问题来澄清我原来的疑问:加密ibd文件后,如果黑客侵入我的数据库所在系统,黑客将能够看到实际数据。那么,加密ibd文件是如何帮助我保护数据的呢?
1条答案
按热度按时间ruyhziif1#
一
.ibd
文件包含表的所有数据和所有索引。(““表空间”可以包含多个表;原理相同。)使用插件(etc),
SELECT
自动进行解密,使加密“透明”。然而,它是真实的。你必须做些什么才能启动程序,对吗?这时“钥匙”被装入ram中使用。加密.ibd文件可以保护您免受一种威胁:有人窃取(或复制)您的磁盘驱动器。
但要小心。有临时表、binlog、其他日志等,它们可能被加密,也可能不被加密。他们暂时保存了一些数据。早期版本的mysql加密未能包含其中一些。
aes函数允许您对单个字符串进行加密/解密(例如一次一行中的一列)。但这就让您来保护en/解密密钥。或者至少从来没有把它作为明文存储在磁盘上。
阅读“静止加密”与“飞行加密”的对比。加密文件是“静止的”。聪明的黑客会攻击你的代码,这样他就可以运行
SELECT
在加载凭据之后。无论是否加密,“sql注入”(qv)都是一种成熟的侵入数据甚至文件系统的方法。例如,通过验证/转义来自html的/etc数据来实现保护
<form>
. 加密文件不能防止这种情况。我给了你一份针对你的数据的威胁清单。真正的名单要长得多。你需要找到这样一个清单,并决定哪些是你愿意投资的防范措施。安全并不简单。