openGauss数据库采用基于角色的权限访问控制模型,除了在openGauss数据库权限管理模型(上)中介绍的基本系统权限和对象权限的划分外,还有一些高阶的权限管理机制用来满足客户的业务诉求。

1

三权分立

三权分立是对系统权限管理机制的补充,核心思想是将管理数据库对象的权限、管理用户的权限和管理审计日志的权限分离,从而避免一个管理员拥有过度集中的权利带来的高风险。通过将GUC参数enableSeparationOfDuty设置为on来打开三权分立开关。

三权分立开关打开后, SYSADMIN的权限范围将缩小,不再包括允许创建用户/角色的权限,也不再包括允许查看、删除数据库审计日志的权限。SYSADMIN,CREATEROLE,AUDITADMIN三种系统权限的权限范围互相隔离,互不影响,而且一个用户仅能被赋予其中一个属性。

三权分立打开后的权限范围如下:

系统权限

权限范围

SYSADMIN

允许用户创建数据库,创建表空间

CREATEROLE

允许用户创建用户/角色

AUDITADMIN

允许用户查看、删除审计日志

2

列级访问控制

在一些业务场景中,数据表中的某些列存储了重要的信息,需要对用户不可见,但其他列的数据又需要用户能够查看或操作,此时就需要针对数据表的特定列做访问控制,实现针对用户的列级别的访问控制。

openGauss提供SQL语句GRANT/REVOKE实现针对列对象的权限授予和回收:

例1:将对表tbl的第一列(fir)进行select的权限和对表tbl的第二列(sec)进行update的权限授予用户user1

openGauss=# GRANT select(fir),update(sec) ON TABLE tbl TO user1;

GRANT

赋权后用户user1有权对tbl的第一列执行select操作和对第二列执行update操作

例2:撤销用户user1对表tbl的第一列fir进行select的权限

openGauss=# REVOKE select(fir) ON tbl FROM user1;

REVOKE

撤销后用户user1不再具有查看表tbl的第一列fir数据的权限

3

行级访问控制

在实际业务中还存在另外一种场景,同一张数据表,只允许用户查看满足特定条件的行数据,此时就需要将访问控制精确到数据表的行级别,使得不同用户执行相同的SQL查询、更新或删除操作,读取到的结果是不同的。

用户可以在数据表上创建行级访问控制(row level security)策略,该策略是针对特定数据库用户、特定SQL操作生效的表达式。当数据库用户访问数据表时,满足策略条件的行对用户可见,不满足条件的行对用户不可见,从而实现针对用户的行级别的访问控制。

openGauss提供SQL语句CREATE/ALTER/DROP ROW LEVEL SECURITY进行行级访问权限策略的创建/修改/删除操作:

步骤1:创建信息表pat_info记录医院病人的个人信息:

openGauss=# select * from pat_info;

patience | doctor | age

-----------+--------+-----

peter      | mary   |  25

bob        | mary   |  56

julie       | tom     |  38

(3 rows)

步骤2:创建行级访问控制策略,使得医生只能查看属于自己的病人信息:

openGauss=# CREATE ROW LEVEL SECURITY POLICY rls_select ON pat_info FOR select USING(doctor=current_user);

CREATE ROW LEVEL SECURITY POLICY

步骤3:打开信息表pat_info上的行级访问控制开关openGauss=# ALTER TABLE pat_info ENABLE ROW LEVEL SECURITY;ALTER TABLE

步骤4:将信息表pat_info的查看权限赋予所有人openGauss=# grant select on table pat_info to public;

GRANT

步骤5:Mary医生的查看结果:

openGauss=> select * from pat_info; patience | doctor | age

----------+--------+-----

peter    | mary   |  25

bob      | mary   |  56

(2 rows)

Tom医生的查看结果:

openGauss=> select * from pat_info; patience | doctor | age

----------+--------+-----

julie      | tom     |  38

(1 row)

本文分享自微信公众号 - openGauss(openGauss)。
如有侵权,请联系 support@oschina.cn 删除。
本文参与“OSC源创计划”,欢迎正在阅读的你也加入,一起分享。

