海量智库 | 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.mzph.cn/news/798957.shtml

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

相关文章

SQLite 4.9的 OS 接口或“VFS”(十三)

返回:SQLite—系列文章目录 上一篇:SQLite字节码引擎(十二) 下一篇:SQLite 4.9的虚拟表机制(十四) 1. 引言 本文介绍了 SQLite OS 可移植性层或“VFS” - 模块位于 SQLite 实现堆栈底部 提供跨操作系统的可移植性。 VFS是Virtual File…

TiDB 慢查询日志分析

导读 TiDB 中的慢查询日志是一项 关键的性能监控工具,其主要作用在于协助数据库管理员追踪执行时间较长的 SQL 查询语句。 通过记录那些超过设定阈值的查询,慢查询日志为性能优化提供了关键的线索,有助于发现潜在的性能瓶颈,优化…

libVLC 音频立体声模式切换

在libVLC中,可以使用libvlc_audio_set_channel函数来设置音频的立体声模式。这个函数允许选择不同的音频通道,例如立体声、左声道、右声道、环绕声等。 /*** Set current audio channel.** \param p_mi media player* \param channel the audio channel…

Java | Leetcode Java题解之第16题最接近的三数之和

题目&#xff1a; 题解&#xff1a; class Solution {public int threeSumClosest(int[] nums, int target) {Arrays.sort(nums);int n nums.length;int best 10000000;// 枚举 afor (int i 0; i < n; i) {// 保证和上一次枚举的元素不相等if (i > 0 && nums…

【精品整理】最新数据安全评估标准合集

最新数据安全评估标准合集&#xff0c;以下是资料的目录&#xff0c;共12份。如需下载&#xff0c;请前往星球查阅和获取&#xff1a;https://t.zsxq.com/18JrHhWtQ 1、网络安全标准实践指南 2、数据安全风险评估方法 3、个人信息安全影响评估指南 4、数据出境安全评估指南 5、…

HAL STM32 定时器PWM DMA输出方式

HAL STM32 定时器PWM DMA输出方式 &#x1f9e8;遗留问题&#xff1a;当配置RCR重复计数器&#xff0c;配置为2时&#xff0c;在定义了3组PWM参数情况下&#xff0c;只能输出第二组参数的PWM波形。&#xff08;HAL_TIM_PWM_Start_DMA(&htim1, TIM_CHANNEL_1, aCCValue_Buff…

模块化——如何导入模块?(内置模块与自定义模块)

在Node.js中&#xff0c;要导入另一个模块&#xff0c;我们可以使用require函数。这个函数接受一个文件路径参数&#xff0c;并返回导入的模块。 一、require使用注意事项&#xff1a; (1)自己创建的模块&#xff0c;导入时建议写相对路径&#xff0c;不能省略./和../ //我把…

golang web 开发 —— gin 框架 (gorm 链接 mysql)

目录 1. 介绍 2. 环境 3. gin 3.1 gin提供的常见路由 3.2 gin的分组 main.go router.go 代码结构 3.3 gin 提供的Json方法 main.go route.go common.go user.go order.go 3.4 gin框架下如何获取传递来的参数 第一种是GET请求后面直接 /拼上传递的参数 第二种是…

【Lavavel框架】——各目录作用的介绍

&#x1f468;‍&#x1f4bb;个人主页&#xff1a;开发者-曼亿点 &#x1f468;‍&#x1f4bb; hallo 欢迎 点赞&#x1f44d; 收藏⭐ 留言&#x1f4dd; 加关注✅! &#x1f468;‍&#x1f4bb; 本文由 曼亿点 原创 &#x1f468;‍&#x1f4bb; 收录于专栏&#xff1a…

深入理解C语言:函数栈帧的秘密

文章目录 深入理解C语言&#xff1a;函数栈帧的秘密什么是栈帧&#xff08;Stack Frame&#xff09;&#xff1f;栈帧的创建栈帧的销毁栈帧调试栈帧的工作原理栈帧的实际例子结论 深入理解C语言&#xff1a;函数栈帧的秘密 在软件开发的世界里&#xff0c;函数是构建程序的基本…

css anminate 加载中三个点点动态出现

期待效果&#xff1a; 核心代码&#xff1a; css3 anminate方法 //html <div>加载中<span id"dot">...</span></div>//css <style>   #dot {display: inline-block;width: 1.5em;vertical-align: bottom;overflow: hidden;animati…

NLopt

非线性优化–NLopt (nonlinear optimization)是一个免费的开源的库&#xff0c;提供了很多种非线性优化算的使用接口。 1、其中非常大的优势就是提供多种支持的语言&#xff0c;包括C/ C/ Julia/ Python/ R/ Fortran/ Lua/ OCaml/ Octave等都支持 1. 区别 **COBYLA&#xff0…

MacOS 升级14.4.1后vscode无法远程连接

今天上班第一天&#xff0c;开始提示MacOS可以升级&#xff0c;顺手就点击了升级重启&#xff0c;版本显示 14.4.1 (23E224) 同时今天vscode升级到了1.88 此时大多数的VSCODE远程服务器无法连接&#xff0c;不管用不用VPN都不可以&#xff0c;报错大致包括如下信息 hostname …

xilinx 7系列fpga上电配置

一、前言 Xilinx FPGA通过加载比特流到内部存储单元来进行配置。 Xilinx FPGA存在两种数据配置路径&#xff0c;一种是满足最小引脚需求的串行路径&#xff0c;一种是可用8位、16位或32位来连接到行业的高性能通用接口&#xff0c;如处理器&#xff0c;8位或者16位并行的闪存…

在linux服务器上安装anaconda

遇到问题&#xff1a; 在linux服务器中查看当前有哪些虚拟环境&#xff0c;conda环境用不了&#xff0c;anaconda没有安装&#xff0c;所以要在linux服务器中安装虚拟环境 解决步骤如下&#xff1a; 1.首先下载anaconda的Linux版本的安装包 方法1&#xff1a;官网下载&#…

推荐一个好用的数据库映射架构

SqlSugar ORM 优点: SqlSugar 是 .NET 开源 ORM 框架,由 Fructose 大数据技术团队维护和更新,是开箱即用最易用的 ORM 优点: 【低代码】【高性能】【超简单】【功能综合】【多数据库兼容】【适用产品】 支持 .NET .NET framework.net core3.1.ne5.net6.net7.net8 .net…

在Vue 3中实现页面锁屏功能

可以通过创建一个全屏遮罩层来实现。当需要锁屏时&#xff0c;显示这个遮罩层&#xff1b;当解锁时&#xff0c;隐藏它。下面是一个简单的示例来说明如何实现这个功能&#xff1a; 创建锁屏组件 首先&#xff0c;我们创建一个锁屏组件&#xff08;LockScreen.vue&#xff09;…

【蓝桥杯嵌入式】Cubemx新建工程引脚配置与点亮LED

【蓝桥杯嵌入式】Cubemx新建工程引脚配置与点亮LED cubemx基础配置LED 引脚配置按键配置按键引脚配置定时器扫描配置 工程管理配置点亮LED程序设计keil配置与程序下载 参考博文1&#xff1a;STM32 | 利用STM32CubeMX初始化一个STM32工程 参考博文1&#xff1a;点亮LED灯&#x…

已解决RocketMQ连接报错RemotingConnectException: connect to异常的正确解决方法,亲测有效!!!

已解决RocketMQ连接报错RemotingConnectException: connect to异常的正确解决方法&#xff0c;亲测有效&#xff01;&#xff01;&#xff01; 问题分析 在使用Apache RocketMQ进行分布式消息传递时&#xff0c;可能会遇到org.apache.rocketmq.remoting.exception.RemotingCon…

【面经】软件开发工程师-后端方向1

面经整理系列&#xff1a; 【面经】软件开发工程师-后端方向1 文章目录 岗位与面经基础1&#xff1a;数据库 & 网络基础2&#xff1a;系统 & 语法模板3&#xff1a;算法 & 项目 岗位与面经 岗位介绍 JD: 美团-软件开发工程师-后端方向-1小时左右 金融服务平台 技…