GaussDB数据库表创建行访问控制策略

目录

一、前言

二、GaussDB中的行访问控制

1、CREATE ROW LEVEL SECURITY POLICY语法

2、ALTER ROW LEVEL SECURITY POLICY语法

3、ROW LEVEL SECURITY策略与适配SQL语法关系

三、GaussDB中的行访问控制策略示例

1、实现GaussDB行访问控制的一般步骤

2、行访问控制策略的创建与修改(示例)

1)创建行访问控制策略,实现“学生自己只能查看自己的课程成绩”

2)修改行访问策略,实现“学生只能在8:00-18:00查看自己的成绩”

四、注意事项

五、小结

一、前言

数据的安全性和隐私性变得越来越重要。行访问控制策略是数据库管理中的一种重要技术,可以保护数据的机密性和完整性。GaussDB是一款高性能、高可用性的数据库管理系统,提供了丰富的安全功能,其中包括行访问控制策略。

本文将介绍GaussDB数据库表创建行访问控制策略的基本概念和操作方法,并通过实例演示其过程。通过介绍,读者可以了解GaussDB数据库表创建行访问控制策略的重要性和具体实现方法,为保障数据安全提供参考。

二、GaussDB中的行访问控制

一般默认情况下,表是没有行级安全策略限制的,要想使表具有行级安全性,要么在初始时就通过“CREATE ROW LEVEL SECURITY POLICY”创建、要么就在后期通过“ALTER ROW LEVEL SECURITY POLICY”修改。

在GaussDB中,行访问控制影响数据表的读取操作(例如:SELECT、UPDATE、DELETE等),暂不影响数据表的写入操作(例如:INSERT、MERGE INTO等)。

1CREATE ROW LEVEL SECURITY POLICY语法

对表创建行访问控制策略。

1)语法:

CREATE [ ROW LEVEL SECURITY ] POLICY policy_name ON table_name[ AS { PERMISSIVE | RESTRICTIVE } ][ FOR { ALL | SELECT | UPDATE | DELETE } ][ TO { role_name | PUBLIC | CURRENT_USER | SESSION_USER } [, ...] ]USING ( using_expression )

2)参数:

  • policy_name行访问控制策略名称,同一个数据表上行访问控制策略名称不能相同。
  • table_name行访问控制策略的表名。
  • PERMISSIVE指定行访问控制策略为宽容性策略,条件用OR表达式拼接。
  • RESTRICTIVE指定行访问控制策略为限制性策略,条件用AND表达式拼接。
  • role_name行访问控制影响的数据库用户。(主要包含:CURRENT_USER、SESSION_USER等。当未指定时,默认为PUBLIC,表示影响所有数据库用户。可以指定多个受影响的数据库用户。系统管理员不受行访问控制特性影响)
  • using_expression行访问控制的表达式(返回boolean值)。

2、ALTER ROW LEVEL SECURITY POLICY语法

对已存在的行访问控制策略(包括行访问控制策略的名称,行访问控制指定的用户,行访问控制的策略表达式)进行修改。

1)语法:

--修改已存在行访问控制策略的名称
ALTER [ ROW LEVEL SECURITY ] POLICY policy_name ON table_name RENAME TO new_policy_name;--修改已存在行访问控制策略的指定用户、策略表达式
ALTER [ ROW LEVEL SECURITY ] POLICY policy_name ON table_name[ TO { role_name | PUBLIC } [, ...] ][ USING ( using_expression ) ];

2)参数:

  • policy_name行访问控制策略名称
  • table_name行访问控制策略的表名。
  • new_policy_name新的行访问控制策略名称。
  • role_name行访问控制策略应用的数据库用户,可以指定多个用户,PUBLIC表示应用到所有用户。
  • using_expression行访问控制策略,形式类似于where子句中的布尔型表达式。

3、ROW LEVEL SECURITY策略与适配SQL语法关系

Command

SELECT/ALL policy

UPDATE/ALL policy

DELETE/ALL policy

SELECT

Existing row

No

No

SELECT FOR UPDATE/SHARE

Existing row

Existing row

No

UPDATE

No

Existing row

No

UPDATE RETURNING

Existing row

Existing row

No

DELETE

No

No

Existing row

DELETE RETURNING

Existing row

No

Existing row

三、GaussDB中的行访问控制策略示例

1、实现GaussDB行访问控制的一般步骤

在GaussDB中,行访问控制是数据库安全的重要组成部分。通过启用行级访问控制,可以限制数据库中的用户对特定数据的访问权限。以下是实现GaussDB行访问控制的一般步骤。

