当前位置: 首页 > 面试题库 >

为什么未为Postgres视图启用行级安全性?

姚俊材
2023-03-14
问题内容

我需要严格控制Postgres数据的读写。可更新的视图始终能够很好,严格地控制我的数据读取,并允许我添加有价值的计算列。在Postgres
9.5中,行级安全性引入了一种新的强大的方法来控制我的数据。但是我不能同时使用两种技术视图和行级安全性。为什么?


问题答案:

基本上是因为不可能追溯更改视图的工作方式。我希望能够支持SECURITY INVOKER(或等效)视图,但是据我所知,目前尚不存在这样的功能。

您可以使用行安全性正常过滤对视图自身的访问。

该视图访问的表也将应用其行安全性规则。但是,他们将把current_user视为 视图创建者,
因为视图使用创建/拥有该视图的用户的权限访问表(和其他视图)。

如果您愿意介入并帮助开发所需的功能,或者如果不是pgsql-general,那么也许值得在pgsql-hackers上提出这个建议?

也就是说,虽然以创建用户的身份查看访问表并进行相应的更改current_user,但它们不会阻止您session_user在行安全策略中使用自定义GUC
,或其他上下文信息。您可以将行安全性与视图一起使用,只是不能(有用地)基于进行过滤current_user



 类似资料:
  • 问题内容: 我正在使用 PostgreSQL 10.1 ,直达关键点… 可以说我有一张table : 连同上面的 GIN INDEX : 和一个基本的全文搜索查询: 无论 public.document 表的大小如何,查询都非常快(您已经知道了)!计划人员使用INDEX,一切都很好。 现在,我通过 RLS(行级安全性) 介绍一些基本的访问控制,首先启用它: 然后添加策略: 为了简单 起见,is_c

  • 问题内容: 在下面的视频中,Microsoft PDC演示者在时间标记21:40处说,包装所有JSON以使其不是顶级数组很重要: https://channel9.msdn.com/Events/PDC/PDC09/FT12 解开顶层阵列的风险是什么? 我应该如何检查并确定自己是否脆弱?我从第三方购买了许多组件,并且有外部厂商来开发我的代码。 问题答案: 微软之所以这样说,是因为他们尚未修补浏览器

  • 根据http://projects.spring.io/spring-security-oauth/docs/oauth2.html: 请注意。应该使用Spring Security保护授权endpoint/OAUTH/Authorize(或其映射的替代),以便仅对经过身份验证的用户进行访问。 这是为什么?一个endpoint需要一个授权授予来交换一个授权代码,这听起来是不对的。这就像登录页面的登

  • 问题内容: 我有一张表,其中有一个名为的整数列。我在该列上有一个索引。 但是似乎Postgres不想使用我的索引: 知道为什么会这样吗? 问题答案: 因为: 您选择的行太多了,以至于读取整个表都比较便宜。

  • 问题内容: 进行测试后 ,试听得到的最佳结果是什么,试听得到了相同的结果,但用的时间更少: 它具有较低的性能,并且是其他DB中所没有的功能,例如,不使用它的另一个原因。 做另一个可以同时满足两个条件的测试,它有一点优势,那就是它的使用,更多的应用呢? 编辑: 就像@hvd所说的那样,它是的一部分,而的结果并不相同。 问题答案: 首先,它很方便。其次,您需要对大量数据进行测试。一秒钟之内,数据库服务

  • 根据我在pg_hba.conf中读到的内容,我推断,为了确保我被提示输入postgres用户的密码,我应该将pg_hba.conf的前两个条目方法从当前的“对等”编辑为“密码”或“md5”,但如果这是错误的,我不想破坏东西。我的方向是正确的吗?还是遗漏了一些明显的东西? 无论如何,更多细节- 在debian上安装了postgres 9.4之后,我通过这样做更改了postg雷斯用户的密码- …并输入