1. 概述
行级安全性策略是PG9.5新加的一个功能,它是一种粒度更细的,针对行级所做的权限控制。
它可以对每一个用户限制哪些行可以进行查询操作或增删改的操作。
2. 特性介绍
默认情况下,表是没有行级安全性的,要想使表有行级安全性,需要使用命令:
ALTER TABLE .... ENABLE ROW LEVEL SECURITY;
是表有行级安全性检查。所有对该表的操作(表的属主除外),都要经过行级安全性策略的允许。
但是表级的操作,如truncate不服从行级安全性策略。
下面介绍下怎么创建行级安全性策略。
语法为:
CREATE POLICY name ON table_name
[ FOR { ALL | SELECT | INSERT | UPDATE | DELETE } ]
[ TO { role_name | PUBLIC | CURRENT_USER | SESSION_USER } [, ...] ]
[ USING ( using_expression ) ]
[ WITH CHECK ( check_expression ) ]
//name -- 策略名称
//table_name -- 适用于该策略的表
//FOR -- 该策略适用的DML命令,ALL表示所有
//TO -- 该策略适用的角色
//USING -- 应用在表上的CHECK表达式,返回true的行可见,false不可见
//WITH CHECK -- 应用在该表的INSERT或UPDATE的SQL表达式,true的可以操作,false操作失败
<