请注意,具体实现方法可能因GaussDB版本和配置环境而有所不同。因此,在实际操作中,建议参考GaussDB官方文档。

2、行访问控制策略的创建与修改(示例)

1)创建行访问控制策略,实现“学生自己只能查看自己的课程成绩”。

--创建用户zhangsan、lisi (Password must contain at least three kinds of characters)
CREATE USER zhangsan PASSWORD 'zhangsan@123';
CREATE USER lisi PASSWORD 'lisi@123';--创建数据表test_3。
CREATE TABLE test_3(id int,name varchar(20),course varchar(20),score int 
);--向数据表插入数据
INSERT INTO test_3 VALUES(1, 'zhangsan', '语文',90);
INSERT INTO test_3 VALUES(2, 'zhangsan', '数学',95);
INSERT INTO test_3 VALUES(3, 'zhangsan', '英语',85);
INSERT INTO test_3 VALUES(4, 'lisi', '语文',85);
INSERT INTO test_3 VALUES(5, 'lisi', '数学',90);
INSERT INTO test_3 VALUES(6, 'lisi', '英语',95);--将表test_3的读取权限赋予zhangsan、lisi。
GRANT SELECT ON test_3 TO zhangsan,lisi;--打开行访问控制策略开关。
ALTER TABLE test_3 ENABLE ROW LEVEL SECURITY;--创建行访问控制策略,当前用户只能查看用户自己的数据。
CREATE ROW LEVEL SECURITY POLICY test_3_r 
ON test_3 
USING(name = CURRENT_USER);
--查看表test_3相关信息。通过元命令 “\d+  test_3”  或者通过系统表“PG_RLSPOLICY”
GaussDB=# \d+ test_3Table "public.test_3"Column |         Type          | Modifiers | Storage  | Stats target | Description 
--------+-----------------------+-----------+----------+--------------+-------------id     | integer               |           | plain    |              | name   | character varying(20) |           | extended |              | course | character varying(20) |           | extended |              | score  | integer               |           | plain    |              | 
Row Level Security Policies:POLICY "test_3_r" FOR ALLTO publicUSING (((name)::name = "current_user"()))
Has OIDs: no
Options: orientation=row, compression=no, enable_rowsecurity=true

--切换用户zhangsan进行SELECT操作
[omm@node1 root]$ gsql -d postgres -U zhangsan -p 26000 -arGaussDB=> SELECT * FROM test_3;id |   name   | course | score 
----+----------+--------+-------1 | zhangsan | 语文   |    902 | zhangsan | 数学   |    953 | zhangsan | 英语   |    85
(3 rows)

--切换用户lisi进行SELECT操作
[omm@node1 root]$ gsql -d postgres -U lisi -p 26000 -arGaussDB=> SELECT * FROM test_3;id | name | course | score 
----+------+--------+-------4 | lisi | 语文   |    855 | lisi | 数学   |    906 | lisi | 英语   |    95
(3 rows)

2)修改行访问策略,实现“学生只能在8:00-18:00查看自己的成绩”

ALTER ROW LEVEL SECURITY POLICY test_3_r
ON test_3 
USING (name = CURRENT_USER AND current_time >= TIME '08:00:00' AND current_time <= TIME '18:00:00');

--查看表test_3相关信息。通过元命令 “\d+  test_3”  或者通过系统表“PG_RLSPOLICY”

GaussDB=# \d+ test_3Table "public.test_3"Column |         Type          | Modifiers | Storage  | Stats target | Description 
--------+-----------------------+-----------+----------+--------------+-------------id     | integer               |           | plain    |              | name   | character varying(20) |           | extended |              | course | character varying(20) |           | extended |              | score  | integer               |           | plain    |              | 
Row Level Security Policies:POLICY "test_3_r" FOR ALLTO publicUSING (((((name)::name = "current_user"()) AND (('now'::text)::time with time zone >= ('08:00:00'::time without time zone)::time with time zone)) AND (('now'::text)::time with time zone <= ('18:00:00'::time without time zone)::time with time zone)))
Has OIDs: no
Options: orientation=row, compression=no, enable_rowsecurity=true

