海量智库 | ANY权限原理介绍

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的角色就是用户拥有权限的角色列表。

一、权限信息的记录

ANY权限信息存储在系统表gs_db_privilege,每一个ANY权限对应gs_db_privilege表中的一个元组。由被授权者的OID、被授予的ANY权限是否拥有将该权限授予其他用户的权限三部分组成。

字段解释:

ANY权限的授予和回收,对应的是gs_db_privilege系统表中数据的增加和删除。

二、权限授予

权限授予有两个操作方式:

(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

三、权限回收

对应于权限授予,权限回收也有两种用法:

(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中删除该条权限信息

四、权限检查 

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权限的授予和回收,提升用户对数据库操作的能力和灵活性。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/600312.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

国内ChatGPT大数据模型

在中国,随着人工智能技术的迅猛发展,多个科技公司和研究机构已经开发出了与OpenAI的ChatGPT类似的大型语言模型。这些模型通常基于深度学习技术,尤其是Transformer架构,它们在大量的文本数据上进行训练,以理解和生成自…

酱油行业市场需求及广阔前景分析

随着居民消费升级,对高品质生活的向往使得酱油市场需求持续增长。消费者对酱油的功能性需求日益细分,追求健康、天然与个性化的产品特性,从而推动了市场的多元化进步。 同时,餐饮业的蓬勃发展以及外卖市场的扩大,均为酱…

解决nginx代理后,前端拿不到后端自定义的header

先说结论,因为前端和nginx对接,所以需要在nginx添加如下配置向前端暴露header add_header Access-Control-Expose-Headers Authorization 排查过程 1.后端设置了Authorization 的响应头作为token的返回,前后端本地联调没有问题 response.s…

隔离放大器 用途 组成 应用领域

隔离放大器用于防止数据采集器件遭受远程传感器出现的潜在破坏性电压的影响。这些放大器还用于在多通道应用中放大低电平信号。它们也可以消除由接地环路引起的测量误差。由于不需要附加的隔离电源,带有内部变压器的隔离放大器可以降低电路成本 它由仪器放大器&…

LeetCode-33. 搜索旋转排序数组【数组 二分查找】

LeetCode-33. 搜索旋转排序数组【数组 二分查找】 题目描述:解题思路一:二分查找。1.找哨兵节点(nums[0]或nums[-1])可以确定nums[mid]位于前一段或后一段有序数组中。2. 就是边界left和right的变换,具体看代码。解题思…

[LeetCode][LCR178]训练计划 VI——使用位运算寻找数组中不同的数字

题目 LCR 178. 训练计划 VI 教学过程中,教练示范一次,学员跟做三次。该过程被混乱剪辑后,记录于数组 actions,其中 actions[i] 表示做出该动作的人员编号。请返回教练的编号。 示例 1: 输入:actions [5, …

网络安全之命令注入

漏洞原理: 应用系统设计需要给用户提供指定的远程命令操作的接口,比如:路由器,防火墙,入侵检测等设备的web管理界面。一般会给用户提供一个ping操作的web界面 用户从web界面输入目标IP,提交后台会对改IP地…

【Java面试题】JVM(26道)

文章目录 JVM面试题基础1.什么是JVM?2.JVM的组织架构? 内存管理3.JVM的内存区域是什么?3.1堆3.2方法区3.3程序计数器3.4Java虚拟机栈3.5本地方法栈 4.堆和栈的区别是什么?5.JDK1.6、1.7、1.8内存区域的变化?6.内存泄露…

spring加载类初始化顺序

今天看spring官网的时候,提到了Ordered执行顺序。我当时记得PostConstruct注解会在bean加载后执行,现在又来了一个执行顺序,直接给我整蒙了。 于是我写了一个简单的dom来看看,它是什么: Service("t2ServerImpl&q…

【Redis】Redis的使用

登录redis [roottest2 ~]# redis-cli 127.0.0.1:6379> 或[roottest2 ~]# redis-cli -h 192.168.67.12 -p 6379 192.168.67.12:6379> redis-benchmark 测试工具 redis-benchmark 是官方自带的Redis性能测试工具,可以有效的测试Redis服务的性能 基本的测试语…

js正则给数值每三位加逗号

<template><div>{{ num.toFixed(2).replace(/\B(?(\d{3})(?!\d))/g, ",") }}</div> </template> <script> </script> <style> </style> 如上所示&#xff1a;保留两位小数后&#xff0c;用正则进行替换 效果&am…

Nacos Namespace 未授权访问漏洞

Nacos Namespace 未授权访问漏洞 问题 nacos 源码启动&#xff0c;发现即使开启了鉴权&#xff1a;nacos.core.auth.enabledtrue&#xff0c;未登录情况下&#xff0c;命名空间列表接口仍旧能查询到数据 鉴权逻辑 通过**AuthFilter **进行权限校验判断方法上是否存在注解 …