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

年底了,你的數據庫密碼安全嗎

數據庫 MySQL
年底了,你的數據庫是不是該巡檢了?一般巡檢都會關心密碼安全問題,比如密碼復雜度設置,是否有定期修改等。特別是進行等保評測時,評測機構會要求具備密碼安全策略。其實 MySQL 系統本身可以設置密碼復雜度及自動過期策略的,可能比較少用,大多數同學并未詳細去了解。

 前言:

年底了,你的數據庫是不是該巡檢了?一般巡檢都會關心密碼安全問題,比如密碼復雜度設置,是否有定期修改等。特別是進行等保評測時,評測機構會要求具備密碼安全策略。其實 MySQL 系統本身可以設置密碼復雜度及自動過期策略的,可能比較少用,大多數同學并未詳細去了解。本篇文章我們一起來學習下如何設置數據庫賬號密碼復雜度及自動過期策略。

 

[[374055]]

1.密碼復雜度策略設置

MySQL 系統自帶有 validate_password 插件,此插件可以驗證密碼強度,未達到規定強度的密碼則不允許被設置。MySQL 5.7 及 8.0 版本默認情況下貌似都不啟用該插件,這也使得我們可以隨意設置密碼,比如設置為 123、123456等。如果我們想從根源上規范密碼強度,可以啟用該插件,下面一起來看下如何通過此插件來設置密碼復雜度策略。

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

進入 MySQL 命令行,通過 show plugins 或者查看 validate_password 相關參數可以判斷是否已安裝此插件。若沒有相關參數則代表未安裝此插件

 

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

2)安裝 validate_password 插件

 

  1. # 通過 INSTALL PLUGIN 命令可安裝此插件 
  2. # 每個平臺的文件名后綴都不同 對于 Unix 和類 Unix 系統,為.so,對于 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 相關參數 
  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)密碼強度相關參數解釋

安裝 validate_password 插件后,多了一些密碼強度相關參數,這些參數從字面意思上也很容易看懂,下面簡單解釋下幾個重點參數。

1、validate_password_policy

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

0 or LOW 僅需需符合密碼長度(由參數validate_password_length指定)

1 or MEDIUM 滿足LOW策略,同時還需滿足至少有1個數字,小寫字母,大寫字母和特殊字符

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

2、validate_password_dictionary_file

用于配置密碼的字典文件,當validate_password_policy設置為STRONG時可以配置密碼字典文件,字典文件中存在的密碼不得使用。

3、validate_password_length

用來設置密碼的最小長度,默認值是8

4、validate_password_mixed_case_count

當validate_password_policy設置為MEDIUM或者STRONG時,密碼中至少同時擁有的小寫和大寫字母的數量,默認是1最小是0;默認是至少擁有一個小寫和一個大寫字母。

5、validate_password_number_count

當validate_password_policy設置為MEDIUM或者STRONG時,密碼中至少擁有的數字的個數,默認1最小是0

6、validate_password_special_char_count

當validate_password_policy設置為MEDIUM或者STRONG時,密碼中至少擁有的特殊字符的個數,默認1最小是0

4)密碼復雜度策略具體設置

學習完以上參數,我們就可以根據自身情況來具體設置密碼復雜度策略了,比如我想讓密碼至少 10 位且包含大小寫字母、數字、特殊字符,則可以這樣設置。

 

  1. # 設置密碼長度至少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. # 若想永久生效,建議將以下參數寫入配置文件 
  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)測試密碼復雜度

密碼復雜度策略只對生效后的操作有效,比如說你之前有個賬號,密碼是 123 ,則該賬號還是可以繼續使用的,不過若再次更改密碼則需滿足復雜度策略。下面我們來測試下密碼復雜度策略的具體效果。

 

  1. # 新建用戶設置密碼 
  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.設置密碼自動過期

除了設置密碼復雜度策略外,我們還可以設置密碼自動過期,比如說隔 90 天密碼會過期必須修改密碼后才能繼續使用,這樣我們的數據庫賬號就更加安全了。下面我們來看下如何設置密碼自動過期。

