成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

跟你聊聊MySQL安全的那些事

數(shù)據(jù)庫 MySQL
MySQL這么多章節(jié)了,前前后后20多篇了,我看了下自己本地的目錄,已經(jīng)可以說是很全了,但是有一點我發(fā)現(xiàn)很關(guān)鍵但是我還沒提過,那就是安全。

[[354756]]

本文轉(zhuǎn)載自微信公眾號「三太子敖丙」,作者三太子敖丙。轉(zhuǎn)載本文請聯(lián)系三太子敖丙公眾號。

MySQL這么多章節(jié)了,前前后后20多篇了,我看了下自己本地的目錄,已經(jīng)可以說是很全了,但是有一點我發(fā)現(xiàn)很關(guān)鍵但是我還沒提過,那就是安全。

安全對任何一個系統(tǒng)都至關(guān)重要,只有在保證安全的前提下,才能追求穩(wěn)定性和高性能。

對于一個企業(yè)來說,數(shù)據(jù)就是企業(yè)的財富,之前我們也看到過微盟刪庫以及順豐刪庫導(dǎo)致服務(wù)長時間不可用的慘案,那么如何保證數(shù)據(jù)的安全變得尤為重要,這期就聊聊跟MySQL安全相關(guān)的那些事,希望對大家有所幫助咯。

MySQL服務(wù)器安全

對于自建機房的MySQL服務(wù)器安裝都會經(jīng)歷網(wǎng)絡(luò)配置,存儲規(guī)劃,安裝服務(wù)器以,安裝MySQL。

 

存儲安全

自建MySQL服務(wù)器

對于自建MySQL服務(wù)器來說,為了磁盤不出現(xiàn)單點故障,一般都會使用RAID磁盤冗余陣列的方式。

有兩種模式:硬件RAID和軟件RAID,硬件RAID需要購買RAID卡支撐,軟件RAID通過軟件包mdadm生成即可,生產(chǎn)環(huán)境建議選擇硬件RAID,一般需要對多塊盤先做RAID,對于數(shù)據(jù)庫服務(wù)器來說,通常選擇RAID10(也稱為RAID 1 + 0,先進行鏡像RAID1,再進行條帶化RAID0存儲),讀寫性能都比較好。

 

在實際的生產(chǎn)環(huán)境,一般都會有8塊盤,每塊盤800G,在服務(wù)器啟動的時候,先做磁盤RAID劃分,通常劃分兩個卷組(volume group),一個是操作系統(tǒng)內(nèi)置目錄使用rootvg,一個就是MySQL的數(shù)據(jù)相關(guān)的卷組datavg,LVM操作主要的步驟如圖:

 

通過以上的存儲劃分及配置RAID10,MySQL產(chǎn)生的數(shù)據(jù)都會寫到/data目錄下,同步到邏輯卷lvdata中,進而同步到物理卷中,最終同步到物理磁盤中鏡像存儲,有效避免了單盤損壞導(dǎo)致的數(shù)據(jù)不可用。

公有云RDS

對于RDS來說,線上環(huán)境一般都選擇高可用版,即一主一從模式,默認情況下Slave只做failover(故障切換),主要是由于Master和Slave服務(wù)器的磁盤沒有做RAID。

 

網(wǎng)絡(luò)安全

  • 設(shè)置白名單

對于自建機房,一般都會使用硬件防火墻來做網(wǎng)絡(luò)隔離以及IP白名單限制,只允許指定的應(yīng)用服務(wù)器通過3306端口連接MySQL Server,其他的惡意請求應(yīng)該在防火墻層面進行攔截,例如RDS控制臺的數(shù)據(jù)安全可以添加指定IP。

 

  • 外網(wǎng)訪問

數(shù)據(jù)庫服務(wù)器只需要內(nèi)網(wǎng)訪問,禁止開通外網(wǎng)地址或者公網(wǎng)地址。

 

操作系統(tǒng)安全

安裝完操作系統(tǒng)(例如CentOS 7.4)后,要進行安全漏洞掃描及定期巡檢,主要有以下幾個方面需要注意:

root啟動MySQL

MySQL Server安裝完之后,如果用root啟動MySQL,則任何具有FILE系統(tǒng)權(quán)限的用戶都可以讀寫root用戶下的文件,會造成嚴重的安全隱患,應(yīng)該將軟件目錄屬主設(shè)置成root用戶,數(shù)據(jù)目錄屬主設(shè)置成mysql用戶,使用mysql用戶啟動MySQL實例。

賬號弱密碼

