一、背景
某次某平台进行安全性符合型评估时,列出了数据库相关安全选项,本文特对此记录,以供备忘参考。
二、安全配置
2.1、数据库系统登录时的用户进行身份标识和鉴别;
1)对登录Mysql系统用户的密码复杂度是否有要求?
即需要满足密码复杂度要求,至少8位长度,大小写各1个,数字2个,特殊字符至少1个,密码有效期3个月。现场版本5.7.34;Mysql 5.6后自带validate_password.so插件(windows为validate_password.dll)
//检查是否启用命令,如果啥也没返回,就是没启用
mysql> SHOW VARIABLES LIKE 'validate_password%';
mysql> SELECT * from mysql.plugin ;
mysql> show plugins;
#安装插件
mysql> INSTALL PLUGIN validate_password SONAME 'validate_password.so'; #Linux
mysql> INSTALL PLUGIN validate_password SONAME 'validate_password.dll'; #windows
#验证
mysql> SELECT * from mysql.plugin ;
#创建一个名为password_policy的新表,用于存储密码策略的相关信息
CREATE TABLE password_policy (
id INT PRIMARY KEY AUTO_INCREMENT,
uppercase_required BOOLEAN NOT NULL,
lowercase_required BOOLEAN NOT NULL,
number_required BOOLEAN NOT NULL,
special_character_required BOOLEAN NOT NULL,
min_length INT NOT NULL
);
完成后修改配置文件写入:
plugin-load-add=validate_password.so
validate-password=ON
validate_password_policy = 1 ##0(LOW), 1 (MEDIUM), 2 (STRONG)
validate_password_length = 8
validate_password_mixed_case_count = 1 #大小写字符长度,至少1个
validate_password_number_count = 2
validate_password_special_char_count = 1 #特殊字符至少1个
default_password_lifetime=180
#验证测试密码符合度
SELECT VALIDATE_PASSWORD_STRENGTH('Ad32weak$_@123');
规则说明:详情参看官网说明:
策略 | 检查规则 |
---|---|
0 or LOW | Length(满足长度要求) |
1 or MEDIUM | Length; numeric, lowercase/uppercase, and special characters |
2 or STRONG | Length; numeric, lowercase/uppercase, and special characters; dictionary file |
2)是否启用ssl:show variables like '%ssl%';