mysql 自助化平台_MySQL权限管理的一些自助化服务思路

今天在帮一位开发同学处理一个权限问题的时候,无意中想起来在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.%'

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

b342830a6d3c

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

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

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

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

b342830a6d3c

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

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

b342830a6d3c

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

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值