MYSQL 8 的 DB security 怎麼應對安全部門的 bulabula

  • 2019 年 10 月 4 日
  • 筆記

MYSQL 8 的 security 的確是和MYSQL 5.7 不大一樣,但具體怎麼弄到底和MYSQL 5.7 有什麼不一樣,還是的搞一搞。什麼 還在使用MYSQL 5.6 ,5.5 ,那也可以看一眼,或許下次升級就直接跳過 5.7 呢 .

我們先一步步來

1 安全部門問:你們的MYSQL 資料庫有么有資料庫安全監測?

答:有的,MYSQL 8 提供了一個安全的監測程式來監測安裝好的MYSQL 的一些安全問題?這個程式的名字叫 mysql_secure_installation

我們來看看他到底能做什麼 ?我們在shell 中直接鍵入 mysql_secure_installation

這樣一個程式會問你幾個問題並根據你的選擇來做出一些對應的動作

評判你的ROOT 密碼是否符合現在的密碼等級的設定,並給出分數

2 在安裝MYSQL的時候,有沒有一些其他的匿名用戶一併被安裝到資料庫中,如果有就進行刪除

3 判斷你的ROOT 用戶是否可以通過外網來進行訪問,如果可以,你可以選擇禁止這樣的許可權

4 有的MYSQL 在安裝的時候,會帶著一個TEST 的資料庫,默認所有的用戶都可以訪問這個庫,你是不是要做點什麼

OK ,一般我們在安裝完MYSQL 8 後,可以通過這個程式來將你的MYSQL 的安全強化,或者可以在你接手一個新的資料庫時來驗證一下你的資料庫的基本安全情況。

2 問題,你的用戶名密碼是否有強制的保護,例如密碼多少位,密碼過期等設置

答:有,我們採用MYSQL 8 的安全組件(不是插件是組件)

怎麼驗證你安裝了這個組件

如果你在MYSQL 資料庫中執行完上面的語句,能看到我紅色線畫的內容,說明你安裝了這個組件(具體咱們安裝這個組件,請 B or G )

那這個MYSQL 8的組件,包含什麼內容我們來list 一下

1 是否打開密碼檢查,默認打開

validate_password.check_user_name ON

2 密碼的長度是多少

validate_password.length 默認 8

3 密碼是否需要大小寫混合的數量

validate_password.mixed_case_count 默認 1

4 密碼中含有數字的最小數量

validate_password.number_count 默認 1

5 密碼中的特殊字元,(非字母和數字)

validate_password.special_char_count 默認 1

5 密碼策略的設置

密碼的策略設置中是有高中低的設置,匹配的值也是 0 1 2

validate_password.policy 默認2

而這個設置直接關係到你上面的設置是否能生效和怎麼生效

選擇 0 則僅僅對密碼的長度進行檢驗

選擇 1 對密碼的長度,是否有數字,是否有大小寫,是否有特殊字元都有監測

選擇 2 則在1 的基礎上,還對你設置的字典文件進行比對,如果和字典文件的禁止設置為密碼的條目對應,則你的密碼就不能進行設置

具體你想怎麼設置就看你公司的安全部門對密碼的要求。

註:同時請注意,如果以前使用PT 工具對帳號進行複製的方式,在MYSQL 8上應該暫時會報錯,因為密碼的加密方式已經變化了,工具無法進行工作。

至於MYSQL5.7 上有的用戶帳號的過期時間,或生存時間也都和以前沒有變化,但一般不建議設置,除非你的安全部門強調,否則別給自己找麻煩。否則大半夜給你打電話告訴你應用聯不通了,那這鍋就的自己背了。

3 MYSQL 的 audit 功能

現在的資料庫都需要有audit的功能,沒有audit 的功能的資料庫在安全方面一定是要受到安全部門的 吐槽或者給你的「顏色」看看。MYSQL 怎麼支援audit 功能,

1 你花錢買MYSQL 的企業版的,自帶audit 功能

2 你安裝的是PERCONA 的 MYSQL SERVER 的版本,他們免費提供你 AUDIT 功能

什麼,免費的官版的MYSQL ,OMG , SORRY 請你 B OR G 吧,因為我一直 percona 版,官版的反正我不用。

下面都是基於 PERCONA 的 MYSQL 8.015 版本,其他的版本的MYSQL ……

這個順便說一句為什麼要PERCONA ,PERCONA 作為資料庫界的「最」強大的服務公司,那支援的資料庫版本和能力算是數一數二的,MONGODB 人家有自己的產品,MYSQL 有自己的產品, POSTGRESQL 11 ,現在也有免費的產品了, MYSQL的 代理軟體,也有免費的產品。重要的是免費,還好用,有文檔,如果有錢還可以買個支援什麼的。

安裝AUDIT 插件

INSTALL PLUGIN audit_log SONAME 'audit_log.so';

查看一下你的插件是否安裝上了

percona 的audit 格式支援 XML JSON CSV 等格式

例如我們要檢查訪問 mysql 資料庫的用戶

SET GLOBAL audit_log_include_databases = 'mysql';

下面兩張圖是相關的配置資訊,和audit LOG 中的內容,具體的就不多說了,都是精英,稍微看一下就都會了。

也可以找一期,在說說這個 audit log OK 今天就到這裡