自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

年底了,你的數(shù)據(jù)庫(kù)密碼安全嗎

數(shù)據(jù)庫(kù) MySQL
年底了,你的數(shù)據(jù)庫(kù)是不是該巡檢了?一般巡檢都會(huì)關(guān)心密碼安全問(wèn)題,比如密碼復(fù)雜度設(shè)置,是否有定期修改等。特別是進(jìn)行等保評(píng)測(cè)時(shí),評(píng)測(cè)機(jī)構(gòu)會(huì)要求具備密碼安全策略。其實(shí) MySQL 系統(tǒng)本身可以設(shè)置密碼復(fù)雜度及自動(dòng)過(guò)期策略的,可能比較少用,大多數(shù)同學(xué)并未詳細(xì)去了解。

 前言:

年底了,你的數(shù)據(jù)庫(kù)是不是該巡檢了?一般巡檢都會(huì)關(guān)心密碼安全問(wèn)題,比如密碼復(fù)雜度設(shè)置,是否有定期修改等。特別是進(jìn)行等保評(píng)測(cè)時(shí),評(píng)測(cè)機(jī)構(gòu)會(huì)要求具備密碼安全策略。其實(shí) MySQL 系統(tǒng)本身可以設(shè)置密碼復(fù)雜度及自動(dòng)過(guò)期策略的,可能比較少用,大多數(shù)同學(xué)并未詳細(xì)去了解。本篇文章我們一起來(lái)學(xué)習(xí)下如何設(shè)置數(shù)據(jù)庫(kù)賬號(hào)密碼復(fù)雜度及自動(dòng)過(guò)期策略。

 

[[374055]]

1.密碼復(fù)雜度策略設(shè)置

MySQL 系統(tǒng)自帶有 validate_password 插件,此插件可以驗(yàn)證密碼強(qiáng)度,未達(dá)到規(guī)定強(qiáng)度的密碼則不允許被設(shè)置。MySQL 5.7 及 8.0 版本默認(rèn)情況下貌似都不啟用該插件,這也使得我們可以隨意設(shè)置密碼,比如設(shè)置為 123、123456等。如果我們想從根源上規(guī)范密碼強(qiáng)度,可以啟用該插件,下面一起來(lái)看下如何通過(guò)此插件來(lái)設(shè)置密碼復(fù)雜度策略。

1)查看是否已安裝此插件

進(jìn)入 MySQL 命令行,通過(guò) show plugins 或者查看 validate_password 相關(guān)參數(shù)可以判斷是否已安裝此插件。若沒(méi)有相關(guān)參數(shù)則代表未安裝此插件

 

  1. # 安裝前檢查 為空則說(shuō)明未安裝此插件 
  2. mysql> show variables like 'validate%'
  3. Empty set (0.00 sec) 

2)安裝 validate_password 插件

 

  1. # 通過(guò) INSTALL PLUGIN 命令可安裝此插件 
  2. # 每個(gè)平臺(tái)的文件名后綴都不同 對(duì)于 Unix 和類 Unix 系統(tǒng),為.so,對(duì)于 Windows 為.dll 
  3. mysql> INSTALL PLUGIN validate_password SONAME 'validate_password.so'
  4. Query OK, 0 rows affected, 1 warning (0.28 sec) 
  5.  
  6. # 查看 validate_password 相關(guān)參數(shù) 
  7. mysql> show variables like 'validate%'
  8. +--------------------------------------+--------+ 
  9. | Variable_name                        | Value  | 
  10. +--------------------------------------+--------+ 
  11. | validate_password_check_user_name    | ON     | 
  12. | validate_password_dictionary_file    |        | 
  13. | validate_password_length             | 8      | 
  14. | validate_password_mixed_case_count   | 1      | 
  15. | validate_password_number_count       | 1      | 
  16. | validate_password_policy             | MEDIUM | 
  17. | validate_password_special_char_count | 1      | 
  18. +--------------------------------------+--------+ 
  19. rows in set (0.00 sec) 

3)密碼強(qiáng)度相關(guān)參數(shù)解釋

安裝 validate_password 插件后,多了一些密碼強(qiáng)度相關(guān)參數(shù),這些參數(shù)從字面意思上也很容易看懂,下面簡(jiǎn)單解釋下幾個(gè)重點(diǎn)參數(shù)。

1、validate_password_policy

代表的密碼策略,默認(rèn)是MEDIUM 可配置的值有以下:

0 or LOW 僅需需符合密碼長(zhǎng)度(由參數(shù)validate_password_length指定)

1 or MEDIUM 滿足LOW策略,同時(shí)還需滿足至少有1個(gè)數(shù)字,小寫(xiě)字母,大寫(xiě)字母和特殊字符

2 or STRONG 滿足MEDIUM策略,同時(shí)密碼不能存在字典文件(dictionary file)中

