MariaDB/MySQLtable加密
MariaDB/MySQL table encryption
This article provides an extensive discussion on the subject of encrypting MariaDB database tables. Another excellent resource is this one。他们没有提到的一件事是在哪里定义 table 级别的加密配置。我假设这应该由
完成是否正确
- 放置相关指令,例如
plugin-load-add=file_key_management_plugin.so
在 /etc/mysql/my.cnf
系统中
- 创建加密密钥
- 重新启动 MariaDB 服务器,最后,
- 在要加密的每个 table 上发布一个
ALTER TABLE ENCRYPTED=YES ENCRYPTION_KEY_ID=NN;
即使这是正确的,我也会想到一个问题 - 如果攻击者同时获得对加密密钥文件的访问权限,这种加密将如何保护受损数据?可能的解决方案是将加密密钥存储在配置为只能从指定 IP 地址访问的 NFS 共享文件夹中吗?
This article 应该可以回答您关于在 MariaDB 中进行设置的大部分问题。与配置加密相关的答案本质上是"you got it right",但你也应该考虑加密日志文件(文章描述了如何)。
至于后者,如果服务器被物理移除以窃取数据,使用具有有限访问权限的 NFS 卷应该提供良好的保护,但对于有人在系统处于活动状态时获得访问权限的情况,这似乎是一个不太可靠的解决方案。通过访问服务器,有问题的 NFS 卷和文件很可能很容易获得。
使用 TPM(如果您的硬件允许)存储密钥可能是更好的解决方案 - 它旨在帮助解决此类问题。
是否可以选择 link 用户登录的加密密钥?考虑使用第二个数据库(或服务器)进行用户身份验证,并使用用户登录密码加密加密密钥并将其存储在那里。成功登录后 - 当提供正确的密码时 - 您可以解密加密密钥,然后 "unlock" 第一个(加密的)数据库。这会存储加密密钥 "in the user's heads",可能是您拥有的最安全的选择。
This article provides an extensive discussion on the subject of encrypting MariaDB database tables. Another excellent resource is this one。他们没有提到的一件事是在哪里定义 table 级别的加密配置。我假设这应该由
完成是否正确- 放置相关指令,例如
plugin-load-add=file_key_management_plugin.so
在/etc/mysql/my.cnf
系统中 - 创建加密密钥
- 重新启动 MariaDB 服务器,最后,
- 在要加密的每个 table 上发布一个
ALTER TABLE ENCRYPTED=YES ENCRYPTION_KEY_ID=NN;
即使这是正确的,我也会想到一个问题 - 如果攻击者同时获得对加密密钥文件的访问权限,这种加密将如何保护受损数据?可能的解决方案是将加密密钥存储在配置为只能从指定 IP 地址访问的 NFS 共享文件夹中吗?
This article 应该可以回答您关于在 MariaDB 中进行设置的大部分问题。与配置加密相关的答案本质上是"you got it right",但你也应该考虑加密日志文件(文章描述了如何)。
至于后者,如果服务器被物理移除以窃取数据,使用具有有限访问权限的 NFS 卷应该提供良好的保护,但对于有人在系统处于活动状态时获得访问权限的情况,这似乎是一个不太可靠的解决方案。通过访问服务器,有问题的 NFS 卷和文件很可能很容易获得。 使用 TPM(如果您的硬件允许)存储密钥可能是更好的解决方案 - 它旨在帮助解决此类问题。
是否可以选择 link 用户登录的加密密钥?考虑使用第二个数据库(或服务器)进行用户身份验证,并使用用户登录密码加密加密密钥并将其存储在那里。成功登录后 - 当提供正确的密码时 - 您可以解密加密密钥,然后 "unlock" 第一个(加密的)数据库。这会存储加密密钥 "in the user's heads",可能是您拥有的最安全的选择。