這篇文章是4月9日網絡研討會——MySQL安全性解決方案的圖文版內容。算法
主要包括三方面的內容:數據庫
面臨安全性的挑戰。安全
MySQL的安全功能。服務器
隨着數據爆發式的增加,安全性已是用戶頭等重要的工做,數據已經成爲其最重要的資產。網絡
這一頁包含了數據庫所面臨的各個方面的風險:架構
缺少配置:指的是數據庫的安全相關配置沒有進行從新設定,使用默認值或者不當的配置。解決方法爲更改默認的配置和控制。併發
特權帳戶:數據庫裏面存在多個特權帳戶,該帳戶權限過多,誤操做會照成巨大影響。解決方法爲制定權限策略,權限最小化原則,爲用戶匹配適當的權限。oracle
訪問控制薄弱:沒有設置專用的管理帳戶,帳戶屬性模糊,執行查詢工做的同時,有執行管理工做。解決方法爲設置專用的管理帳戶,爲管理帳戶和應用帳戶設置不一樣的權限。ide
認證薄弱:登陸帳戶的密碼簡單,長時間不更換等等。解決方法爲強制實施「強密碼」,並按期進行輪換。工具
審計薄弱:不符合規章制度的要求,沒有設置審計或相關的審計策略。解決方法爲,按照合規要求和審計策略配置相關審計記錄。
缺乏加密:在涉及數據、備份及網絡傳輸等環節缺少加密,致使數據泄露。解決方法爲在數據傳輸的各個環節使用加密。
正確的憑據和密鑰管理:加密使用的憑據和密鑰沒有按照要求進行保管,會導致密鑰丟失或者不可用。解決方法爲使用專門的密鑰保管工具存放密鑰和憑據。
備份不安全:備份沒有使用加密等措施,致使備份數據泄露。解決方法爲對備份數據進行加密。
無監控:對系統不採起監控措施,徹底等待過後發現。解決方法爲採用正確的監控系統對安全、用戶、對象等等進行監控。
應用程序編碼薄弱:應用程序編碼經驗不足,不對查詢語句進行嚴格限制,致使意外的查詢語句進入數據庫。解決方法爲使用防火牆攔截白名單以外的查詢語句。
除了數據庫的安全風險以外,持有數據的組織須要對應不斷增強的數據信息保護法律法規的要求。全球範圍已經對數據保護,尤爲是我的數據保護加強了法規的要求,例如,2018年末推出的GDRP,中國的網絡信息安全法近年來不斷補充安全規範和指南,人大常委會於2019年12月宣佈,制定有關我的數據保護和安全的立法是下一個立法年度的優先事項,說明不遠的未來,中國即將出臺相關法律。
這一頁顯示的是目前國際上廣泛存在的合規要求,若是有國際業務的組織請留意相關法規要求,避免違規操做。
上面的內容是數據庫面臨的挑戰與合規要求,那麼應該如何確保數據庫的安全呢?
經過評估、預防、檢測及恢復四個方面來確保數據庫的安全性。這是一個通用的方法論。評估意味着須要定位風險和漏洞,確保必要的安全控件都已經正確安裝。預防意味着使用加密算法、用戶控制、訪問控制等手段儘量的防止***。檢測意味着使用審計、監控、警告燈手段對仍然可能存在的數據侵入進行檢測。恢復意味着萬一出現了安全事件,也能夠保證服務不會中斷。而且須要對安全事件進行論證、過後驗證已解決安全漏洞。
針對這個方法論,MySQL提供了下面的安全性功能。
下圖是企業版MySQL安全性架構總體一覽:
接下來將對這個架構裏面的詳細內容逐一介紹。
從MySQL8.0開始社區版與企業版一樣使用OpenSSL,以前因爲許可的問題,社區版沒法使用OpenSSL,這個問題在8.0得以解決(8.0.18所有版本開始使用OpenSSL)。使用OpenSSL能夠支持TLS從1.0到1.3版本的各類協議。而且基於Facebook的貢獻,SLL的動態選項能夠支持不重啓服務器進行更新證書。
8.0使用OpenSSL的優點包括:使用通過優化的OpenSSL庫,支持在不升級的狀況下對其打補丁。另外,使用基於OpenSSL的FIPS對象模塊來提供機密性、整合性和信息摘要服務來知足FIPS(美國聯邦信息處理標準)的要求。
TDE加密源於5.7版本,5.7版本只適用於表空間文件的加密,8.0將其擴展到日誌的加密。下面放一個關於TDE功能的演示:
8.0增長了一個管理專用的端口,有了這個端口之後,DBA能夠不受最大鏈接的限制,登陸到服務器對鏈接進行管理。
增長了一組system_user權限,主要目的是爲了將權限更細化,防止通常用戶擁有過分的權限。擁有該權限的用戶複製管理如下的需求:
8.0.16增長了撤銷部分權限的功能,該功能能夠更加精細管理MySQL的權限。
角色功能能夠改善MySQL的使用權控制:
從MySQL8.0開始,密碼默認使用SHA2 Caching,使用它鏈接更加迅速。
而且,爲了解決更改密碼與推送到應用層同步的問題,增長了一個雙重密碼功能。
MySQL的密碼策略能夠包含以下內容:
接下來再介紹一下Keyring API
包括企業版TDE功能在內,都是基於這個API實現的,使用這個API能夠將密鑰保管在主機或者專用的密鑰保管庫裏面。最新的Keyring API支持HashiCop Vault
使用Keyring能夠對密鑰進行管理,適用於以下場景:
使用Keyring能夠對存於磁盤的數據進行加密,表空間,日誌等等,能夠將密鑰以加密文件形式保存(企業版)或使用專用的密鑰保管庫。
數據屏蔽和反識別功能,能夠對敏感數據進行屏蔽和去識別,脫去敏感信息,符合法律法規的要求。
除了能夠對敏感數據進行屏蔽,還能夠生成隨機數據供測試使用,而且隨機數據支持使用自定義的字典。
MySQL企業版的審計功能,支持開箱即用,記錄鏈接、登陸和查詢日誌等相關內容。
MySQL企業版認證功能能夠集中化認證,整合管理基礎架構。
支持LDAP認證。
最後介紹一下,MySQL的防火牆。防火牆經過白名單的形式,將爲記錄在名單內的語句阻擋在服務器以外,能夠防止SQL注入***。而且能夠做爲一個***檢測系統使用,檢測SQL併發出警告。
下面放上一個關於防火牆的演示:
MySQL企業版和安全相關的所有功能如上圖所示,感興趣的能夠經過https://edelivery.oracle.com/下載試用版試用。