MariaDB / MySQL表加密

时间:2016-05-29 09:23:38

标签: mysql encryption mariadb

This article就加密MariaDB数据库表的主题提供了广泛的讨论。另一个优秀的资源是this one。他们没有提到的一件事是在何处定义表级加密配置。我是否正确地假设这应该由

完成
  • 放置相关指令,例如plugin-load-add=file_key_management_plugin.so系统
  • 中的/etc/mysql/my.cnf
  • 创建加密密钥
  • 重新启动MariaDB服务器,最后
  • 在每个要加密的表上发布ALTER TABLE ENCRYPTED=YES ENCRYPTION_KEY_ID=NN;

即使这是正确的,我也会想到一个问题 - 如果攻击者同时访问加密密钥文件,这种加密如何保护受损数据?可能的解决方案是将加密密钥存储在配置为只能从指定IP地址访问的NFS共享文件夹中吗?

1 个答案:

答案 0 :(得分:7)

This article应该回答有关在MariaDB中进行此设置的大部分问题。与配置加密有关的答案实质上是"你做对了",但你也应该考虑加密日志文件(文章描述了如何)。

对于后者,使用具有有限访问权限的NFS卷应该提供良好的保护,如果服务器被物理删除以窃取数据,但是对于有人在系统上线时访问系统的情况,它似乎是一个不太可靠的解决方案通过访问服务器,可以轻松获得有问题的NFS卷和文件。 使用TPM(如果您的硬件允许)存储密钥可能是一个更好的解决方案 - 它旨在帮助解决此类问题。

是否可以选择将加密密钥链接到登录用户?考虑使用第二个数据库(或服务器)进行用户身份验证,并使用用户登录密码加密加密密钥并将其存储在那里。成功登录后 - 如果提供了正确的密码 - 您可以解密加密密钥,然后解锁"第一个(加密)数据库。这将加密密钥"存储在用户的头部"并且可能是您最安全的选择。