暂无图片
openGauss 如何针对行级访问进行控制?
我来答
分享
暂无图片 匿名用户
openGauss 如何针对行级访问进行控制?

openGauss 如何针对行级访问进行控制?

我来答
添加附件
收藏
分享
问题补充
1条回答
默认
最新
M
mtl

在实际业务中还存在另外一种场景,同一张数据表,只允许用户查看满足特定条件的行数据,此时就需要将访问控制精确到数据表的行级别,使得不同用户执行相同的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)
暂无图片 评论
暂无图片 有用 0
打赏 0
回答交流
Markdown


请输入正文
提交
相关推荐
openGauss关于\l列出数据库表功能的失败
回答 3
谢谢,经过我的测试后,貌似是pguser表或者pgroles表不存在?
opengauss 是否支持pgrouting?
回答 1
不支持的,测试过了
opengauss全密态数据库问题-failed to decrypt column encryption key
回答 1
已采纳
提供一下使用的openGauss版本号,这个问题已经在3.0.3的补丁中修复了
一键部署脚本
回答 1
贾老师分享的一键部署脚本(https://www.modb.pro/db/106407)可参考!  注:脚本里面对应的ip、版本号替换掉
求一份组网图-openGauss?
回答 1
为了保证整个应用数据的安全性,建议将openGauss的典型组网划分为两个独立网络:前端业务网络和数据管理存储网络。类型描述数据库管理存储网DBA通过此网络调用OM脚本管理和维护openGauss实例
如何看待openGauss5月首次登录墨天轮流行度排行榜榜首?
回答 1
openGauss自2021年12月跻身榜单第二以来(除因春节影响,各数据库整体得分较三月均有所下跌),得分一直保持着上涨趋势,本月成功登上榜首。openGauss4月在产品迭代和市场拓展上都有了质的
openGauss 创建用户报错ERROR: permission denied for schema public
回答 1
授予用户对该数据库的全部权限:GRANTALLPRIVILEGESONDATABASEdb1tousera;希望能帮助到你!
麒麟系统安装openGauss 报错
回答 2
用bashinstall.shw“user@1234”&&source/.bashrc试试目前我也在麒麟/UOS要安装,可以一起讨论,QQ:35629400
opengauss:gs_probackup备份实例会占用内存么
回答 1
已采纳
使用gsprobackup工具备份OpenGauss实例时会占用一定的内存。gsprobackup是一个OpenGauss备份和恢复工具,可以用于管理大型OpenGauss集群的备份。它可以备份整个O
openGauss使用的是哪个优化器,CBO or RBO? 有啥区别?
回答 3
再补充一些:RBO应该已经废弃; CBO,主要由“查询转换、代价评估、执行计划生成”三部分组成,其依赖于统计信息(1.analyze收集;2.pgstatistic系统表存储有关该数据库中表
问题信息
请登录之后查看
邀请回答
暂无人订阅该标签,敬请期待~~