mysql - 无法理解 ibd 文件加密如何帮助保护 MySql 中的数据
问题描述
我正在使用 MySql 8.0.11 并使用 keyring_file 插件,我在我的数据库中加密了一个特定的表,比如 t1。
当我检查 t1.ibd 文件的内容时,我可以看到内容在加密成功后被加密。但是,即使 ibd 文件中的内容被加密,我仍然使用查询 (select * from t1) 继续查看表内容。
那么,这是否意味着加密仅适用于 ibd 文件(其中包含数据和索引),但如果我有数据库凭据,我将继续查看表内容而没有任何问题?
更新
我阅读了几条评论并想添加以下问题以澄清我的原始查询: 加密 ibd 文件后,如果黑客入侵我托管数据库的系统,黑客将能够看到实际数据. 那么,加密 ibd 文件如何帮助我保护数据?
解决方案
一个.ibd
文件包含一个表的所有数据和所有索引。(“表空间”可以包含多个表,原理相同。)
使用插件(等),SELECT
自动进行解密,使加密“透明”。尽管如此,它是真实的。您确实必须做一些事情才能启动该程序,对吗?那是“密钥”被加载到 RAM 中以供使用的时候。
加密 .ibd 文件可以保护您免受一种威胁:有人抢夺(或复制)您的磁盘驱动器。
但要小心。有临时表、二进制日志、其他日志等,可能会或可能不会加密。他们暂时保存了一些数据。MySQL 加密的早期版本未能包含其中的一些。
AES函数让您可以对单个字符串进行加密/解密(例如一次一行中的一列)。但这留给您保护加密/解密密钥。或者至少永远不要将它作为明文放在磁盘上。
阅读“静态加密”与“飞行中加密”。加密文件是“静止的”。聪明的黑客会攻击您的代码,以便在加载凭据SELECT
后运行。
无论是否加密,“SQL 注入”(qv) 都是侵入数据甚至文件系统的成熟方法。例如,对此的保护来自验证/转义/等来自 HTML 的数据<form>
。加密文件不能防止这种情况。
我为您提供了针对您的数据的威胁的简短列表。真正的清单要长得多。您需要找到这样的清单并决定您愿意投资于哪些清单来防范。安全并不简单。
推荐阅读
- reactjs - 构建 React.js 应用程序时出现空白页
- jquery - 路由更改时未加载第三方库
- python - 定义一个仅用于一次性使用的变量是否被认为是 Pythonic?
- amazon-web-services - AWS CDK 使用 MFA 但没有立即到期
- python - 如何在循环中从另一个数据帧创建多个数据帧
- ios - 如何在 iOS 应用程序中将自定义金额传递给应用内购买
- angularjs - AngularJS select 在 Iphone 14.6 更新上无法正常工作
- momentjs - Momentjs 日期“06/05/2021”,格式“M/D/YY”被认为是 Fri Jun 05 2020 00:00:00 GMT+0300.... 为什么以及如何处理?
- angular - 如何在主机上部署 Angular + Laravel 应用程序?
- kotlin - Kotlin 中具体化泛型的重载解决方案