四、注意事项

  • 不支持外表、本地临时表、视图定义行访问控制策略。
  • 同一张表可以创建多个行访问控制策略。
  • 系统管理员不受行访问控制影响。
  • 不支持对添加了行级访问控制策略的表字段进行修改数据类型操作。
  • 行访问控制策略可以应用到指定的操作(SELECT、UPDATE、DELETE、ALL),ALL表示会影响SELECT、UPDATE、DELETE三种操作,默认为ALL。
  • 需要打开该表的行访问控制开关(ALTER TABLE ... ENABLE ROW LEVEL SECURITY),否则不生效。
  • 行访问控制策略名称是针对表的,同一个数据表上不能有同名的行访问控制策略;对不同的数据表,可以有同名的行访问控制策略。

五、小结

通过本文的介绍,读者可以了解到GaussDB数据库表创建行访问控制策略的重要性和具体实现方法。行访问控制策略是一种有效的数据保护技术,可以防止未经授权的访问和恶意攻击,提高数据的安全性和可靠性。 在实际应用中,根据不同的业务需求和安全要求,可以灵活运用GaussDB提供的行访问控制策略功能,制定相应的安全策略,以保障数据的安全性和隐私性。

——结束

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

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

相关文章

关于#c语言#的问题:分析递归调用的过程◇画出调用过程各语句执行过程

关于#c语言#的问题&#xff1a;分析递归调用的过程◇画出调用过程各语句执行过程 当涉及到递归调用的过程时&#xff0c;可以通过绘制函数调用栈来分析和理解递归的执行过程。下面是一个示例的C语言递归函数和相应的调用过程&#xff1a; #include <stdio.h>void recurs…

详解 Jeecg-boot 框架如何配置 elasticsearch

目录 一、下载安装 Elasticsearch 1、 地址&#xff1a;https://www.elastic.co/cn/downloads/elasticsearch 2、下载完成后&#xff0c;解压缩&#xff0c;进入config目录更改配置文件 3、 修改配置完成后&#xff0c;前往bin目录启动el 4、访问&#xff1a;localhost:92…

【Stm32-F407】全速DAP仿真器下载程序

文章内容如下: 1) 全速DAP仿真器简介2) 全速DAP仿真器下载程序流程 1) 全速DAP仿真器简介 1&#xff09;全速DAP仿真器简介 DAP全称 Data Acquisition Processor&#xff0c;是一种用于数据采集和实时控制的设备。本文使用的全速DAP仿真器遵循ARM公司的CMSIS-DAP标准&#xff…

Docker容器与JVM比较

Java 的一大卖点是 Java 虚拟机带来的可移植性。 但是&#xff0c;由于在 [Docker] 容器中捆绑后端服务已成为常见做法&#xff0c;那么与本机编译语言相比&#xff0c;Java 有哪些优势呢&#xff1f; Docker 容器 Docker 容器是一种轻量级的虚拟化技术&#xff0c;它将应用程…

k8s容器监控检查及恢复机制

目录 1.1 命令模式探针 1.2 http get方式探针 1.3 POD 的恢复策略 在 k8s 中&#xff0c;可以为 Pod 里的容器定义一个健康检查"探针"&#xff08;Probe&#xff09;。kubelet 就会根据这个 Probe 的返回值决定这个容器的状态&#xff0c;而不是直接以容器是否运行…

SpringBoot整合Dubbo常用注解类说明

SpringBoot与Dubbo的整合pom依赖&#xff1a; <dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter</artifactId></dependency><dependency><groupId>org.springfr…

采购oled屏幕,应注意什么

在采购OLED屏幕时&#xff0c;应注意以下几点&#xff1a; 规格和参数&#xff1a;了解OLED屏幕的规格和参数&#xff0c;包括尺寸、分辨率、亮度、对比度、响应时间等。确保所采购的屏幕符合项目的需求和预期效果。 品质和可靠性&#xff1a;选择具有可靠品质和稳定性的OLED屏…

面试题总结(七)【网络编程】【华清远见西安中心】

请简述一下OSI七层协议模型?请简述一下TCP/IP四层协议模型&#xff1f;简述TCP/IP每一层都有哪些协议&#xff0c;功能是什么&#xff1f;简述TCP和UDP的区别是什么&#xff1f;简述TCP三次握手和四次挥手的过程&#xff1f;为什么是三次握手而不是两次&#xff1f;为什么是四…

Docker单点部署[8.11.3] Elasticsearch + Kibana + ik分词器

文章目录 一、Elasticsearch二、Kibana三、访问四、其他五、ik分词器第一种&#xff1a;在线安装第二种&#xff1a;离线安装 Elasticsearch 和 Kibana 版本一般需要保持一致才能一起使用&#xff0c;但是从 8.x.x开始&#xff0c;安全验证不断加强&#xff0c;甚至8.x.x之间…

