《你的MySQL服務(wù)器開(kāi)啟SSL了嗎?》要點(diǎn):
本文介紹了你的MySQL服務(wù)器開(kāi)啟SSL了嗎?,希望對(duì)您有用。如果有疑問(wèn),可以聯(lián)系我們。
作者介紹
趙海亮,現(xiàn)任職于58趕集集團(tuán)-安居客MySQL DBA,主要從事安居客MySQL數(shù)據(jù)庫(kù)的優(yōu)化、升級(jí)、遷移等工作.
最近,準(zhǔn)備升級(jí)一組MySQL到5.7版本,在安裝完MySQL5.7后,在其data目錄下發(fā)現(xiàn)多了很多.pem類型的文件,然后通過(guò)查閱相關(guān)資料,才知這些文件是MySQL5.7使用SSL加密連接的.本篇主要介紹如何使用MySQL5.7 SSL連接加密功能以及使用SSL的一些注意點(diǎn).
我們知道,MySQL5.7之前版本,安全性做得并不夠好,比如安裝時(shí)生成的Root空密碼賬號(hào)、存在任何用戶都能連接上的test庫(kù)等,導(dǎo)致數(shù)據(jù)庫(kù)存在較大的安全隱患.好在5.7版本對(duì)以上問(wèn)題進(jìn)行了一一修復(fù).與此同時(shí),MySQL 5.7版本還提供了更為簡(jiǎn)單SSL安全訪問(wèn)配置,且默認(rèn)連接就采用SSL的加密方式,這讓數(shù)據(jù)庫(kù)的安全性提高一個(gè)層次.
SSL(Secure Socket Layer:安全套接字層)利用數(shù)據(jù)加密、身份驗(yàn)證和消息完整性驗(yàn)證機(jī)制,為基于TCP等可靠連接的應(yīng)用層協(xié)議提供安全性保證.
SSL協(xié)議提供的功能主要有:
如果用戶的傳輸不是通過(guò)SSL的方式,那么其在網(wǎng)絡(luò)中數(shù)據(jù)都是以明文進(jìn)行傳輸?shù)?而這給別有用心的人帶來(lái)了可乘之機(jī).所以,現(xiàn)在很多大型網(wǎng)站都開(kāi)啟了SSL功能.同樣地,在我們數(shù)據(jù)庫(kù)方面,如果客戶端連接服務(wù)器獲取數(shù)據(jù)不是使用SSL連接,那么在傳輸過(guò)程中,數(shù)據(jù)就有可能被竊取.
在MySQL5.7安裝初始化階段,我們發(fā)現(xiàn)這個(gè)版本比之前版本多了一步操作,而這個(gè)操作就是安裝SSL的.
當(dāng)運(yùn)行完這個(gè)命令后,默認(rèn)會(huì)在data_dir目錄下生成以下pem文件,這些文件就是用于啟用SSL功能的:
這時(shí)從數(shù)據(jù)庫(kù)服務(wù)器本地進(jìn)入MySQL命令行,你可以看到如下變量值:
注意:如果用戶是采用本地localhost或者sock連接數(shù)據(jù)庫(kù),那么不會(huì)使用SSL方式了.
對(duì)于上面強(qiáng)制使用SSL連接的用戶,如果不是使用ssl連接的就會(huì)報(bào)錯(cuò),像下面這樣:
測(cè)試方式:在MySQL服務(wù)器端通過(guò)tshark抓包的方式來(lái)模擬竊取數(shù)據(jù).驗(yàn)證、對(duì)比未使用SSL和使用SSL兩者在安全性上有什么不同?
在客戶端機(jī)器上連接數(shù)據(jù)庫(kù)并進(jìn)行insert操作,使用–ssl-mode=DISABLED關(guān)閉SSL.
同時(shí)在MySQL服務(wù)器端上用tshark進(jìn)行抓包:
結(jié)論:未使用SSL情況下,在數(shù)據(jù)庫(kù)服務(wù)器端可以通過(guò)抓包的方式獲取數(shù)據(jù),安全性不高.
在客戶端機(jī)器上連接數(shù)據(jù)庫(kù)并進(jìn)行insert操作,使用–ssl-mode=REQUIRED指定SSL
同時(shí)在MySQL服務(wù)器端上再次用tshark進(jìn)行抓包:
【結(jié)論】沒(méi)有抓到該語(yǔ)句,采用SSL加密后,tshark抓不到數(shù)據(jù),安全性高.
服務(wù)器配置:
CPU:32核心
內(nèi)存:128G
磁盤:SSD
為了盡量準(zhǔn)確測(cè)試QPS,采用全內(nèi)存查詢.因?yàn)槲覀兙€上熱點(diǎn)數(shù)據(jù)基本都在內(nèi)存中;按照并發(fā)線程數(shù)分類:1線程、4線程、8線程、16線程、24線程、32線程、64線程;
具體數(shù)據(jù)如下:
從測(cè)試數(shù)據(jù)可以發(fā)現(xiàn),開(kāi)啟SSL后,數(shù)據(jù)庫(kù)QPS平均降低了23%左右,相對(duì)還是比較影響性能的.從SSL實(shí)現(xiàn)方式來(lái)看,建立連接時(shí)需要進(jìn)行握手、加密、解密等操作.所以耗時(shí)基本都在建立連接階段,這對(duì)于使用短鏈接的應(yīng)用程序可能產(chǎn)生更大的性能損耗,比如采用PHP開(kāi)發(fā).不過(guò)果使用連接池或者長(zhǎng)連接可能會(huì)好許多.
文章來(lái)自微信公眾號(hào):DBAplus社群
轉(zhuǎn)載請(qǐng)注明本頁(yè)網(wǎng)址:
http://www.fzlkiss.com/jiaocheng/2201.html