【问题标题】:MariaDB/MySQL table encryptionMariaDB/MySQL 表加密
【发布时间】:2016-09-27 06:04:03
【问题描述】:

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 共享文件夹中吗?

【问题讨论】:

    标签: mysql encryption mariadb


    【解决方案1】:

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

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

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

    【讨论】:

    • 谢谢!将加密密钥存储在“用户的脑袋”中的想法很巧妙!
    猜你喜欢
    • 2019-01-30
    • 2015-05-08
    • 2021-06-29
    • 2021-12-06
    • 2016-02-22
    • 2019-11-07
    • 2019-08-16
    • 2016-07-11
    • 1970-01-01
    相关资源
    最近更新 更多