單獨設置某個賬號密碼過期時間

使用 ALTER USER 語句可以使單個賬號密碼過期,也可以更改賬號過期時間。

 

  1. # 通過 mysql.user 系統表查看數據庫賬號狀態 
  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 賬號密碼立即過期 
  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. # 修改賬號密碼永不過期 
  35. mysql> ALTER USER 'expuser'@'%' PASSWORD EXPIRE NEVER; 
  36. Query OK, 0 rows affected (0.01 sec) 
  37.  
  38. # 單獨設置該賬號密碼90天過期 
  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. # 讓此賬號使用默認的密碼過期全局策略 
  57. mysql> ALTER USER 'expuser'@'%' PASSWORD EXPIRE DEFAULT
  58. Query OK, 0 rows affected (0.01 sec) 

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

對于給定過期時間的賬號,比如說設置 90 天過期,數據庫系統會比較當前時間與上次修改密碼的時間差值,如果距離上次修改密碼時間超過 90 天,則將此賬號密碼標記為過期,必須更改密碼后才能進行操作。

設置全局過期策略

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

 

  1. # 設置全局過期策略 先手動更改再加入配置文件 
  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. # 寫入配置文件使得重啟生效 
  14. [mysqld] 
  15. default_password_lifetime = 90 

盡管可以通過將過期的密碼設置為當前值來“重置”它,但出于良好的 Policy 考慮,最好選擇其他密碼。

總結:

本篇文章主要介紹了關于數據庫密碼的兩項安全策略,密碼復雜度加上密碼過期策略,多一份策略多一份安心。要記住:安全無小事。

責任編輯:華軒 來源: MySQL技術
相關推薦

2019-06-14 15:10:54

密碼管理存儲密碼攻擊

2013-10-08 09:54:41

數據庫安全數據庫管理

2012-12-04 16:09:17

2012-12-05 11:16:40

測試

2013-09-29 09:44:14

2024-03-13 10:40:00

性能探測工具SQL語句數據庫

2015-05-25 10:24:19

2019-04-08 14:58:36

數據庫SQL數據類型

2011-11-23 13:05:01

2025-05-07 04:45:00

AIOPS數據庫Oracle

2010-09-17 13:03:47

2024-03-08 13:33:08

PG數據安全

2017-01-18 18:28:54

大數據數據庫技術

2013-07-15 09:51:04

2013-04-27 09:16:35

數據庫安全NoSQL安全NoSQL

2020-11-12 09:53:49

數據庫安全黑客勒索

2021-02-28 07:47:41

數據庫密碼加密

2015-03-25 13:16:55

SQL Server數據庫安全開發人員

2015-06-01 15:11:37

數據庫update

2011-03-10 13:24:26

點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 久久国产精品-国产精品 | 欧美精品一区二区免费 | 亚洲一区高清 | 91精产国品一二三区 | 天天躁人人躁人人躁狂躁 | 国产精品久久久久久52avav | 亚洲一区在线观看视频 | 欧美中文字幕一区 | 中文字幕一区二区在线观看 | 偷拍自拍网站 | 91玖玖| 欧美一区二区免费 | 成人乱人乱一区二区三区软件 | 亚洲综合在线播放 | 一级毛片在线播放 | 欧美久久久网站 | 高清色| 亚洲高清免费视频 | 四虎永久免费影院 | 午夜寂寞网站 | 男女视频在线观看 | 在线视频一区二区三区 | 成人精品视频在线观看 | 午夜视频在线播放 | 欧美偷偷 | 国产乱码精品一区二区三区忘忧草 | 日韩欧美精品一区 | 国产高清视频在线 | 久久久精品 | 国产欧美在线视频 | 国产精品色| 色综合久久天天综合网 | 亚洲男人网 | 欧美一区二区三区在线观看 | 中文字幕日韩一区 | 国产免费观看久久黄av片涩av | 性一交一乱一透一a级 | 欧美一区二区三区 | 羞羞网站免费 | 国产无人区一区二区三区 | 一级大黄|