2、validate_password_dictionary_file

用于配置密碼的字典文件,當(dāng)validate_password_policy設(shè)置為STRONG時(shí)可以配置密碼字典文件,字典文件中存在的密碼不得使用。

3、validate_password_length

用來(lái)設(shè)置密碼的最小長(zhǎng)度,默認(rèn)值是8

4、validate_password_mixed_case_count

當(dāng)validate_password_policy設(shè)置為MEDIUM或者STRONG時(shí),密碼中至少同時(shí)擁有的小寫(xiě)和大寫(xiě)字母的數(shù)量,默認(rèn)是1最小是0;默認(rèn)是至少擁有一個(gè)小寫(xiě)和一個(gè)大寫(xiě)字母。

5、validate_password_number_count

當(dāng)validate_password_policy設(shè)置為MEDIUM或者STRONG時(shí),密碼中至少擁有的數(shù)字的個(gè)數(shù),默認(rèn)1最小是0

6、validate_password_special_char_count

當(dāng)validate_password_policy設(shè)置為MEDIUM或者STRONG時(shí),密碼中至少擁有的特殊字符的個(gè)數(shù),默認(rèn)1最小是0

4)密碼復(fù)雜度策略具體設(shè)置

學(xué)習(xí)完以上參數(shù),我們就可以根據(jù)自身情況來(lái)具體設(shè)置密碼復(fù)雜度策略了,比如我想讓密碼至少 10 位且包含大小寫(xiě)字母、數(shù)字、特殊字符,則可以這樣設(shè)置。

 

  1. # 設(shè)置密碼長(zhǎng)度至少10位 
  2. mysql> set global validate_password_length = 10; 
  3. Query OK, 0 rows affected (0.00 sec) 
  4.  
  5. mysql> show variables like 'validate%';                                                                                    
  6. +--------------------------------------+--------+ 
  7. | Variable_name                        | Value  | 
  8. +--------------------------------------+--------+ 
  9. | validate_password_check_user_name    | ON     | 
  10. | validate_password_dictionary_file    |        | 
  11. | validate_password_length             | 10     | 
  12. | validate_password_mixed_case_count   | 1      | 
  13. | validate_password_number_count       | 1      | 
  14. | validate_password_policy             | MEDIUM | 
  15. | validate_password_special_char_count | 1      | 
  16. +--------------------------------------+--------+ 
  17. rows in set (0.00 sec) 
  18.  
  19. # 若想永久生效,建議將以下參數(shù)寫(xiě)入配置文件 
  20. [mysqld] 
  21. plugin-load = validate_password.so 
  22. validate_password_length = 10 
  23. validate_password_policy = 1 
  24. validate-password = FORCE_PLUS_PERMANENT 

5)測(cè)試密碼復(fù)雜度

密碼復(fù)雜度策略只對(duì)生效后的操作有效,比如說(shuō)你之前有個(gè)賬號(hào),密碼是 123 ,則該賬號(hào)還是可以繼續(xù)使用的,不過(guò)若再次更改密碼則需滿足復(fù)雜度策略。下面我們來(lái)測(cè)試下密碼復(fù)雜度策略的具體效果。

 

  1. # 新建用戶設(shè)置密碼 
  2. mysql> create user 'testuser'@'%' identified by '123'
  3. ERROR 1819 (HY000): Your password does not satisfy the current policy requirements 
  4. mysql> create user 'testuser'@'%' identified by 'ab123'
  5. ERROR 1819 (HY000): Your password does not satisfy the current policy requirements 
  6. mysql> create user 'testuser'@'%' identified by 'Ab@123'
  7. ERROR 1819 (HY000): Your password does not satisfy the current policy requirements 
  8. mysql> create user 'testuser'@'%' identified by 'Bsdf@5467672'
  9. Query OK, 0 rows affected (0.01 sec) 
  10.  
  11. # 更改密碼 
  12. mysql> alter user 'testuser'@'%' identified by 'dfgf3435'
  13. ERROR 1819 (HY000): Your password does not satisfy the current policy requirements 
  14. mysql> alter user 'testuser'@'%' identified by 'dBsdf@5467672'
  15. Query OK, 0 rows affected (0.01 sec) 

2.設(shè)置密碼自動(dòng)過(guò)期

除了設(shè)置密碼復(fù)雜度策略外,我們還可以設(shè)置密碼自動(dòng)過(guò)期,比如說(shuō)隔 90 天密碼會(huì)過(guò)期必須修改密碼后才能繼續(xù)使用,這樣我們的數(shù)據(jù)庫(kù)賬號(hào)就更加安全了。下面我們來(lái)看下如何設(shè)置密碼自動(dòng)過(guò)期。

單獨(dú)設(shè)置某個(gè)賬號(hào)密碼過(guò)期時(shí)間

