postgresql9.6中的 Row Security Policies

前端之家收集整理的这篇文章主要介绍了postgresql9.6中的 Row Security Policies前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

1.。中文VS2008下面编译pg9.6

修改VSObjectFactory.pm 中的 DetermineVisualStudioVersion 直接return '9.00';


2.。在 ALTER TABLE accounts ENABLE ROW LEVEL SECURITY;时

a ) 在函数 ATExecEnableRowSecurity 把pg_class中的 relrowsecurity 置为 true


3。CREATE POLICY account_managers ON accounts TO managers USING (manager = current_user);

对系统表pg_policy增加了一条记录

#define PolicyRelationId3256

CATALOG(pg_policy,3256)
{
NameDatapolname;/* Policy name. */
Oidpolrelid;/* Oid of the relation with policy. */
charpolcmd;/* One of ACL_*_CHR,or '*' for all */

#ifdef CATALOG_VARLEN
Oidpolroles[1];/* Roles associated with policy,not-NULL */
pg_node_tree polqual;/* Policy quals. */
pg_node_tree polwithcheck;/* WITH CHECK quals. */
#endif
} FormData_pg_policy;


4。使用时,就是在select或是insert时,把rewirte阶段,把polqual 和 polwithcheck 加到后面,之后在执行时进行判断

rewrite调用函数 get_row_security_policies

执行时调用函数 ExecWithCheckOptions、ExecWithCheckOptions



和MAC的区别

1。没有等级和范围的概念

2。管理员还是可以看到全部数据

3。MAC特权概念不明显

4。Row Security Policies 需要在用户表的设计时加上限制的字段,需要改应用






原文链接:https://www.f2er.com/postgresql/194268.html

猜你在找的Postgre SQL相关文章