返回首页

gbase数据、南大通用产品文档:GBase8a

更新日期:2024年09月11日

gbase_rollback .............................. 40

功能描述
对已存在的行访问控制策略(包括行访问控制策略的名称、
行访问控制指定的用户、行
访问控制的策略表达式)进行修改。
注意事项
表的所有者或管理员用户才能进行此操作。
语法格式
ALTER [ ROW LEVEL SECURITY ] POLICY [ IF EXISTS ] 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 ) ];
参数说明

policy_name
行访问控制策略名称。

table_name
行访问控制策略的表名。

new_policy_name
新的行访问控制策略名称。

role_name

GBase 8c SQL 参考手册
南大通用数据技术股份有限公司
737
行访问控制策略应用的数据库用户,
可以指定多个用户,
PUBLIC 表示应用到所有用户。

using_expression
行访问控制的表达式,返回值为boolean 类型。
示例
--创建数据表all_data
gbase=#CREATE TABLE all_data(id int, role varchar(100), data varchar(100));
--创建行访问控制策略,当前用户只能查看用户自身的数据
gbase=#CREATE ROW LEVEL SECURITY POLICY all_data_rls ON all_data USING(role
= CURRENT_USER);
gbase=#\d+ all_data
Table "public.all_data"
Column |
Type
| Modifiers | Storage
| Stats target | Description
--------+------------------------+-----------+----------+--------------+-------------
id
| integer
|
| plain
|
|
role
| character varying(100) |
| extended |
|
data
| character varying(100) |
| extended |
|
Row Level Security Policies:
POLICY "all_data_rls"
USING (((role)::name = "current_user"()))
Has OIDs: no
Location Nodes: ALL DATANODES
Options: orientation=row, compression=no
--修改行访问控制all_data_rls 的名称
gbase=#ALTER ROW LEVEL SECURITY POLICY all_data_rls ON all_data RENAME TO
all_data_new_rls;

GBase 8c SQL 参考手册
南大通用数据技术股份有限公司
738
--修改行访问控制策略影响的用户
gbase=#ALTER ROW LEVEL SECURITY POLICY all_data_new_rls ON all_data TO alice,
bob;
gbase=#\d+ all_data
Table "public.all_data"
Column |
Type
| Modifiers | Storage
| Stats target | Description
--------+------------------------+-----------+----------+--------------+-------------
id
| integer
|
| plain
|
|
role
| character varying(100) |
| extended |
|
data
| character varying(100) |
| extended |
|
Row Level Security Policies:
POLICY "all_data_new_rls"
TO alice,bob
USING (((role)::name = "current_user"()))
Has OIDs: no
Location Nodes: ALL DATANODES
Options: orientation=row, compression=no, enable_rowsecurity=true
--修改行访问控制策略表达式
gbase=#ALTER ROW LEVEL SECURITY POLICY all_data_new_rls ON all_data USING
(id > 100 AND role = current_user);
gbase=#\d+ all_data
Table "public.all_data"
Column |
Type
| Modifiers | Storage
| Stats target | Description
--------+------------------------+-----------+----------+--------------+-------------
id
| integer
|
| plain
|
|
role
| character varying(100) |
| extended |
|

GBase 8c SQL 参考手册
南大通用数据技术股份有限公司
739
data
| character varying(100) |
| extended |
|
Row Level Security Policies:
POLICY "all_data_new_rls"
TO alice,bob
USING (((id > 100) AND ((role)::name = "current_user"())))
Has OIDs: no
Location Nodes: ALL DATANODES
Options: orientation=row, compression=no, enable_rowsecurity=true
相关命令
CREATE ROW LEVEL SECURITY POLICY,DROP ROW LEVEL SECURITY POLICY

参数说明:是否允许非系统管理员和非监控管理员执行EXECUTE DIRECT ON 语句。
该参数属于POSTMASTER 类型参数,请参考表15-1 中对应设置方法进行设置。
取值范围:布尔型

on 表示允许任意用户执行EXECUTE DIRECT ON 语句。

off 表示只允许系统管理员和监控管理员执行EXECUTE DIRECT ON 语句。
默认值:off