Linux服務(wù)器的所有賬號密碼不能是弱密碼(例如密碼是純數(shù)字,純字母,賬號的一部分等,長度太短),建議所有的賬號都設(shè)置20位長度,包括數(shù)字,大寫字母,小寫字母以及特殊字符。

 

對外開放端口

對于MySQL數(shù)據(jù)庫服務(wù)器,除了3306端口開發(fā)給指定的應(yīng)用服務(wù)器訪問外,其他的端口都應(yīng)該禁用掉,例如ssh, ftp, telent服務(wù)端口。

服務(wù)漏洞

在用綠盟或者其他工具進行安全掃描時,都會發(fā)現(xiàn)一些系統(tǒng)漏洞,常見的有ntp漏洞,vsftpd的漏洞等。這時就需要停機去打patch修復(fù),再次進行掃描,直到全部通過才能安裝MySQL。

密碼登錄

對于生產(chǎn)服務(wù)器,嚴禁本地通過密碼直接登錄,建議采用跳板機 jumpserver 的方式,每個用戶都用自己 jumpserver 賬號去登錄,然后選擇自己要訪問的服務(wù)器(需要提前告知管理員添加),默認的登錄用戶(例如 server 用戶)只有只讀權(quán)限,不能做任何修改操作。

 

審計功能

用戶通過 jumpserver 登錄到生產(chǎn)服務(wù)器的所有操作都應(yīng)該被審計和錄屏,并且定時回放這些操作,確認每一步都是最優(yōu)的,沒有不必要的多操作。

操作命令歷史

用戶登錄到 Linux 服務(wù)器上的所有操作命令都會記錄到 history 中,將 history 設(shè)置大一點,保存更多的操作命令記錄。

 

資源限制

通過配置/etc/security/limits.conf文件限制用戶資源使用,例如打開進程數(shù),文件數(shù),文件大小及內(nèi)存等。

 

服務(wù)器備份

定期的對服務(wù)器進行備份,備份內(nèi)容主要包括 Linux 內(nèi)置目錄(/usr /var /lib)和MySQL數(shù)據(jù)目錄(數(shù)據(jù)文件,binlog,undolog, redolog),同時要定期檢查備份的有效性以及恢復(fù)演練,以下是阿里云 ECS 的快照,建議每天一個快照,保留7天。

 

MySQL數(shù)據(jù)庫安全

賬號安全

 

賬號密碼

建議所有的賬號都設(shè)置20位長度,包括數(shù)字,大寫字母,小寫字母以及特殊字符,如^N9UxOR&ydQWCBvIwqql

賬號分離

對于分布式系統(tǒng)來說,會有多個服務(wù),且服務(wù)之間存在調(diào)用關(guān)系,比如交易 trade-service 會調(diào)用支付 payment-service。

為了安全起見,給每個服務(wù)創(chuàng)建一個數(shù)據(jù)庫,同時分配自己的賬號,禁止跨庫訪問。

 

賬號權(quán)限

保證賬號權(quán)限最小化原則,對于業(yè)務(wù)賬號來說,只需要授予連接,查詢,新增,修改的權(quán)限即可。

使用SSL連接

對于數(shù)據(jù)安全性要求比較高的業(yè)務(wù),建議啟用SSL連接,這樣即使用抓包工具分析,也不能看到具體的SQL文本。但從SSL實現(xiàn)方式來看,建立連接時需要進行握手、加密、解密等操作,連接建立階段比較耗時,如果使用連接池或者長連接不會有太大影響,如果是短連接性能損耗比較大。

系統(tǒng)權(quán)限

mysql.user權(quán)限

除了MySQL root賬號之外,其他任何賬號對mysql.user的表有修改權(quán)限,會帶來安全風(fēng)險:賬號密碼被修改和認證插件修改。

修改賬號密碼

 

修改密碼認證方式

MySQL默認都是本地密碼認證插件 mysql_native_password,如果改成auth_socket,則不需要密碼,只檢查用戶是否使用UNIX套接字進行連接,然后比較用戶名即可。

 

權(quán)限風(fēng)險

一般允許普通開發(fā)人員通過 jumpserver 登錄到中轉(zhuǎn)機,然后用mysql -h -u -p以只讀賬號的方式訪問數(shù)據(jù)庫,有時也想看一下information_schema下長事務(wù)(innodb_trx)等相關(guān)的信息,需要授予process系統(tǒng)管理權(quán)限,會帶來一些安全隱患。

 

這樣只讀賬號也能查看innodb_trx表中所有業(yè)務(wù)賬號正在執(zhí)行的SQL語句,SQL可能包含敏感信息。

 

在以前的MySQL版本,擁有process系統(tǒng)權(quán)限的用戶還可以鎖定系統(tǒng)表,比如lock table mysql.user read,導(dǎo)致正常修改用戶的操作

