美文网首页
MySQL权限管理的一些自助化服务思路

MySQL权限管理的一些自助化服务思路

作者: jeanron | 来源:发表于2020-11-23 08:01 被阅读0次

  今天在帮一位开发同学处理一个权限问题的时候,无意中想起来在2年前一位DBA同事的抱怨,问题的大概背景是:有一位开发同学发来了一些IP,让DBA帮忙看看这些IP有没有权限访问数据库,当时这位同事有些无奈,因为常理来看,要连哪个数据库应该是件很清晰确定的事情,而且就算防火墙没问题,最起码得知道是哪些用户,而这些对于业务同学来说,我们应该知道,连猜带蒙也应该知道。

我想了想这里折射出几个问题:

1)业务侧对于权限的管理很多都是粗放型的,很多密码都是明文,基于excel等方式管理,可能会有小范围的文件方式分发

2)服务配置或权限发生变更,这些信息在业务侧没有统一的配置平台去解决,在本地的配置管理中也难以统一更新

3)对于业务侧来说,权限使用也是两级化,要么是清一色共享账号的习惯,要么是个人化账户,其中个人化账户随着人员流动很多权限管理难以追溯。

4)业务侧对于数据库的权限体系了解较少,沟通交流中会有代沟

5)因为密码是加密模式而且不可逆,很多DBA也没有统一的平台维护现有环境的账号密码信息,简单来说,他们很可能也不知道明文密码是什么

6)权限边界不清晰,DBA认为业务侧应该管理好自己的密码,而业务侧认为DBA就需要管理好这些密码(明文密码)

看完这些问题,真是让人心灰意冷,看起来就是一个账号的事情,这么简单的事情竟然大家都做不好。

通常在MySQL中,账户管理的规则也不尽相同,我试着举一个例子来说明下其中的有趣之处。 

比如我们对数据库用户dev_test_ro分配了mytest数据库的只读权限。

create user dev_test_ro@'192.168.100.%'  identified by 'mypassword';grant select on mytest.* to dev_test_ro@'192.168.100.%' ;

这里会和开发规范紧密结合起来,大概有这些门路。

1) 用户名,按照多级划分的方式,可有按照“环境_服务名_权限标示”的格式进行命名:

2) 环境

    “环境”一般分为生产环境和测试环境,生产环境的用户名以“srv_”开头,测试环境的用户名以“dev_”开头;

3) 服务名

    用以标示这个数据库用户所连接的服务;

4) 权限标示

    用于进行用户权限类型的标示,可以分为三种权限:只读,基本读写,高级读写,分别用 ro, rwl, rwh 来表示,一般来说这三种权限的分类如下:

         只读用户 ro,只有 select 权限;

         基本读写用户 rwl,除 ro 的权限外,还有 insert,update,delete,exec 等权限;

         高级读写用户 rwh,除 rwl 的权限外,还有 create, drop, alter 等权限。"

如果有两个IP 192.168.100.101,192.168.200.101,对于数据库用户dev_test_ro来说,在如上的权限体系中就会创建两个数据库用户,分别是

dev_test_ro@'192.168.100.%'和dev_test_ro@'192.168.200.%'

我们来说下今天开发同学提的问题,他需要开通一个新的网段的权限,也就意味着需要在数据库中创建一个新的账号,在数据库操作中,我们无须知道明文密码,一般都会使用加密串的模式克隆权限,如下图所示:

这种情况下,账号权限和加密串都是可以完全复制统一的。 

这里有一个问题是如果业务侧也不记得密码了,或者密码管理不善,导致明文密码无法确认,数据库侧是否有相应的机制可以支撑。 

也就是说,业务侧可以提供用户名,明文密码,想让我们验证下数据库的权限是否正常?

这里的重点就是host的部分,如下:

我们可以通过克隆账号复制一套127.0.0.1的同名账号,而且也可以避免业务侧误连接,可以快速实现服务后端的自检测。

而如果再退一步,如果业务侧的密码也忘记了,而且没有相应的明文密码信息可以提供,那么我们可以通过如下的方式关联:

这里就是建设密码管理模块的重中之重了,密码管理模块是一个相对独立的模块,可以对于密码加解密使用独立的算法逻辑,也就加密串和数据库层面的加密串可以没有关系,但是这两个加密串却可以无缝的衔接起来,可以通过密码管理中的加解密,通过额外的秘钥实现解密,而解密后的密码可以通过127.0.0.1的账号克隆进行加密串验证和权限快速测试。

按照这种思路,我们就可以提供一系列的服务可以来支持业务的这几类大问题,而且可以直接对标自助化服务。 

相关文章

  • MySQL权限管理的一些自助化服务思路

    今天在帮一位开发同学处理一个权限问题的时候,无意中想起来在2年前一位DBA同事的抱怨,问题的大概背景是:有一位开...

  • mysql

    mysql经过上次安装并停止服务后,服务里没有mysql服务 1、CMD(运用管理员权限),cd e:\mysql...

  • mysql忘记密码

    1、删除Mysql 使用管理员权限运行cmdsc delete Mysql // 此处为已经安装的mysql服务名...

  • Linux下安装Mysql

    安装 下载并安装 权限设置 初始化MySQL 启动mysql服务 关闭服务和查看状态 设置root密码 停止mys...

  • 六、权限管理和日志管理

    一、权限管理 1.用户管理 如果报错进入server端服务器登陆mysql执行:mysql> use mysqlm...

  • MySQL手记

    启动和停止MySQL服务: 在管理员权限下: (我本人的是mysql57,启动后可以在任务管理器的服务栏看到) 注...

  • Mysql 用户权限管理

    MYSQL 用户权限 MySQL之权限管理 用户权限管理 SQL脚本 1.创建用户 PARAMETER'scorp...

  • mysql服务的修复的方法-初始化

    1 mysql服务的修复的方法-初始化 1.1 数据库初始化 1.2 新建mysql文件夹 1.3 更改权限设置 ...

  • mysql密码忘记怎么办

    环境(window10)1.关闭mysql服务,dos下(管理员权限,不然会报错), net stop mysql...

  • Mysql 忘记密码 mac

    首先关闭Mysql服务然后打开终端输入:cd /usr/local/mysql/bin/ 回车后 登录管理员权限s...

网友评论

      本文标题:MySQL权限管理的一些自助化服务思路

      本文链接:https://www.haomeiwen.com/subject/qnkmiktx.html