openGauss数据库权限管理模型(下)相关推荐

  1. Spring Security 中最流行的权限管理模型!

    前面和大家说了 ACL,讲了理论,也给了一个完整的案例,相信小伙伴们对于 ACL 权限控制模型都已经比较了解了. 本文我要和大家聊一聊另外一个非常流行的权限管理模型,那就是 RBAC. 1.RBAC ...

  2. Android动态权限管理模型(4.3-6.0)

    Google从4.3开始就试图引入AppOpsManager动态权限管理模型,但是,由于感觉技术不太成熟,在Release版本中,这个功能都是被隐藏掉的,所以官方Rom一直没有动态权限管理机制.直到A ...

  3. php acl rbac,建站常用的用户权限管理模型ACL和RBAC的区别

    常用的权限管理模型ACL和RBAC的区别 1.ACL ACL是最早也是最基本的一种访问控制机制,它的原理非常简单:每一项资源,都配有一个列表,这个列表记录的就是哪些用户可以对这项资源执行CRUD中的那 ...

  4. 【概念】权限管理模型(RBAC、ABAC、ACL)

    目录 1.RABC模型 2. ABAC 模型 3. ACL模型 4. 总结 在管理系统中会涉及到很多用户权限相关问题,对于不同的平台所使用的的权限管理模型也是多样的. 1.RABC模型 该模型是基于角 ...

  5. 权限管理模型 ---- ACL、RBAC和ABAC(详解)

    前言 在管理系统中会涉及到很多用户权限相关问题,对于不同的平台所使用的的权限管理模型也是多样的. ACL 基于用户的权限管理模型 基于用户的概念就是说直接对用户进行权限分配管理,好处是模型构建简单,只 ...

  6. 宅急送项目的第七天笔记!(JBPM工作流和介绍 -- 权限管理模型)

    一.回顾第一天核心内容  1. JBPM是什么? 为我的项目带来什么?  工作流, 就是将业务流程实现自动化,非人工方式,控制任务的执行 -------- 所有业务流程 执行信息 都可以存放到数据库 ...

  7. mysql数据库权限查询_mysql数据库权限管理

    mysql数据库权限管理 # 查看权限 # 使用mysql数据库 mysql> use mysql; # 查看所有用户和权限 # 查询主机用户名密码:5.7版本之前的 mysql> sel ...

  8. 2022年5月4日 【狂神说Java】MySQL最新教程通俗易懂5 数据库权限管理,备份与三大范式

    8. 数据库的权限管理和备份 8.1 用户管理 可视化操作 SQL命令操作 用户表: mysql.user 本质:对这张表进行增删改查 -- 创建用户 create user 用户名 identifi ...

  9. linux 文件夹换所属用户,Linux中账号管理之权限管理(下)

    linux中的账号管理我们在前面两张已经介绍了一些用户和组的相关概念,常用的配置文件,命令的使用.现在我们来看看账号管理中最傲娇的部分就是我们的权限管理. 一.简单介绍权限的概念 以install.l ...

最新文章

  1. build unity 丢失_Unity Build PS4文件时的一些坑
  2. 【pwnable】asm之write up
  3. 文本编辑器中实现自定义编辑框中字体和大小的功能
  4. javascript高级程序设计pdf_一个老牌程序员推荐的JavaScript的书籍,看了真的不后悔!...
  5. [转]Oracle update用例
  6. python基础之变量以及if语句
  7. WHY YOUR PRIVATE CLOUD COULD LOOK A LOT LIKE PAAS
  8. 日志规范之了解slf4j
  9. 1115: 零起点学算法22——华氏摄氏温度转换
  10. win10系统的服务器在哪里设置密码,window10怎么设置密码
  11. VMware workstation和ESXi的区别
  12. 类的继承与派生的基础学习
  13. excel函数公式html文档,excel公式embed怎么用
  14. ios 字体 机打动效_24种打动朋友的方法
  15. java货物进销管理系统【电竞杜小帅】
  16. TL5000系列可调谐激光器
  17. mysql 日期减10分钟_获取当前时间减去10分钟的话SQL语句怎么写
  18. java用模板生成word(docx)文档(含动态表格)
  19. 一刀工具箱 - 密码生成器
  20. Android 控制台读取sqlite数据库以及adb获取root权限问题

热门文章

  1. 5.15 综合案例2.0-燃气检测系统(仅支持2.02以上版本)
  2. Admin.php 密码忘了,phpwind管理员密码忘了怎么找回教程
  3. Android:使用MediaRecorder录制高清视频,TextureView预览
  4. 【input】输入框事件总结
  5. 28 APRIL 2021 VOL 6, ISSUE 53
  6. 基于Linux的vimrc配置
  7. 辅助诊断-艾美捷髓过氧化物酶MPO(人)ELISA试剂盒
  8. 中信银行“整合”从核心开始
  9. 如何使用@JsonFormat
  10. ROS Melodic 安装PR2