FILE權(quán)限

具有FILE權(quán)限可以將數(shù)據(jù)通過SELECT…..INTO OUTFILE…..寫到服務(wù)器上有寫權(quán)限的目錄下,作為文本格式存放,也可以通過LOAD DATA INFILE…將文本文件數(shù)據(jù)導(dǎo)入到數(shù)據(jù)表中。

 

審計功能

安裝 MySQL Server 之后,應(yīng)該配置和開啟 Audit Plugin,這樣經(jīng)過 MySQL Server 執(zhí)行所有的 SQL 都會被記錄下來,一方面可以排除問題,另一方面可以做性能監(jiān)控分析(例如一段時間內(nèi)某個SQL的QPS,TPS)。

數(shù)據(jù)備份

需要定時備份數(shù)據(jù)文件和 binlog,對于自建 MySQL 服務(wù)器,可以使用xtrabackup去做每天的物理全備,對于RDS來說,需要配置備份策略,同時也要定期的檢查的備份完整性和有效性。

 

異地容災(zāi)

對于核心的業(yè)務(wù)系統(tǒng),比如交易,支付等,要做好數(shù)據(jù)庫的異地容災(zāi),避免由于地震等自然災(zāi)害造成數(shù)據(jù)不可恢復(fù)。

 

數(shù)據(jù)安全

數(shù)據(jù)是企業(yè)寶貴的資源,每個業(yè)務(wù)域產(chǎn)生的數(shù)據(jù)以及需要的數(shù)據(jù)都不一樣,如何保證安全的訪問數(shù)據(jù)是非常重要的,一般大公司都有自己的數(shù)據(jù)管理平臺,比如阿里的iDB,現(xiàn)在已經(jīng)是一個服務(wù)DMS(數(shù)據(jù)管理服務(wù)),可以管理各種類型的數(shù)據(jù)庫。

數(shù)據(jù)訪問范化

所有數(shù)據(jù)變更都應(yīng)該走審批流程,發(fā)起人和審批人不能是同一個,重要敏感的數(shù)據(jù)操作需要提交工單,進行多級審批,確認沒有問題才能執(zhí)行,執(zhí)行之前要先做好備份,以便回滾時使用。

建議使用數(shù)據(jù)庫管理平臺來管理數(shù)據(jù)庫,一般需要用戶注冊賬號,申請權(quán)限(數(shù)據(jù)導(dǎo)出,結(jié)構(gòu)變更,數(shù)據(jù)變更),服務(wù)Owner審批,提交工單進入審批流程等操作,所有的操作環(huán)節(jié)都會記錄操作日志。

 

數(shù)據(jù)脫敏

對核心業(yè)務(wù)表的敏感字段要進行脫敏處理,例如姓名,郵箱,電話號碼,身份證號碼,可以利用中間平臺去處理,例如阿里云的DMS可以配置數(shù)據(jù)脫敏,支持數(shù)據(jù)庫,表,字段三個級別,默認在平臺上查詢都是以*號顯示,如果想要查看明文,需要申請敏感數(shù)據(jù)權(quán)限,并提交工單,審批通過后才可以查看,權(quán)限時間默認為一天,最長不超過7天。

在做營銷活動之前,都會做數(shù)據(jù)庫性能壓測,需要把PROD數(shù)據(jù)庫全量導(dǎo)入UAT環(huán)境,會涉及一些敏感數(shù)據(jù),一般需要通過中間層做脫敏處理,例如手機號可以前3位后3位進行打碼處理,15222210123脫敏成152****123。

 

數(shù)據(jù)加密

從MySQL 5.7開始,InnoDB支持對獨立表空間靜態(tài)數(shù)據(jù)加密,是引擎內(nèi)部數(shù)據(jù)頁級別的加密手段,當(dāng)數(shù)據(jù)頁寫入文件系統(tǒng)時加進行加密,從數(shù)據(jù)文件讀到內(nèi)存中時解密,基于旋轉(zhuǎn)秘鑰文件而起作用,對于數(shù)據(jù)保護非常有用。

 

主秘鑰文件存儲在磁盤上,同時要做好備份,對于加密的表,表空間秘鑰由主秘鑰并存儲在表空間文件的頭部中,使用的加密算法是AES,加密模式是塊加密。

我們來看一下**加密ENCRYPTION='Y'和未加密ENCRYPTION='N'**的區(qū)別在哪

 

