gpt4 book ai didi

postgresql - 查看 PostgreSQL-9.5 中定义的行级安全策略

转载 作者:行者123 更新时间:2023-11-29 11:19:42 26 4
gpt4 key购买 nike

我已经构建了全新的 PostgreSQL-9.5(alpha),我对 row level security 的新特性感到非常兴奋.这有望使多角色访问管理变得更加直接。

例如,到目前为止,我使用了一个模型,其中 NOLOGIN 角色是数据库和所有表、 View 、函数等的所有者;然后创建 View 以授予对特定角色的适当访问权限。一切都很好,但观点确实激增。具有ENABLE ROW LEVEL SECURITY 的表的新CREATE POLICY 命令看起来是达到相同目的的更简洁的替代方法。

但是,到目前为止,我无法确定哪些表启用了 RLS 以及在这些表上定义了哪些策略。 (很明显,所有这些都是在定义表和策略之后进行的。)是否有一种简单的方法来识别启用 RLS 的表上的既定策略?

(还有期待已久的 UPSERT 和更多的 jsonb 函数,以及许多性能改进。)

最佳答案

好的,明白了。 (哎呀,还没有人用 9.5 吗???)

问题 1:哪些表具有行级安全性?

pg_class 关系有一个新列 relrowsecurity boolean,它看起来很简单:

SELECT oid, relname FROM pg_class WHERE relrowsecurity = 'true';

问题 2:在启用 RLS 的表上定义了哪些策略?

系统目录有一个新的关系pg_policy,它存储了策略的所有信息,特别是策略的名称,表的oid,它的命令适用于策略适用的角色 (oid[]) 以及 USINGWITH CHECK 子句。

有趣的是,后两者存储为 pg_node_tree,它与受策略约束的查询的执行计划合并,因此策略的条件不会在每次重新评估称呼。这使得这种方法可能比使用问题中详述的 View 更快,因为每次调用需要解析和评估的子句更少。

关于postgresql - 查看 PostgreSQL-9.5 中定义的行级安全策略,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31259599/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com