ANY权限是Vastbase中的一种特殊的管理权限,用户能够通过ANY权限执行更广泛的操作,更加便利的管理数据库。
本文将为您介绍ANY权限管理的相关原理。
是什么?
ANY权限管理相关解释
ANY权限管理,是对数据库内的某一类对象的所有实体进行特定的权限管理。
例如执行如下语句:
GRANT SELECT ANY TABLE TO USER1;
就表示用户USER1拥有对当前数据库中所有的表进行SELECT操作的权限,但没有对其他数据库中的任意表进行SELECT操作的权限。
如何实现?
ANY权限管理的原理
权限再授权权限
用户拥有把授予他的ANY权限再授予其他用户的权限的权限。
用户拥有权限的角色列表
当执行grant u1 to u2,表示将角色u1授予u2,那么u2会拥有u1的所有权限。这样的所有被授予用户u2的角色就是用户拥有权限的角色列表。
1
权限信息的记录
ANY权限信息存储在系统表gs_db_privilege,每一个ANY权限对应gs_db_privilege表中的一个元组。由被授权者的OID、被授予的ANY权限、是否拥有将该权限授予其他用户的权限三部分组成。
字段解释:
ANY权限的授予和回收,对应的是gs_db_privilege系统表中数据的增加和删除。
2
权限授予
权限授予有两个操作方式:
(1)授予ANY权限,例如:
GRANT SELECT ANY TABLE TO USER1;
(2)授予ANY权限并授予权限再授权权限(admin option),例如:
GRANT SELECT ANY TABLE TO USER1 WITH ADMIN OPTION;
权限授予流程如下所示:
1
检查要授予用户的ANY权限是否存在。若不存在,构造一条新的权限记录数据插入到系统表gs_db_privilege中并结束;若存在,则执行步骤2
2
判断是否需要给该目标用户添加再授予权限。若不是则直接退出结束,若是则执行步骤3
3
更新系统表gs_db_privilege该权限信息中的admin_option字段为true
3
权限回收
对应于权限授予,权限回收也有两种用法:
(1)仅回收权限再授权权限,例如:
REVOKE ADMIN OPTION FOR SELECT ANY TABLE FROM USER1;
(2)回收ANY权限,例如:
REVOKE SELECT ANY TABLE FROM USER1;
流程如下图所示:
1
判断要回收的权限的是否存在,若不存在则结束返回;若存在则执行步骤2
2
判断是仅回收权限的再授权权限,还是回收整个权限。若仅回收权限再授权权限,则执行步骤3;否则执行步骤4
3
更新权限信息,将权限再授权权限字段admin_option修改为false
4
从系统表gs_db_privilege中删除该条权限信息
4
权限检查
ANY权限检查就是在用户访问对象时,检查用户是否拥有对对象进行操作的ANY权限。流程如下图所示:
1
根据本次访问的对象和操作转换为需要的ANY权限。例如执行select * from t1,根据select操作和查询的是表,转换为“select ANY table”权限
2
获取到当前执行用户拥有权限的所有角色列表
3
遍历列表中的每一个角色
4
对每一个角色,根据其OID和本次操作需要的ANY权限从gs_db_privilege系统表中查询角色是否拥有ANY权限
5
如果未查询到结果,说明当前被遍历的角色没有本次操作需要的ANY权限,直接进入下一次循环,继续步骤4检查角色列表中的下一个角色;如果查询到结果,说明当前被遍历的角色拥有本次操作需要的ANY权限
6
继续判断本次操作是否是授予/回收ANY权限操作,如果不是,权限检查已经通过,返回结果为有权限;如果是,则进入下一步判断
7
判断当前被遍历角色拥有的ANY权限的admin_option属性是否为true,为true则表示角色有对当前ANY权限再授权/回收的操作,返回结果为有权限;为false则表示角色没有对当前ANY权限再授权/回收的操作,那么进入下一次循环,继续步骤4检查角色列表中的下一个角色
通过以上操作,可以随时调整ANY权限的授予和回收,提升用户对数据库操作的能力和灵活性。
• END •
往期推荐
关于海量数据
北京海量数据技术股份有限公司(股票代码:603138.SH)成立于2007年,是国内首家以数据库为主营业务的主板上市企业。公司十余年来秉承“专注做好数据库”的初心,始终致力于数据库产品的研发、销售和服务。核心产品海量数据库Vastbase系列、数据库一体机Vastcube系列、海量大数据Datalink系列,全栈国产化,应用满足度高,目前广泛应用于政务、制造、金融、通信、能源、交通等多个重点行业,已成为国产企业级数据库的首选之一。
如果您发现该资源为电子书等存在侵权的资源或对该资源描述不正确等,可点击“私信”按钮向作者进行反馈;如作者无回复可进行平台仲裁,我们会在第一时间进行处理!
添加我为好友,拉您入交流群!
请使用微信扫一扫!