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

相关推荐

  1. AI平台介绍:初识volcano

    2024-04-14 00:20:01       40 阅读
  2. AI绘画原理及工具介绍

    2024-04-14 00:20:01       34 阅读
  3. API调用

    2024-04-14 00:20:01       33 阅读
  4. HarmonyOS 权限 介绍

    2024-04-14 00:20:01       43 阅读
  5. DRF 权限介绍

    2024-04-14 00:20:01       25 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-04-14 00:20:01       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-04-14 00:20:01       101 阅读
  3. 在Django里面运行非项目文件

    2024-04-14 00:20:01       82 阅读
  4. Python语言-面向对象

    2024-04-14 00:20:01       91 阅读

热门阅读

  1. win11开启copilot

    2024-04-14 00:20:01       37 阅读
  2. 基于STM32的智能家居控制系统设计方案

    2024-04-14 00:20:01       39 阅读
  3. clipper一些数据结构(入门初识(一))

    2024-04-14 00:20:01       37 阅读
  4. Qt使用Sqlite数据库-1(入门级)

    2024-04-14 00:20:01       38 阅读
  5. 数据结构3:单链表的实现

    2024-04-14 00:20:01       37 阅读
  6. python常用知识总结

    2024-04-14 00:20:01       33 阅读
  7. centos7.9 安装puppeteer及周边库

    2024-04-14 00:20:01       40 阅读
  8. Android Camera预览通道

    2024-04-14 00:20:01       33 阅读
  9. 什么样的数据分析才是有用的?

    2024-04-14 00:20:01       36 阅读