使用 ALTER USER 語(yǔ)句可以使單個(gè)賬號(hào)密碼過(guò)期,也可以更改賬號(hào)過(guò)期時(shí)間。

 

  1. # 通過(guò) mysql.user 系統(tǒng)表查看數(shù)據(jù)庫(kù)賬號(hào)狀態(tài) 
  2. mysql> select user,host,password_expired,password_lifetime,password_last_changed,account_locked from mysql.user
  3. +------------------+-----------+------------------+-------------------+-----------------------+----------------+ 
  4. user             | host      | password_expired | password_lifetime | password_last_changed | account_locked | 
  5. +------------------+-----------+------------------+-------------------+-----------------------+----------------+ 
  6. | expuser          | %         | N                |              NULL | 2021-01-05 14:30:30   | N              | 
  7. | root             | %         | N                |              NULL | 2020-10-30 14:45:43   | N              | 
  8. | testuser         | %         | N                |              NULL | 2021-01-04 17:22:37   | N              | 
  9. | mysql.infoschema | localhost | N                |              NULL | 2020-10-30 14:37:09   | Y              | 
  10. | mysql.session    | localhost | N                |              NULL | 2020-10-30 14:37:09   | Y              | 
  11. | mysql.sys        | localhost | N                |              NULL | 2020-10-30 14:37:09   | Y              | 
  12. | root             | localhost | N                |              NULL | 2020-10-30 14:38:55   | N              | 
  13. +------------------+-----------+------------------+-------------------+-----------------------+----------------+ 
  14. rows in set (0.01 sec) 
  15.  
  16. # 使 expuser 賬號(hào)密碼立即過(guò)期 
  17. mysql> ALTER USER 'expuser'@'%' PASSWORD EXPIRE; 
  18. Query OK, 0 rows affected (0.00 sec) 
  19.  
  20. mysql> select user,host,password_expired,password_lifetime,password_last_changed,account_locked from mysql.user
  21. +------------------+-----------+------------------+-------------------+-----------------------+----------------+ 
  22. user             | host      | password_expired | password_lifetime | password_last_changed | account_locked | 
  23. +------------------+-----------+------------------+-------------------+-----------------------+----------------+ 
  24. | expuser          | %         | Y                |              NULL | 2021-01-05 14:30:30   | N              | 
  25. | root             | %         | N                |              NULL | 2020-10-30 14:45:43   | N              | 
  26. | testuser         | %         | N                |              NULL | 2021-01-04 17:22:37   | N              | 
  27. | mysql.infoschema | localhost | N                |              NULL | 2020-10-30 14:37:09   | Y              | 
  28. | mysql.session    | localhost | N                |              NULL | 2020-10-30 14:37:09   | Y              | 
  29. | mysql.sys        | localhost | N                |              NULL | 2020-10-30 14:37:09   | Y              | 
  30. | root             | localhost | N                |              NULL | 2020-10-30 14:38:55   | N              | 
  31. +------------------+-----------+------------------+-------------------+-----------------------+----------------+ 
  32. rows in set (0.00 sec) 
  33.  
  34. # 修改賬號(hào)密碼永不過(guò)期 
  35. mysql> ALTER USER 'expuser'@'%' PASSWORD EXPIRE NEVER; 
  36. Query OK, 0 rows affected (0.01 sec) 
  37.  
  38. # 單獨(dú)設(shè)置該賬號(hào)密碼90天過(guò)期 
  39. mysql> ALTER USER 'expuser'@'%' PASSWORD EXPIRE INTERVAL 90 DAY
  40. Query OK, 0 rows affected (0.00 sec) 
  41.  
  42. mysql> select user,host,password_expired,password_lifetime,password_last_changed,account_locked from mysql.user
  43. +------------------+-----------+------------------+-------------------+-----------------------+----------------+ 
  44. user             | host      | password_expired | password_lifetime | password_last_changed | account_locked | 
  45. +------------------+-----------+------------------+-------------------+-----------------------+----------------+ 
  46. | expuser          | %         | N                |                90 | 2021-01-05 14:41:28   | N              | 
  47. | root             | %         | N                |              NULL | 2020-10-30 14:45:43   | N              | 
  48. | testuser         | %         | N                |              NULL | 2021-01-04 17:22:37   | N              | 
  49. | mysql.infoschema | localhost | N                |              NULL | 2020-10-30 14:37:09   | Y              | 
  50. | mysql.session    | localhost | N                |              NULL | 2020-10-30 14:37:09   | Y              | 
  51. | mysql.sys        | localhost | N                |              NULL | 2020-10-30 14:37:09   | Y              | 
  52. | root             | localhost | N                |              NULL | 2020-10-30 14:38:55   | N              | 
  53. +------------------+-----------+------------------+-------------------+-----------------------+----------------+ 
  54. rows in set (0.00 sec) 
  55.  
  56. # 讓此賬號(hào)使用默認(rèn)的密碼過(guò)期全局策略 
  57. mysql> ALTER USER 'expuser'@'%' PASSWORD EXPIRE DEFAULT
  58. Query OK, 0 rows affected (0.01 sec) 

