說(shuō)明
MySql社區(qū)版從5.7.11開(kāi)始支持基于表的數(shù)據(jù)加密方案,模塊名為keyring_file,支持加密整張表。這種是加密方式其實(shí)是基于文件加密的,一旦mysqld讀取key啟動(dòng)后,將會(huì)解密整張表的數(shù)據(jù),在mysql服務(wù)內(nèi),讀取的數(shù)據(jù)都是解密后的,也就是說(shuō)對(duì)客戶(hù)端而言是無(wú)感知的。而這個(gè)key是本地存放的,mysql服務(wù)擁有讀寫(xiě)這個(gè)key的權(quán)限。
總體看這種方案不太安全,原因是數(shù)據(jù)庫(kù)文件是加密的,但只要能有mysql服務(wù)的賬戶(hù),那么訪(fǎng)問(wèn)數(shù)據(jù)都是解密后的,加密不攻自破。而且解密key也是本地存放的,入侵者完全可以一并帶走。這種方案只能保證入侵者只拖走了數(shù)據(jù)庫(kù)文件后無(wú)法讀取內(nèi)容。
企業(yè)版MySQL額外的三種模塊
如果是企業(yè)版的mysql,那么還有另外三種加密方案。
1.keyring_encrypted_file
和我之前說(shuō)的社區(qū)版差不多的,只是多了一個(gè)key。這個(gè)key用于加密解密數(shù)據(jù)庫(kù)用的key。安全性方面都差不多。
2.keyring_okv
相比本地存放key,本模塊使用KMIP存取key,相對(duì)更加安全。
3.keyring_aws
整合aws的密匙管理服務(wù)來(lái)管理加解密的key。進(jìn)一步提高key的管理安全性。
四個(gè)加密模塊支持的加密類(lèi)型
模塊名 | 可用加密算法 | 密鑰長(zhǎng)度限制 |
---|---|---|
keyring_encrypted_file | AES DSA RSA |
無(wú)限制 無(wú)限制 無(wú)限制 |
keyring_file | AES DSA RSA |
無(wú)限制 無(wú)限制 無(wú)限制 |
keyring_okv | AES | 16, 24, 32 |
keyring_aws | AES | 16, 24, 32 |
總結(jié)一下,四種方案都是文件加密,內(nèi)存解密方案,區(qū)別在于加解密的key存放方案。推薦使用keyring_okv和keyring_aws,并確保mysql賬戶(hù)的安全性和嚴(yán)格區(qū)分賬戶(hù)權(quán)限。
另外2種安全性不大。
實(shí)施步驟
OK,現(xiàn)在簡(jiǎn)單講一下最簡(jiǎn)單的keyring_file部署方案,提前說(shuō)明下windows貌似無(wú)法使用這種方案,因?yàn)椴恢罏槭裁醇用苡玫膋ey總是無(wú)法生成。
1.使用最新版的mysql 5.7.21
使用yum apt 之類(lèi)的工具安裝最新版的mysql 或者 下載源碼自行編譯安裝
sudo apt install mysql-5.7
2.啟用加密模塊
INSTALL PLUGIN keyring_file soname ‘keyring_file.so';
mysql> INSTALL PLUGIN keyring_file soname 'keyring_file.so'; Query OK, 0 rows affected (0.10 sec)
3.設(shè)置加密key存放路徑
set global keyring_file_data='/root/mysql-keyring/keyring';
mysql> set global keyring_file_data='/var/lib/mysql-keyring/keyring'; Query OK, 0 rows affected (0.00 sec)
4.永久啟用設(shè)置
上訴兩個(gè)步驟都是臨時(shí)的,重啟服務(wù)都會(huì)失效,我們把配置寫(xiě)到配置文件里,確保重啟服務(wù)后也能生效
[mysqld] early-plugin-load=keyring_file.so keyring_file_data=/root/mysql-keyring/keyring
5.查看key的存放路徑
show global variables like ‘%keyring_file_data%';
mysql> show global variables like '%keyring_file_data%'; +-------------------+--------------------------------+ | Variable_name | Value | +-------------------+--------------------------------+ | keyring_file_data | /var/lib/mysql-keyring/keyring | +-------------------+--------------------------------+ 1 row in set (0.00 sec)
6.查看啟用的模塊
查看下keyring_file模塊是否已經(jīng)被載入。
show plugins;
mysql> show plugins; +----------------------------+----------+--------------------+-----------------+---------+ | Name | Status | Type | Library | License | +----------------------------+----------+--------------------+-----------------+---------+ | binlog | ACTIVE | STORAGE ENGINE | NULL | GPL | | mysql_native_password | ACTIVE | AUTHENTICATION | NULL | GPL | | sha256_password | ACTIVE | AUTHENTICATION | NULL | GPL | | PERFORMANCE_SCHEMA | ACTIVE | STORAGE ENGINE | NULL | GPL | | CSV | ACTIVE | STORAGE ENGINE | NULL | GPL | | MRG_MYISAM | ACTIVE | STORAGE ENGINE | NULL | GPL | | MyISAM | ACTIVE | STORAGE ENGINE | NULL | GPL | | InnoDB | ACTIVE | STORAGE ENGINE | NULL | GPL | | INNODB_TRX | ACTIVE | INFORMATION SCHEMA | NULL | GPL | | INNODB_LOCKS | ACTIVE | INFORMATION SCHEMA | NULL | GPL | | INNODB_LOCK_WAITS | ACTIVE | INFORMATION SCHEMA | NULL | GPL | | INNODB_CMP | ACTIVE | INFORMATION SCHEMA | NULL | GPL | | INNODB_CMP_RESET | ACTIVE | INFORMATION SCHEMA | NULL | GPL | 。。。。。。(省略N條) | keyring_file | ACTIVE | KEYRING | keyring_file.so | GPL | +----------------------------+----------+--------------------+-----------------+---------+ 45 rows in set (0.00 sec)
7.加密現(xiàn)有的表
alter table table encryption='Y';
mysql> create table cc (id int); Query OK, 0 rows affected (0.01 sec) mysql> alter table cc encryption='Y'; Query OK, 0 rows affected (0.06 sec) Records: 0 Duplicates: 0 Warnings: 0
8.取消加密
alter table table encryption='N';
mysql> alter table cc encryption='N'; Query OK, 0 rows affected (0.01 sec) Records: 0 Duplicates: 0 Warnings: 0
官方文檔:
https://dev.mysql.com/doc/refman/5.7/en/keyring-installation.html
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
標(biāo)簽:烏海 白銀 聊城 臨汾 湖南 云浮 武威 湖北
巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《MySQL 整表加密解決方案 keyring_file詳解》,本文關(guān)鍵詞 MySQL,整表,加密,解決方案,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問(wèn)題,煩請(qǐng)?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無(wú)關(guān)。