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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM