zoukankan      html  css  js  c++  java
  • MySQL 整表加密解决方案 keyring_file详解

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

    这篇文章主要介绍了MySQL 整表加密解决方案 keyring_file详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下

    说明

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

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

    企业版MySQL额外的三种模块

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

    1.keyring_encrypted_file

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

    2.keyring_okv

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

    3.keyring_aws

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

    四个加密模块支持的加密类型

    模块名可用加密算法密钥长度限制
    keyring_encrypted_file AES
    DSA
    RSA
    无限制
    无限制
    无限制
    keyring_file AES
    DSA
    RSA
    无限制
    无限制
    无限制
    keyring_okv AES 16, 24, 32
    keyring_aws AES 16, 24, 32

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

    另外2种安全性不大。

    实施步骤

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

    1.使用最新版的mysql 5.7.21

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

    1. sudo apt install mysql-5.7

    2.启用加密模块

    INSTALL PLUGIN keyring_file soname ‘keyring_file.so';

    1. mysql> INSTALL PLUGIN keyring_file soname 'keyring_file.so';
    2. Query OK, 0 rows affected (0.10 sec)

    3.设置加密key存放路径

    set global keyring_file_data='/root/mysql-keyring/keyring';

    1. mysql> set global keyring_file_data='/var/lib/mysql-keyring/keyring';
    2. Query OK, 0 rows affected (0.00 sec)

    4.永久启用设置

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

    1. [mysqld]
    2. early-plugin-load=keyring_file.so
    3. keyring_file_data=/root/mysql-keyring/keyring

    5.查看key的存放路径

    show global variables like ‘%keyring_file_data%';

    1. mysql> show global variables like '%keyring_file_data%';
    2. +-------------------+--------------------------------+
    3. | Variable_name | Value |
    4. +-------------------+--------------------------------+
    5. | keyring_file_data | /var/lib/mysql-keyring/keyring |
    6. +-------------------+--------------------------------+
    7. 1 row in set (0.00 sec)

    6.查看启用的模块

    查看下keyring_file模块是否已经被载入。
    show plugins;

    1. mysql> show plugins;
    2. +----------------------------+----------+--------------------+-----------------+---------+
    3. | Name | Status | Type | Library | License |
    4. +----------------------------+----------+--------------------+-----------------+---------+
    5. | binlog | ACTIVE | STORAGE ENGINE | NULL | GPL |
    6. | mysql_native_password | ACTIVE | AUTHENTICATION | NULL | GPL |
    7. | sha256_password | ACTIVE | AUTHENTICATION | NULL | GPL |
    8. | PERFORMANCE_SCHEMA | ACTIVE | STORAGE ENGINE | NULL | GPL |
    9. | CSV | ACTIVE | STORAGE ENGINE | NULL | GPL |
    10. | MRG_MYISAM | ACTIVE | STORAGE ENGINE | NULL | GPL |
    11. | MyISAM | ACTIVE | STORAGE ENGINE | NULL | GPL |
    12. | InnoDB | ACTIVE | STORAGE ENGINE | NULL | GPL |
    13. | INNODB_TRX | ACTIVE | INFORMATION SCHEMA | NULL | GPL |
    14. | INNODB_LOCKS | ACTIVE | INFORMATION SCHEMA | NULL | GPL |
    15. | INNODB_LOCK_WAITS | ACTIVE | INFORMATION SCHEMA | NULL | GPL |
    16. | INNODB_CMP | ACTIVE | INFORMATION SCHEMA | NULL | GPL |
    17. | INNODB_CMP_RESET | ACTIVE | INFORMATION SCHEMA | NULL | GPL |
    18.  
    19. 。。。。。。(省略N条)
    20.  
    21. | keyring_file | ACTIVE | KEYRING | keyring_file.so | GPL |
    22. +----------------------------+----------+--------------------+-----------------+---------+
    23. 45 rows in set (0.00 sec)

    7.加密现有的表

    alter table table encryption='Y';

    1. mysql> create table cc (id int);
    2. Query OK, 0 rows affected (0.01 sec)
    3.  
    4. mysql> alter table cc encryption='Y';
    5. Query OK, 0 rows affected (0.06 sec)
    6. Records: 0 Duplicates: 0 Warnings: 0

    8.取消加密

    alter table table encryption='N';

    1. mysql> alter table cc encryption='N';
    2. Query OK, 0 rows affected (0.01 sec)
    3. Records: 0 Duplicates: 0 Warnings: 0

    官方文档:

    https://dev.mysql.com/doc/refman/5.7/en/keyring-installation.html

    以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。

    本文标题: MySQL 整表加密解决方案 keyring_file详解
    本文地址: http://www.cppcns.com/shujuku/mysql/265582.html
  • 相关阅读:
    OTPUB知识课堂——VMware虚拟机应该如何优化
    春风十里,不如梭子鱼云安全解决方案全心为你!
    企业进行云存储,必须先搞清楚这5个问题
    OTPUB知识讲堂——如何在云计算中部署SQL
    Convertlab——营销的艺术,数字化的艺术
    腾讯云化解安全危机,开启网络安全智能时代
    11.2
    笔记
    this
    JS数据的基本类型
  • 原文地址:https://www.cnblogs.com/sandyljg/p/13925038.html
Copyright © 2011-2022 走看看