MySQL整表加密解决方案keyring_file详解

  

<强>说明
  

  

MySql社区版从5.7.11开始支持基于表的数据加密方案,模块名为keyring_file,支持加密整张表。这种是加密方式其实是基于文件加密的,一旦mysqld读取关键启动后,将会解密整张表的数据,在MySql服务内,读取的数据都是解密后的,也就是说对客户端而言是无感知的。而这个关键是本地存放的,MySql服务拥有读写这个关键的权限。

  

总体看这种方案不太安全,原因是数据库文件是加密的,但只要能有mysql服务的账户,那么访问数据都是解密后的,加密不攻自破,而且解密匙也是本地存放的,入侵者完全可以一并带走。这种方案只能保证入侵者只拖走了数据库文件后无法读取内容。

  

<>强企业版MySQL额外的三种模块
  

  

如果是企业版的mysql,那么还有另外三种加密方案。

  

<强> 1。keyring_encrypted_file
  

  

和我之前说的社区版差不多的,只是多了一个钥匙。这个主要用于加密解密数据库用的关键。安全性方面都差不多。
  

  

<强> 2。keyring_okv
  

  

相比本地存放键,本模块使用KMIP存取钥匙,相对更加安全。
  

  

<强> 3。keyring_aws
  

  

整合aws的密匙管理服务来管理加解密的关键。进一步提高关键的管理安全性。

  

<强>四个加密模块支持的加密类型

  

      <坳过滤数据="过滤"/> <坳过滤数据="过滤"/> <坳过滤数据="过滤"/> 指定表格中         模块名   可用加密算法   密钥长度限制               keyring_encrypted_file   AES   DSA   RSA   无限制   无限制   无限制         keyring_file   AES   DSA   RSA   无限制   无限制   无限制         keyring_okv   AES   16、24、32         keyring_aws   AES   16、24、32            

  

总结一下,四种方案都是文件加密,内存解密方案,区别在于加解密的关键存放方案。推荐使用keyring_okv和keyring_aws,并确保mysql账户的安全性和严格区分账户权限。
  

  

另外2种安全性不大。

  

<>强实施步骤
  

  

好的,现在简单讲一下最简单的keyring_file部署方案,提前说明下windows貌似无法使用这种方案,因为不知道为什么加密用的关键总是无法生成。

  

<强> 1。使用最新版的mysql 5.7.21
  

  

使用yum贴切之类的工具安装最新版的mysql或者下载源码自行编译安装

        sudo apt安装mysql - 5.7      

<强> 2。启用加密模块
  

  

安装插件keyring_file soname keyring_file.so,

        mysql>安装插件keyring_file soname keyring_file.so”;   查询好,0行影响(0.10秒)      

<强> 3。设置加密钥匙存放路径
  

  

集全球keyring_file_data=' https://www.yisu.com/root/mysql-keyring/keyring ';

        mysql>集全球keyring_file_data=' https://www.yisu.com/var/lib/mysql-keyring/keyring ';   查询好,0行影响(0.00秒)      

<强> 4。永久启用设置
  

  

上诉两个步骤都是临时的,重启服务都会失效,我们把配置写到配置文件里,确保重启服务后也能生效

        (mysqld)   early-plugin-load=keyring_file.so   keyring_file_data=https://www.yisu.com/root/mysql-keyring/keyring      

<强> 5。查看关键的存放路径
  

  

显示全局变量就像“% keyring_file_data %”;

        mysql>显示全局变量就像“% keyring_file_data %”;   + - - - - - - - - - - - - - - - - - - - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +   | | Variable_name |值   + - - - - - - - - - - - - - - - - - - - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +   密匙环| | keyring_file_data |/var/lib/mysql-keyring/+ - - - - - - - - - - - - - - - - - - - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +   1行集(0.00秒)

MySQL整表加密解决方案keyring_file详解