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

分分鐘致命的MySQL安全盲區

數據庫 MySQL
安全對任何一個系統都至關重要,只有在保證安全的前提下,才能追求穩定性和高性能。

 安全對任何一個系統都至關重要,只有在保證安全的前提下,才能追求穩定性和高性能。

對于一個企業來說,數據就是企業的財富,之前我們也看到過微盟刪庫以及順豐刪庫導致服務長時間不可用的慘案,那么如何保證數據的安全變得尤為重要,本文就聊聊跟MySQL安全相關的那些事,希望對大家有所幫助。

MySQL服務器安全

對于自建機房的MySQL服務器安裝都會經歷網絡配置,存儲規劃,安裝服務器以及安裝MySQL。

存儲安全

1)自建服務器

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

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

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

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

2)公有云RDS

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

網絡安全

1)設置白名單

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

2)外網訪問

數據庫服務器只需要內網訪問,禁止開通外網地址或者公網地址。

操作系統安全

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

1)root啟動MySQL

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

2)賬號弱密碼

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

3)對外開放端口

對于MySQL數據庫服務器,除了3306端口開發給指定的應用服務器訪問外,其他的端口都應該禁用掉,例如ssh, ftp, telent服務端口。

4)服務漏洞

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

5)密碼登錄

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

6)審計功能

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

7)操作命令歷史

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

8)資源限制

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

9)服務器備份

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

MySQL數據庫安全

賬號安全

1)賬號密碼

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

2)賬號分離

對于分布式系統來說,會有多個服務,且服務之間存在調用關系,比如交易 trade-service 會調用支付 payment-service。

為了安全起見,給每個服務創建一個數據庫,同時分配自己的賬號,禁止跨庫訪問。

3)賬號權限

保證賬號權限最小化原則,對于業務賬號來說,只需要授予連接,查詢,新增,修改的權限即可。

4)使用SSL連接

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

系統權限

1)mysql.user權限

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

2)修改賬號密碼

3)修改密碼認證方式

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

4)權限風險

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

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

在以前的MySQL版本,擁有process系統權限的用戶還可以鎖定系統表,比如lock table mysql.user read,導致正常修改用戶的操作。

5)FILE權限

具有FILE權限可以將數據通過SELECT…..INTO OUTFILE…..寫到服務器上有寫權限的目錄下,作為文本格式存放,也可以通過LOAD DATA INFILE…將文本文件數據導入到數據表中。

6)審計功能

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

7)數據備份

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

異地容災

對于核心的業務系統,比如交易,支付等,要做好數據庫的異地容災,避免由于地震等自然災害造成數據不可恢復。

數據安全

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

數據訪問范化

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

建議使用數據庫管理平臺來管理數據庫,一般需要用戶注冊賬號,申請權限(數據導出,結構變更,數據變更),服務Owner審批,提交工單進入審批流程等操作,所有的操作環節都會記錄操作日志。

數據脫敏

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

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

數據加密

從MySQL 5.7開始,InnoDB支持對獨立表空間靜態數據加密,是引擎內部數據頁級別的加密手段,當數據頁寫入文件系統時加進行加密,從數據文件讀到內存中時解密,基于旋轉秘鑰文件而起作用,對于數據保護非常有用。

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

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

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

延遲從庫

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

那如果delete能恢復嗎?

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

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

如果不想讓Slave那么快的執行Master的變更,可以配置延遲從庫,利用它可以實現數據誤刪的快速恢復,例如延遲一個小時。

總結

安全存在于系統的方方面面,涉及安全的都是大事,今天主要聊的是MySQL安全的那些事,主要包括MySQL服務器安全,數據庫安全以及數據安全,聊完之后發現安全的東西還蠻多,這些能夠讓我們對MySQL安全有更加深刻的認識,同時也能規避一些安全風險,讓系統安全穩定的運行。

作為開發可能更多關注的是代碼安全和質量,其實MySQL的安全也很重要,需要更多的關注和了解。 

 

責任編輯:龐桂玉 來源: dbaplus社群
相關推薦

2024-10-25 15:35:16

2020-04-29 11:10:22

固件安全網絡攻擊漏洞

2020-11-02 11:39:11

虛擬設備安全網絡安全漏洞

2020-07-28 16:39:58

網絡安全漏洞網絡攻擊

2014-07-18 14:03:06

Android高效編寫代碼

2011-01-14 15:14:58

2016-01-22 11:40:07

2019-11-05 10:12:21

MySQL性能查詢

2016-09-04 15:42:03

Linux虛擬集群

2015-09-16 11:15:28

戴爾云計算Windows Ser

2020-10-15 10:57:54

物聯網安全技術

2024-02-20 12:36:44

2014-09-28 09:34:17

2014-05-15 16:00:11

Xcode 5項目清潔

2013-11-01 10:56:57

2011-08-15 09:25:04

2022-02-17 14:59:45

馬賽克代碼技術

2019-01-30 08:30:53

MySQL性能數據庫

2024-06-17 08:31:42

2024-05-31 08:32:05

點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 久久精品成人 | 亚洲第一网站 | 欧美日韩不卡在线 | 久久久久免费观看 | 成人一级视频在线观看 | 国产精品国产三级国产aⅴ中文 | 欧洲妇女成人淫片aaa视频 | 美女拍拍拍网站 | 综合第一页 | 亚洲国产看片 | 日韩一二三区视频 | 91av亚洲 | 久久精品二区 | 一区二区三区电影网 | 91久久精品国产 | 911网站大全在线观看 | 国产精品久久久久久久久免费高清 | 一级毛片免费视频 | 欧美日韩视频在线第一区 | 精品视频www| 久草视频网站 | 婷婷在线免费 | 中文字幕不卡在线观看 | 成人av免费看 | 色网在线观看 | 欧美激情一区二区 | 久久久久久蜜桃一区二区 | 国产精品高潮呻吟久久 | 久久99精品久久久久久国产越南 | 一区在线观看视频 | 亚洲精品一区中文字幕乱码 | 91大神在线资源观看无广告 | 九九热精品在线视频 | 国产一区二区精品在线 | 黄色欧美在线 | 亚洲国产精品第一区二区 | 国产乱码精品1区2区3区 | 国产一级片精品 | 国产精品视频一二三区 | 国产在线精品一区 | 日日射夜夜骑 |