在程序员圈子中流传着一句笑谈-[从入门到删库跑路],虽然是一句玩笑话,但数据丢失所造成的后果是公司和企业所不能接受的,为了避免造成数据损失和数据泄露,业内一般会有如下两个解决思路:
- 一是完善的权限管理,让运维人员删不了库。
- 二是有效的审批机制,就算非要删库,也必须先向上级申请审批。
在保证数据安全和分级管理方面,YupDB提供了权限管理功能,接下来给大家简单介绍一下权限管理功能的具体情况和如何使用。
在YupDB的用户中使用“一人管理,其他人使用”的设计思路。其中admin用户为超级管理员,具备建用户、建角色、建表、向表内加载数据,删除等所有的操作权限。有且只有admin 用户具备这些操作。新添加的用户只有查询数据的权限。
YupDB支持细粒度的行权限和列权限控制,一条语句即可轻松赋值,并且在行列权限限制的基础上支持用户和角色的概念,细化权限划分,简单易用。
下面给大家介绍一下权限管理功能该如何使用
创建用户及角色
- 首先我们使用admin账户登录YupDB,密码为admin
- 创建一个用户 ,账户名为:user_yupdb 密码为:password123
YCREATE USER user_yupdb IDENTIFIED BY password123;
修改密码为 YUPDATE YUPDBPASSWORD 用户名=密码;
YUPDATE YUPDBPASSWORD user_yupdb=passwordchange;
- 列出所有用户
YLIST USER;
- 创建一个角色
YCREATE ROLE role_yupdb;
- 列出所有角色
YLIST ROLE;
为用户和角色赋权
为用户赋权
- 赋予用户查询指定表指定字段的权限
YGRANT select(yupdb_example_quickstart (phonenum, yupdb_sex, yupdb_age, yupdb_earn, yupdb_prefer)) to USER user_yupdb;
查看用户权限信息
YSHOW YGRANT USER user_yupdb;
使用user_yupdb用户查询该表数据
我们从上图可以看到,虽然执行的是全表查询,但仅返回了该用户拥有查询权限的五个字段。
2. 赋予用户查询指定表指定字段符合条件数据的权限
YGRANT select(yupdb_example_quickstart (phonenum, yupdb_sex, yupdb_age, yupdb_earn, yupdb_prefer where yupdb_sex='女' and yupdb_age='20到30岁') ) to USER user_yupdb;
查询结果
查询无权访问的数据
从上图可以看出当用户查询无权限访问的数据,将查询不到这部分数据。
3. 赋予用户查询指定多个表符合条件的数据的权限
YGRANT select(yupdb_example_quickstart (phonenum, yupdb_sex, yupdb_age, yupdb_earn, yupdb_prefer where yupdb_sex='女' and yupdb_age='20到30岁'),yupdb_broadcast_demo (phonenum,yupdb_sex where yupdb_sex ='男') ) to USER user_yupdb;
- 赋予用户查询指定表的全部权限
YGRANT select(yupdb_example_quickstart) to USER user_yupdb;
为角色授权
- 赋予角色查询指定表指定字段的权限
YGRANT select(yupdb_example_quickstart (phonenum, yupdb_sex, yupdb_age, yupdb_earn, yupdb_prefer)) to ROLE role_yupdb;
- 赋予角色查询指定表指定字段符合条件数据的权限
YGRANT select(yupdb_example_quickstart (phonenum, yupdb_sex, yupdb_age, yupdb_earn, yupdb_prefer where yupdb_sex='女' and yupdb_age='20到30岁') ) to ROLE role_yupdb;
- 赋予角色查询指定多个表符合条件的数据的权限
YGRANT select(yupdb_example_quickstart (phonenum, yupdb_sex, yupdb_age, yupdb_earn, yupdb_prefer where yupdb_sex='女' and yupdb_age='20到30岁'),tt002 (name, sex where sex='男') ) to ROLE role_yupdb;
- 赋予角色查询指定表的全部权限
YGRANT select(yupdb_example_quickstart) to ROLE role_yupdb;
- 为用户添加角色
YGRANT 角色名 TO 用户名;
YGRANT role_yupdb To user_yupdb;
- 查看角色权限
YSHOW YGRANT ROLE 角色名;
YSHOW YGRANT ROLE role_yupdb;
- 查看用户权限
YSHOW YGRANT USER 用户名;
YSHOW YGRANT USER user_yupdb;
为用户和角色减权
YREVOKE 权限类型 [表名] FROM [ROLE|USER] 用户或角色名
YREVOKE 将会将用户或者角色对于某一张表的某种权限全部取消,例如用户现有 Select cola from tablea where cola >10 的权限 YREVOKE select 之后将会使授权的相关条件全部取消
- 为用户减权
YREVOKE select(yupdb_example_quickstart,tt002 ) to USER user_yupdb;
- 为角色减权
YREVOKE select(yupdb_example_quickstart,tt002 ) to ROLE role_yupdb;
- 为用户删除角色
YREVOKE 角色名 FROM 用户名
YREVOKE role_yupdb FROM user_yupdb;
- 删除用户
YDELETE USER用户名;
YDELETE USER user_yupdb;
- 删除角色
YDELETE ROLE 角色名;
YDELETE ROLE role_yupdb;
至此,YupDB 权限管理功能的功能简介和使用方法就介绍到这里了,如果大家对这款产品感兴趣可以访问我们的官网 www.yupdb.com 来了解更多。