MySQL安全配置之MySQL权限安全
1. 设置仅管理员用户具有所有数据库的访问权限
安全说明
除了管理员账号,其他用户没必要有所有数据库的访问权限。过高的权限会导致安全问题。
检查方法
mysql> SELECT user, host FROM mysql.user WHERE (Select_priv = 'Y') OR (Insert_priv = 'Y') OR (Update_priv = 'Y') OR (Delete_priv = 'Y') OR (Create_priv = 'Y') OR (Drop_priv = 'Y');
+------------------+-----------+
| user | host |
+------------------+-----------+
| root | % |
| mysql.infoschema | localhost |
| root | localhost |
+------------------+-----------+
mysql> SELECT user, host FROM mysql.db WHERE db = 'mysql' AND ((Select_priv = 'Y') OR (Insert_priv = 'Y') OR (Update_priv = 'Y') OR (Delete_priv = 'Y') OR (Create_priv = 'Y') OR (Drop_priv = 'Y'));
Empty set (0.00 sec)
如果返回的都是管理员账号说明安全,否则需要对用户清除权限
配置方法
清除非管理员账号的过高部分权限
2. 禁用非管理员用户的“File_priv”
安全说明
File_priv权限用于允许或禁止MySQL用户在服务器主机上读写文件。黑客很可能利用这一点盗取数据库中敏感数据。
检查方法
mysql> select user, host from mysql.user where File_priv = 'Y';
+------+-----------+
| user | host |
+------+-----------+
| root | % |
| root | localhost |
+------+-----------+
如果返回的都是管理员账号说明安全,否则需要对用户清除权限
配置方法
mysql> REVOKE FILE ON *.* FROM '<user>’; //<user>为需要撤销权限的用户
回退步骤
mysql> GRANT FILE ON *.* TO user@localhost; //<user>为需要增加权限的用户
备注
8.0版本默认情况下,只有管理员账号拥有File_priv权限
3. 禁用非管理员用户的“Process_priv”
安全说明
Process_priv权限用于允许或禁止给定用户是否可以查看当前正在执行的sql语句。使用超越当前用户权限的权利。可以被攻击者所利用。
检查方法
mysql> select user, host from mysql.user where Process_priv = 'Y';
+------+-----------+
| user | host |
+------+-----------+
| root | % |
| root | localhost |
+------+-----------+
如果返回的都是管理员账号说明安全,否则需要对用户清除权限
配置方法
mysql> REVOKE PROCESS ON *.* FROM '<user>’; //<user>为需要撤销权限的用户
回退步骤
mysql> GRANT PROCESS ON *.* TO user@localhost; //user为需要增加权限的用户
备注
8.0版本默认情况下,只有管理员账号拥有Process_priv权限。
4. 禁用非管理员用户的“Super_priv”
安全说明
Super_priv权限用于允许或禁止给定用户是否可以执行任意语句,非管理员不应该具备该权限。使用超越当前用户权限的权利。可以被攻击者所利用。
检查方法
mysql> select user, host from mysql.user where Super_priv = 'Y';
+---------------+-----------+
| user | host |
+---------------+-----------+
| root | % |
| mysql.session | localhost |
| root | localhost |
+---------------+-----------+
如果返回的都是管理员账号说明安全,否则需要对用户清除权限
配置方法
mysql> REVOKE SUPER ON *.* FROM '<user>’; //<user>为需要撤销权限的用户
回退步骤
mysql> GRANT SUPER ON *.* TO user@localhost; //user为需要增加权限的用户
备注
mysql.session‘@’localhost’:插件内部使用来访问服务器。该用户已被锁定,客户端无法连接。
5. 禁用非管理员用户的“Shutdown_priv”
安全说明
Shutdown_priv权限用于允许或禁止给定用户是否可以关闭数据库,会造成一定安全隐患。使用超越当前用户权限的权利。可以被攻击者所利用。
检查方法
mysql> select user, host from mysql.user where Shutdown_priv = 'Y';
+------+-----------+
| user | host |
+------+-----------+
| root | % |
| root | localhost |
+------+-----------+
如果返回的都是管理员账号说明安全,否则需要对用户清除权限
配置方法
mysql> REVOKE SHUTDOWN ON *.* FROM '<user>’; //<user>为需要撤销权限的用户
回退步骤
mysql> GRANT SHUTDOWN ON *.* TO user@localhost; //user为需要增加权限的用户
备注
8.0版本默认情况下,只有管理员账号拥有Process_priv权限。
6. 禁用非管理员用户的“Create_user_priv”
安全说明
Create_user_priv权限用于允许或禁止给定用户是否可以创建任意用户,会造成一定安全隐患。使用超越当前用户权限的权利。可以被攻击者所利用。
检查方法
mysql> select user, host from mysql.user where Create_user_priv = 'Y';
+------+-----------+
| user | host |
+------+-----------+
| root | % |
| root | localhost |
+------+-----------+
如果返回的都是管理员账号说明安全,否则需要对用户清除权限。
配置方法
mysql> REVOKE CREATE USER ON *.* FROM '<user>’; //<user>为需要撤销权限的用户
回退步骤
mysql> GRANT CREATE USER ON *.* TO user@localhost; //user为需要增加权限的用户
7. 禁用非管理员用户的“Grant_priv”
安全说明
Grant_priv权限用于允许或禁止给定用户是否可以对其他用户赋权,可能会被黑客利用造成一定安全隐患。使用超越当前用户权限的权利。可以被攻击者所利用。
检查方法
mysql> select user, host from mysql.user where Grant_priv= 'Y';
+------+-----------+
| user | host |
+------+-----------+
| root | % |
| root | localhost |
+------+-----------+
如果返回的都是管理员账号说明安全,否则需要对用户清除权限。
配置方法
mysql> REVOKE GRANT ON *.* FROM '<user>’; //<user>为需要撤销权限的用户
回退步骤
mysql> GRANT GRANT ON *.* TO user@localhost; //user为需要增加权限的用户
8. 禁用“Non-slave”用户的“repl_slave_priv”
安全说明
repl_slave_priv权限用于控制给定用户是否可以从主服务器上获取更新的数据。使用超越当前用户权限的权利。可以被攻击者所利用。
检查方法
mysql> select user, host from mysql.user where repl_slave_priv = 'Y';
+------+-----------+
| user | host |
+------+-----------+
| root | % |
| root | localhost |
+------+-----------+
如果返回的都是管理员账号说明安全,否则需要对用户清除权限。
配置方法
mysql> REVOKE REPLICATION ON *.* FROM '<user>’; //<user>为需要撤销权限的用户
回退步骤
mysql> GRANT REPLICATION ON *.* TO user@localhost; //user为需要增加权限的用户
9. 设置DML/DDL授权仅限于特定数据库和用户
安全说明
DML/DDL包括用于修改或创建数据结构的一组权限。这包括INSERT,SELECT,UPDATE,DELETE,DROP,CREATE和ALTER权限。使用超越当前用户权限的权利。可以被攻击者所利用。
检查方法
mysql> SELECT User,Host,Db FROM mysql.db WHERE Select_priv='Y' OR Insert_priv='Y' OR Update_priv='Y' OR Delete_priv='Y' OR Create_priv='Y' OR Drop_priv='Y' OR Alter_priv='Y';
+---------------+-----------+--------------------+
| User | Host | Db |
+---------------+-----------+--------------------+
| airflow | % | airflow |
| hive | % | hive |
| mysql.session | localhost | performance_schema |
| airflow | master | airflow |
| hive | master2 | hive |
+---------------+-----------+--------------------+
确保返回的所有用户都应在指定的数据库上具有这些权限。
配置方法
mysql> REVOKE XXX ON *.* FROM '<user>’; //<user>为需要撤销权限的用户
回退步骤
mysql> GRANT XXX ON *.* TO user@localhost; //user为需要增加权限的用户
版权声明:
作者:SE_Gao
链接:https://www.cnesa.cn/913.html
来源:CNESA
文章版权归作者所有,未经允许请勿转载。
共有 0 条评论