写点什么

如何在数据库中进行 RBAC 权限应用

发布于: 2021 年 02 月 07 日

上周我们发了一篇关于“删库跑路”引发了大家对于数据安全的思考,而权限管理又跟数据安全密不可分。权限管理作为数据系统的重要组成部分,通过控制账号的可支配能力,防止因用户操作不当导致的数据泄露、数据篡改等问题,同时,对敏感数据按查看角色进行隔离,避免不相关的人看到不应该了解的数据,达到风险管控的效果。


这篇文章,我们就来讲讲 CloudQuery 的权限管理功能。


CloudQuery 如何设计数据权限管理


当前我们使用的最为普及的权限模型是 RBAC(Role-Based Access Control,基于角色的访问控制),CloudQuery 的权限管理功能同样是基于 RBAC 权限模型。简单来讲,就是一个用户拥有若干角色,每个角色拥有若干权限。这样,就构成了“用户-角色-权限”的授权模型。在该模型中,用户与角色之间,角色和权限之间,一般是多对多的关系。



而在 RBAC 模型之前,被广泛应用的是 DAC(Discretionary Access Control)自主访问控制。DAC 模型不具有“角色”这一概念,在系统中,管理员直接将权限授予用户,而拥有该权限的用户又可将权限分配给其他用户。在该模型中,只有用户到权限的多对多关系。DAC 模型强调灵活性,所以适用于个人或几个人的小团队,因为其对权限控制比较分散,当用户超过一定人数会极大增加管理员的重复工作量,且容易出错,不便于管理。


RBAC 则弥补了 DAC 的缺陷,在用户和权限之间引入“角色”的概念后,每个用户关联一个或多个角色,每个角色关联一个或多个权限,角色可根据实际业务需求灵活创建,省去了每新增一个用户就要关联一遍所有权限的麻烦,更加适用于复杂组织架构的权限管理。并且 RBAC 模型也可模拟出 DAC 模型的效果。


下面,我们就具体来讲讲 CloudQuery 的权限管理功能以及如何进行权限授予。


基础概念:


  • 账号:系统管理员会给每个用户创建一个账号,用户需要有对应账号才能登录 CloudQuery,相当于用户的唯一令牌,去控制该账号的可执行权限。

  • 角色:从本质上来说角色是一组权限或权限集的集合。通过将几个权限或权限集搭配授权至一个角色,再将角色绑定至用户账号,该用户就能行使角色所承载的多个权限。

  • 系统权限:目前 CloudQuery 的系统权限仅包含:系统设置、添加连接、审计分析。

  • 数据库操作权限:对数据库和数据进行控制隔离,让数据相关者看到合适的数据,将数据不相关者杜绝在外。目前数据库操作权限分为访问层级限制和操作限制(增删改查),精准控制用户可访问至某个连接下的某个数据库中某张表,同时赋予一定的操作权限。

  • 权限集:多个权限的合集

  • 初始化权限集:在创建连接成功后会自动生成一个初始化权限(最小权限集),仅包含该连接下所有数据库的 SELECT 权限。初始化权限集原生包含的操作权限不可编辑与修改,但可添加其他数据操作权限。

  • 初始化角色:随初始化权限集一同生成,当初始化权限集中的权限发生变化时,初始化角色包含的权限自动更改。初始化角色不可编辑与修改,只能直接绑定用户。


在 CloudQuery 的权限管理中,一共有三个角色:系统管理员、Owner 以及普通用户。下面,我们分别就这三个角色来说明他们的权限管理。


系统管理员


系统管理员可以对组织架构下所有用户进行系统权限的授权。



Step 1:系统管理员创建角色

Step 2:将单一或多个权限授予一个角色

Step 3:将角色绑定至用户


Owner


Owner 是拥有“添加连接”权限的人,可以分配所有连接下的所有数据操作权限至普通用户。



Step 1:Owner 创建数据操作权限

Step 2:创建权限集。可将单个或多个数据操作权限存储至一个权限集。这里需要注意的是,在创建连接成功后,权限集中天然生成了初始化权限集。

Step 3:创建角色

Step 4:将权限授予角色。在数据操作权限的角色管理中,可以直接将单个或多个操作权限授予角色,也可将权限集授予角色。

可简单化为公式:m 权限+n 权限集=角色权限(m 和 n 至少有一个不等于 0)

Step 5:将角色绑定至用户


普通用户


系统管理员和 Owner 会根据企业内实际业务情况,授予不同部门的员工相应的系统权限和数据操作权限。普通用户只能在自己的权限范围内对系统进行操作。


例如:给张三赋予“运营分析专员”角色,“运营分析专员”具有公司某个 MySQL 连接中“销售数据库”中所有表的“查询表”权限。此时,张三则可进入系统进行该库下所有表的查询操作,但除此之外,张三不可在“销售库”中进行创建表或删除表等其他动作,更无法查看除“销售数据库”以外的其他数据库。


总结


通过本文,可以更加系统地了解目前 CloudQuery 的权限模块功能。DBA 可以针对性地进行数据库操作授权,同时为了减少授权工作量还可以搭配权限集、角色等等定义。为了让我们的数据更安全,为了让各种数据操作者行为更加规范,一起来体验一下全新的 CloudQuery 权限管控功能吧。


用户头像

还未添加个人签名 2020.09.23 加入

一款基于 Web 的统一数据操作平台,将所有数据库集中在一个平台中进行数据操作、数据分析和数据管理,支持主流数据源,集成权限、审计和管理等众多刚需功能。

评论

发布
暂无评论
如何在数据库中进行RBAC权限应用