geemap学习笔记029:使用Earth Engine数据--几何(Geometry)数据

前言 从本节开始将会分类别的进行学习&#xff0c;例如使用Earth Engine数据、使用本地地理数据、可视化地理数据、分析地理数据等&#xff0c;当然前面介绍过的&#xff0c;就不再赘述。 1 导入库并显示地图 import ee import geemapee.Initialize()2 创建几何对象-1 Map …

拾伍[15],带校正描述匹配模板,函数CreateCalibDescriptorModel/FindCalibDescriptorModel

函数CreateCalibDescriptorModel 函数功能 创建一个校正透视描述符匹配模板 C形式 LIntExport void CreateCalibDescriptorModel( const HObject& Template, const HTuple& CamParam, const HTuple& ReferencePose, const HTuple& DetectorType, const…

可作为GCRoot的对象包括哪些?

一、虚拟机栈中的本地变量 public class GCRootExample {public void exampleMethod() {// 在虚拟机栈中的本地变量引用的对象MyClass myObject new MyClass();// ...} }二、方法区中的静态变量 public class GCRootExample {// 静态变量引用的对象private static MyClass m…

电子商务网站知识|搭建自己的电子商务网站需要注意什么|搭建电商独立站的注意事项

电子商务网站建设步骤包括什么呢? 电子商务网站建设第一步&#xff0c;网站的规划与设计 电子商务网站算是一个比较复杂的系统&#xff0c;电商网站建设前就要想好需要有的功能。电子商务网站的规划也是建所有网站都需要做的事情&#xff0c;在规划设计中需要对网站进行整体…

【计算机网络】TCP协议——1.报文格式详解

前言 上篇讲解了UDP报文格式。TCP和UDP是同层协议&#xff0c;都属于传输层&#xff0c;数据来源于上层——应用层 目录 一. TCP协议概述 二. TCP报文格式 1. 两个问题 2. 确认号和序列号 3. 标志位字段 4. 窗口大小 5. 校验和字段 6. 紧急指针与紧急数据 7. 选项字…

【uniapp小程序-上拉加载】

在需要上拉加载的页面的page.json上添加红框框里面的 onReachBottom() {if(this.commentCurrent<this.commentTotal){this.commentCurrent 1; this.commentList();this.status loading;}else{this.status ;} }, methods:{commentList(){let params {courseid:this.cour…

QUIC在零信任解决方案的落地实践

一 前言 ZTNA为以“网络为中心”的传统企业体系架构向以“身份为中心”的新型企业安全体系架构转变&#xff0c;提供解决方案。随着传统网络边界不断弱化&#xff0c;企业SaaS规模化日益增多&#xff0c;给终端安全访问接入创造了多元化的空间。其中BYOD办公方式尤为突出&#…

Win服务器宝塔IIS/php环境进程应用名称及说明(发文备查)

AeLookupSvc(Application Experience): 在应用程序启动时为应用程序处理应用程序兼容性缓存请求 ALG(Application Layer Gateway Service): 为 Internet 连接共享提供第三方协议插件的支持 AppHostSvc(Application Host Helper Service): 为 IIS 提供管理服务&#xff0c;…

如何避免多线程编程中的死锁问题?

在多线程编程中&#xff0c;死锁是一个常见的问题&#xff0c;它会导致程序无法继续执行下去&#xff0c;严重影响程序的性能和稳定性。因此&#xff0c;为了避免死锁问题的发生&#xff0c;我们需要注意以下几点&#xff1a; 确保锁的顺序 在多线程编程中&#xff0c;多个线…

统一日志管理方案:Spring项目logback日志与logstash和Elasticsearch整合

原创/朱季谦 最近在做一个将分布式系统的日志数据通过logstash传到kafka的功能&#xff0c;做完之后决定业余搭一个ELK日志分析系统&#xff0c;将logstash采集到的日志传给Elasticsearch。经过一番捣鼓&#xff0c;也把这个过程给走通了&#xff0c;于是写了这篇总结&#xff…

唯创知音WT588F02B语音芯片:主控程序和Flash数据可擦除再烧写的应用优势

随着科技的不断发展&#xff0c;语音芯片作为现代电子产品中的重要组成部分&#xff0c;其功能和性能也在不断提升。其中&#xff0c;唯创知音推出的WT588F02B语音芯片以其出色的性能和创新的功能受到了广泛关注。尤其是其主控程序和Flash数据均可擦除再烧写的特性&#xff0c;…