從這里就可以看出,通過Keyring的加密方式,主秘鑰是存儲表空間文件的頭部信息中,這樣增強了數(shù)據(jù)文件的安全性,對于一些社交軟件產(chǎn)生的聊天消息,可以采用這種方式來加密數(shù)據(jù)文件,防止數(shù)據(jù)文件被竊取之后進行恢復(fù)。

延遲從庫

 

Oracle數(shù)據(jù)庫有兩個特性:回收站(recyclebin)和閃回(flashback)功能,drop table如果不加purge選項,Oracle會把這個表rename一個新的表名存放到回收站里,需要還原時執(zhí)行flashback table即可。

那如果delete能恢復(fù)嗎?

也是可以的,利用flashback query去Undo Log里獲取刪除時間前的數(shù)據(jù),回插到原表即可,這兩個功能是很棒的,可惜MySQL里都沒有。

通常MySQL的主從復(fù)制是實時的一致性復(fù)制,Master執(zhí)行的變更會立刻通過binlog復(fù)制同步到Slave執(zhí)行。

如果不想讓Slave那么快的執(zhí)行Master的變更,可以配置延遲從庫,利用它可以實現(xiàn)數(shù)據(jù)誤刪的快速恢復(fù),例如延遲一個小時。

 

總結(jié)

安全存在于系統(tǒng)的方方面面,涉及安全的都是大事,今天主要聊的是MySQL安全的那些事,主要包括MySQL服務(wù)器安全,數(shù)據(jù)庫安全以及數(shù)據(jù)安全,聊完之后發(fā)現(xiàn)安全的東西還蠻多,這些能夠讓我們對MySQL安全有更加深刻的認識,同時也能規(guī)避一些安全風(fēng)險,讓系統(tǒng)安全穩(wěn)定的運行。

作為開發(fā)可能更多關(guān)注的是代碼安全和質(zhì)量,其實MySQL的安全也很重要,需要更多的關(guān)注和了解咯。

以上就是本期的全部內(nèi)容了,我是敖丙,你知道的越多,你不知道的越多,我們下期見。

 

責(zé)任編輯:武曉燕 來源: 三太子敖丙
相關(guān)推薦

2023-07-31 08:21:22

語法校對器Pick

2021-08-06 11:50:49

Linux 字節(jié)對齊Linux 系統(tǒng)

2022-09-09 08:08:28

開源項目服務(wù)

2019-01-07 12:02:02

TCP長連接Java

2017-12-29 10:38:51

2024-02-21 07:24:21

微服務(wù)單體架構(gòu)MVC

2019-02-21 17:12:59

物聯(lián)網(wǎng)安全物聯(lián)網(wǎng)IOT

2021-08-11 21:46:47

MySQL索引join

2023-11-14 09:08:12

MySQL多表關(guān)聯(lián)

2017-12-21 08:06:40

2014-09-25 10:36:33

2013-04-12 09:41:52

MySQL 5.6

2019-01-28 18:02:21

網(wǎng)絡(luò)安全網(wǎng)絡(luò)安全技術(shù)周刊

2020-10-30 07:43:35

Jenkins配置前端

2022-02-15 19:50:18

加載器JAVAJDK

2024-10-14 12:34:08

2021-10-26 11:42:51

系統(tǒng)

2014-09-30 09:56:03

2020-05-09 12:16:12

中臺架構(gòu)工具

2014-07-22 10:42:04

點贊
收藏

51CTO技術(shù)棧公眾號

主站蜘蛛池模板: 日韩av视屏| 免费人成激情视频在线观看冫 | 欧美视频免费 | 在线观看亚洲精品 | 国产日韩欧美精品一区二区三区 | 成人av免费网站 | 国产福利资源在线 | 精品久久久久久亚洲精品 | 国产精品毛片一区二区三区 | 亚洲成av人片在线观看无码 | 成人午夜 | 欧美精品在线免费观看 | 国产成人高清在线观看 | 国产清纯白嫩初高生在线播放视频 | 色.com| 日韩精品一区二区三区在线播放 | 欧美二区乱c黑人 | 国产精品一区二区av | 一区二区三区四区在线 | 国产做a爱片久久毛片 | 欧美精品一区二区三区四区五区 | 亚洲成人二区 | 日批日韩在线观看 | 视频精品一区 | 91精品国产99 | 日韩欧美在 | 国产激情 | 91欧美精品成人综合在线观看 | 久久久久久成人 | 精品丝袜在线 | 91亚洲精品在线观看 | 欧美成人h版在线观看 | 国产91在线播放 | 亚洲欧美日韩国产综合 | 一区二区国产在线观看 | 中文字幕在线一区二区三区 | 91中文视频 | 黄色一级片aaa| 精品一二三 | 深夜福利亚洲 | 最近中文字幕第一页 |