【问题标题】:Can't create RLS on postgresql无法在 postgresql 上创建 RLS
【发布时间】:2017-11-10 05:17:33
【问题描述】:

我在 Postgres 中创建了一个登录角色,然后我尝试使用行级安全性授予修改表上指定行的权限。我已经尝试了数千次,但它不起作用。我只有一张桌子。

【问题讨论】:

  • 你怎么知道它不起作用?
  • 截图显示规则的创建工作正常。那么“不工作”到底是什么意思?
  • id的值是多少?

标签: database postgresql roles policy rls


【解决方案1】:

你没有提供足够的信息来说明你采取了哪些步骤来得出它不起作用的结论,所以我将介绍这两种情况:

  1. 您创建了策略,但没有在表上启用 RLS。来自documentation

请注意,必须在表上启用行级安全性(使用 ALTER TABLE ... ENABLE ROW LEVEL SECURITY)才能应用创建的策略。

  1. 您正在使用所有者角色、超级用户角色或从其中一个角色继承权限的角色测试 RLS。他们默认绕过 RLS。您可以通过ALTER TABLE [..] FORCE ROW LEVEL SECURITY 对表所有者强制执行 RLS,但您不能对超级用户执行此操作。

【讨论】:

  • 我已启用 RLS 。我创建了登录角色 sergio 并尝试授予该角色权限。以 sergio 身份登录,当我尝试访问我的表时,我收到一条错误消息。没有权限。我发布了屏幕截图以确保我没有犯语法错误。有什么想法吗?
  • 您能否使用 pgAdmin 的表定义更新您的问题,包括创建查询和权限授予?
  • 朋友你好!我在下面添加了另一个图像。如果你有解决方案,那就太好了。谢谢
  • 此外,任何具有“superuser”或“bypassrls”属性的角色都不会应用RLS。在psql 中,您可以运行\dg 来查看所有角色的这些属性。
猜你喜欢
  • 2023-04-05
  • 1970-01-01
  • 2016-07-06
  • 2016-12-04
  • 2020-06-25
  • 2020-07-05
  • 2023-03-11
  • 1970-01-01
  • 2016-04-05
相关资源
最近更新 更多