前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >MySQL权限管理的一些自助化服务思路

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

作者头像
jeanron100
发布2020-11-26 11:32:53
7190
发布2020-11-26 11:32:53
举报

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

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

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

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

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

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

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

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

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

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

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

代码语言:javascript
复制
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的账号克隆进行加密串验证和权限快速测试。

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

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2020-11-22,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 杨建荣的学习笔记 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
访问管理
访问管理(Cloud Access Management,CAM)可以帮助您安全、便捷地管理对腾讯云服务和资源的访问。您可以使用CAM创建子用户、用户组和角色,并通过策略控制其访问范围。CAM支持用户和角色SSO能力,您可以根据具体管理场景针对性设置企业内用户和腾讯云的互通能力。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档