mysql.user 系統(tǒng)表記錄著每個(gè)賬號(hào)的相關(guān)信息,當(dāng) password_expired 字段值為 Y 時(shí),代表此密碼已過(guò)期,使用過(guò)期密碼仍可以登錄,但不能進(jìn)行任何操作,進(jìn)行操作會(huì)提示:ERROR 1820 (HY000): You must reset your password using ALTER USER statement before executing this statement. 必須更改密碼后才能進(jìn)行正常操作。

對(duì)于給定過(guò)期時(shí)間的賬號(hào),比如說(shuō)設(shè)置 90 天過(guò)期,數(shù)據(jù)庫(kù)系統(tǒng)會(huì)比較當(dāng)前時(shí)間與上次修改密碼的時(shí)間差值,如果距離上次修改密碼時(shí)間超過(guò) 90 天,則將此賬號(hào)密碼標(biāo)記為過(guò)期,必須更改密碼后才能進(jìn)行操作。

設(shè)置全局過(guò)期策略

要構(gòu)建全局密碼自動(dòng)過(guò)期策略,請(qǐng)使用 default_password_lifetime 系統(tǒng)變量。在 5.7.11 版本之前,默認(rèn)的 default_password_lifetime 值為 360(密碼大約每年必須更改一次),之后的版本默認(rèn)值為 0,表示密碼不會(huì)過(guò)期。此參數(shù)的單位是天,比如我們可以將此參數(shù)設(shè)置為 90 ,則表示全局密碼自動(dòng)過(guò)期策略是 90 天。

 

  1. # 設(shè)置全局過(guò)期策略 先手動(dòng)更改再加入配置文件 
  2. mysql> SET GLOBAL default_password_lifetime = 90; 
  3. Query OK, 0 rows affected (0.01 sec) 
  4.  
  5. mysql> show variables like 'default_password_lifetime'
  6. +---------------------------+-------+ 
  7. | Variable_name             | Value | 
  8. +---------------------------+-------+ 
  9. | default_password_lifetime | 90    | 
  10. +---------------------------+-------+ 
  11. 1 row in set (0.00 sec) 
  12.  
  13. # 寫(xiě)入配置文件使得重啟生效 
  14. [mysqld] 
  15. default_password_lifetime = 90 

盡管可以通過(guò)將過(guò)期的密碼設(shè)置為當(dāng)前值來(lái)“重置”它,但出于良好的 Policy 考慮,最好選擇其他密碼。

總結(jié):

本篇文章主要介紹了關(guān)于數(shù)據(jù)庫(kù)密碼的兩項(xiàng)安全策略,密碼復(fù)雜度加上密碼過(guò)期策略,多一份策略多一份安心。要記?。喊踩珶o(wú)小事。

責(zé)任編輯:華軒 來(lái)源: MySQL技術(shù)
相關(guān)推薦

2019-06-14 15:10:54

密碼管理存儲(chǔ)密碼攻擊

2013-10-08 09:54:41

數(shù)據(jù)庫(kù)安全數(shù)據(jù)庫(kù)管理

2012-12-04 16:09:17

2012-12-05 11:16:40

測(cè)試

2013-09-29 09:44:14

2024-03-13 10:40:00

性能探測(cè)工具SQL語(yǔ)句數(shù)據(jù)庫(kù)

2019-04-08 14:58:36

數(shù)據(jù)庫(kù)SQL數(shù)據(jù)類型

2015-05-25 10:24:19

2011-11-23 13:05:01

2010-09-17 13:03:47

2017-01-18 18:28:54

大數(shù)據(jù)數(shù)據(jù)庫(kù)技術(shù)

2024-03-08 13:33:08

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

2021-02-28 07:47:41

數(shù)據(jù)庫(kù)密碼加密

2013-04-27 09:16:35

數(shù)據(jù)庫(kù)安全NoSQL安全NoSQL

2020-11-12 09:53:49

數(shù)據(jù)庫(kù)安全黑客勒索

2019-05-15 10:55:07

機(jī)器學(xué)習(xí)數(shù)據(jù)庫(kù)索引

2013-07-15 09:51:04

2015-06-01 15:11:37

數(shù)據(jù)庫(kù)update

2021-12-10 07:47:31

MySQL設(shè)置數(shù)據(jù)庫(kù)

2021-09-12 17:25:12

SQLite數(shù)據(jù)庫(kù)
點(diǎn)贊
收藏

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