如何在数据库中进行RBAC权限应用
上周我们发了一篇关于“删库跑路”引发了大家对于数据安全的思考,而权限管理又跟数据安全密不可分。权限管理作为数据系统的重要组成部分,通过控制账号的可支配能力,防止因用户操作不当导致的数据泄露、数据篡改等问题,同时,对敏感数据按查看角色进行隔离,避免不相关的人看到不应该了解的数据,达到风险管控的效果。
这篇文章,我们就来讲讲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权限管控功能吧。
如何在数据库中进行RBAC权限应用的更多相关文章
- phpcms中的RBAC权限系统
PHPCMS中的RBAC权限系统主要用到了4张数据表:管理员表,角色表,菜单表,菜单权限表.先来看看数据库的数据表结构: admin 管理员表 ID 字段 类型 Null 默认 索引 额外 注释 1 ...
- ThinkPHP中:RBAC权限控制的实习步骤
使用版本ThinkPHP3.1.3 第一步,建表及数据 第二步,建关联模型 第三步,控制器使用关联模型.配置文件 第四步,模板显示数据 第一步,建表及数据 在数据库中,建立一个companysvn数据 ...
- Thinkphp3.2.3中的RBAC权限验证
最近在用TP的RBAC权限控制,在这里记录学习一下.先来看看相关的概念 一.相关概念 访问控制与RBAC模型1.访问控制: 通常的多用户系统都会涉及到访问控制,所谓访问控制,是指通过某种 ...
- Sqlserver数据库中,跨权限执行语句
问题来源:最近有同事需要执行批量删除语句.根据他提供的业务需求,推荐他使用“TRUNCATE TABLE”语句.但使用该语句需要 ALTER权限,这与执行用户的角色不符. 解决办法:使用EXECUTE ...
- JavaEE学习之Spring Security3.x——模拟数据库实现用户,权限,资源的管理
一.引言 因项目需要最近研究了下Spring Security3.x,并模拟数据库实现用户,权限,资源的管理. 二.准备 1.了解一些Spring MVC相关知识: 2.了解一些AOP相关知识: 3. ...
- ThinkPHP中RBAC权限带菜单栏显示和详细权限操作
RBAC是什么,能解决什么难题? RBAC是Role-Based Access Control的首字母,译成中文即基于角色的权限访问控制,说白了也就是用户通过角色与权限进行关联[其架构灵感来源于操作系 ...
- YII2中使用RBAC对模块,控制器,方法的权限控制以及规则的使用
在使用YII2中自带的RBAC时,需要先配置config/web.php: return [ // ... 'components' => [ 'authManager' => [ 'cl ...
- spring boot:spring security用mysql数据库实现RBAC权限管理(spring boot 2.3.1)
一,用数据库实现权限管理要注意哪些环节? 1,需要生成spring security中user类的派生类,用来保存用户id和昵称等信息, 避免页面上显示用户昵称时需要查数据库 2,如果需要在页面上显示 ...
- 查看MYSQL数据库中所有用户及拥有权限
查看MYSQL数据库中所有用户 mysql> SELECT DISTINCT CONCAT('User: ''',user,'''@''',host,''';') AS query FROM m ...
随机推荐
- java关键字static使用总结
java关键字static使用总结 1.static修饰的方法被称之为静态方法也叫做类方法,加static的方法,可以通过类名直接访问,不加static的方法只能通过对象名访问. 静态方法可以直接通过 ...
- js基础(使用Canvas画图)
HTML5的元素提供了一组JavaScript API,让我们可以动态地创建图形和图像. 图形是在一个特定的上下文中创建的,而上下文对象目前有两种.第一种是2D上下文,可以执行原始的绘图操作, 比如: ...
- Centos7服务器安装Docker及Docker镜像加速,Docker删除
Centos7服务器安装Docker及Docker镜像加速,Docker删除 1.Centos7服务器安装Docker 1.1 root账户登录,查看内核版本如下 1.1.1 卸载服务器旧版本Dock ...
- CCF-交通规划-dijkstra+贪心
交通规划 问题描述 G国国王来中国参观后,被中国的高速铁路深深的震撼,决定为自己的国家也建设一个高速铁路系统. 建设高速铁路投入非常大,为了节约建设成本,G国国王决定不新建铁路,而是将已有的铁路改造成 ...
- CCF CSP 202012-1 期末预测之安全指数
202012-1 期末预测之安全指数 题目背景 期末要到了,小菜同学找到了自己的好朋友顿顿,希望可以预测一下自己这学期是否会挂科. 题目描述 首先,顿顿选取了如"课堂表现".&qu ...
- Pytest(7)自定义用例顺序pytest-ordering
前言 测试用例在设计的时候,我们一般要求不要有先后顺序,用例是可以打乱了执行的,这样才能达到测试的效果. 有些同学在写用例的时候,用例写了先后顺序, 有先后顺序后,后面还会有新的问题(如:上个用例返回 ...
- Java一些概念
1.Java先编译后解释 同一个.class文件在不同的虚拟机会得到不同的机器指令(Windows和Linux的机器指令不同),但是最终执行的结果却是相同的. 2.JDK包含JRE,JRE包含JVM, ...
- 小白的经典CNN复现(三):AlexNet
小白的经典CNN复现(三):AlexNet 锵锵--本系列的第三弹AlexNet终于是来啦(≧∀≦),到了这里,我们的CNN的结构就基本上和现在我们经常使用或者接触的一些基本结构差不多了,并且从这一个 ...
- B 明码
B 明码 :汉字的字形存在于字库中,即便在今天,16点阵的字库也仍然使用广泛. 16点阵的字库把每个汉字看成是16x16个像素信息.并把这些信息记录在字节中. 一个字节可以存储8位信息,用32个字节就 ...
- hdu4352 XHXJ's LIS (数位dp)
Problem Description #define xhxj (Xin Hang senior sister(学姐)) If you do not know xhxj, then careful ...