验证 MariaDB 10.1 加密
Verifying MariaDB 10.1 encryption
我已经在 MariaDB 上设置 table-level InnoDB database encryption。
我想知道是否有任何方法可以确认数据是否真正加密。我已经尝试在表中搜索 /var/lib/mysql/ibdata1
样本数据,但我不知道这是否是可靠的测试。
我的测试建议是将完整的数据集复制到另一个没有加密密钥的节点,然后尝试启动 MySQL 并查询加密表。我正在做一个(大)假设,即由于缺少有效的加密密钥,它们将不可读。
除非您有专门的工具来解析磁盘上的文件,否则可能会很困难。也许像 Jeremy Cole 的 innodb_ruby 这样的东西会是另一个试金石 https://github.com/jeremycole/innodb_ruby.
我在 mariadb.com 上发布了这个问题,那里的建议是对一些已知数据执行 grep。
Rackspace 的一位 DBA 建议改用字符串命令,以更好地处理二进制数据,例如:
strings /var/lib/mysql/sample_table/user.ibd | grep "knownuser"
这种方法 return 在加密的 table 上没有结果,在未加密的 table 上 return 没有结果(假设两者都已 "knownuser" 加载到他们)。
[如果更改加密日志的密钥,可能不起作用。]
- 停止数据库服务器。
- 备份密钥文件
更改密钥文件中的密钥。 (不要删除 - 它仍然必须保持有效密钥,否则服务器无法重新启动)
再次启动 MariaDB。
- 尝试阅读 table(例如使用 phpMyAdmin)。
如果加密正确,则在尝试读取加密的 table 时会有一个答案:"The table is encrypted..."。
- 阻止玛丽亚
- 恢复备份
- 重启玛丽亚
可以查询information_schema.innodb_tablespaces_encryption。当 innodb tablespace 被加密时,它存在于 table.
SELECT * FROM information_schema.INNODB_TABLESPACES_ENCRYPTION
WHERE NAME LIKE 'db_encrypt%';
我已经在 MariaDB 上设置 table-level InnoDB database encryption。
我想知道是否有任何方法可以确认数据是否真正加密。我已经尝试在表中搜索 /var/lib/mysql/ibdata1
样本数据,但我不知道这是否是可靠的测试。
我的测试建议是将完整的数据集复制到另一个没有加密密钥的节点,然后尝试启动 MySQL 并查询加密表。我正在做一个(大)假设,即由于缺少有效的加密密钥,它们将不可读。
除非您有专门的工具来解析磁盘上的文件,否则可能会很困难。也许像 Jeremy Cole 的 innodb_ruby 这样的东西会是另一个试金石 https://github.com/jeremycole/innodb_ruby.
我在 mariadb.com 上发布了这个问题,那里的建议是对一些已知数据执行 grep。
Rackspace 的一位 DBA 建议改用字符串命令,以更好地处理二进制数据,例如:
strings /var/lib/mysql/sample_table/user.ibd | grep "knownuser"
这种方法 return 在加密的 table 上没有结果,在未加密的 table 上 return 没有结果(假设两者都已 "knownuser" 加载到他们)。
[如果更改加密日志的密钥,可能不起作用。]
- 停止数据库服务器。
- 备份密钥文件
更改密钥文件中的密钥。 (不要删除 - 它仍然必须保持有效密钥,否则服务器无法重新启动)
再次启动 MariaDB。
- 尝试阅读 table(例如使用 phpMyAdmin)。
如果加密正确,则在尝试读取加密的 table 时会有一个答案:"The table is encrypted..."。
- 阻止玛丽亚
- 恢复备份
- 重启玛丽亚
可以查询information_schema.innodb_tablespaces_encryption。当 innodb tablespace 被加密时,它存在于 table.
SELECT * FROM information_schema.INNODB_TABLESPACES_ENCRYPTION
WHERE NAME LIKE 'db_encrypt%';