天天看点

mysql用户密码安全闭环,自主维护自己的数据安全

作者:蜡笔小贤

在企业中,为了保证数据库的安全,一般的策略是对数据库设立多个用户,给每个用户的密码设置有效期,让用户在一定的时间进行更新,以保证数据库的数据安全。

同时,为了保证数据库密码的安全,除了设置一定的密码复杂度外,还会设置密码的历史策略,如密码不能与前5次相同,密码不能使用一年内使用过的密码等等策略。

设立这些策略还不够,为了给客户一个比较好的体验,我们必须还需要增加一个告警机制,在密码过期前多少天,发送告警邮箱给管理员,让管理员在合适的时间内进行更改密码。这样就可以防止mysql数据库密码突然失效,所有服务都连不上数据库,导致服务不可用。

下面给mysql用户密码安全闭环提供简单的方案:

1.mysql数据库用户密码设置过期时间

create user 'test'@'127.0.0.1' identified with mysql_native_password by 'Test@2023'
#密码一年有效期
PASSWORD EXPIRE INTERVAL 365 DAY
#密码不能与前5次相同    
PASSWORD HISTORY 5
#密码不能使用一年内使用过的密码    
PASSWORD REUSE INTERVAL 365 DAY
PASSWORD REQUIRE CURRENT
FAILED_LOGIN_ATTEMPTS 50 PASSWORD_LOCK_TIME 1;
grant select, insert, update, delete, create, alter, index on \`table%\`.* to test@'127.0.0.1';
grant select, insert, update, delete, create, alter, index on table2.* to test@'127.0.0.1';
grant select on mysql.user to test@'127.0.0.1';           

2.密码有效期提前告警机制

告警的一个前提是获取数据库密码的过期时间,通过root用户登录数据库,查询mysql.user表是可以看到每个用户的密码修改时间和有效天数。

mysql用户密码安全闭环,自主维护自己的数据安全
mysql用户密码安全闭环,自主维护自己的数据安全
mysql用户密码安全闭环,自主维护自己的数据安全

其中password_last_changed就是密码最后一次修改的时间。

password_lifetime就是密码有效期。

告警的机制就是在web页面中配置提前xx天给管理员发送告警,然后在后台中设置一个每天凌晨00:00的定时任务,去计算当前时间是否到了告警的阈值。

mysql用户密码安全闭环,自主维护自己的数据安全

修改mysql用户密码的shell脚本如下:

mysql用户密码安全闭环,自主维护自己的数据安全
mysql用户密码安全闭环,自主维护自己的数据安全

自此,mysql用户密码安全就算是一个比较合理的闭环方案了。

继续阅读