【问题标题】:Postgres: check if role is part of a groupPostgres:检查角色是否是组的一部分
【发布时间】:2019-11-29 07:33:52
【问题描述】:

我正在 postgreSQL 中建立一个数据库。 我创建了一些角色和组,并将一些组授予角色(实际上我已经创建了组的权限并授予了新用户的组)。 我在表中启用了行级安全性,并且我想编写一个策略来检查用户是否属于某些组以授予他插入权限。 比如:

CREATE POLICY table_policy_insert ON table
    FOR INSERT
    WITH CHECK(CURRENT_USER IS IN 'admin');

我尝试过使用 CURRENT_USER = 'admin' 但这会检查确切的名称,所以如果我有一个管理员用户 Poo,这不起作用

【问题讨论】:

    标签: postgresql security roles policy


    【解决方案1】:

    您可以使用此查询检查用户是否属于某个角色:

    select exists(
      select b.rolname rname,
             c.rolname mname 
      from pg_auth_members a, 
           pg_roles b, 
           pg_roles c  
      where a.roleid=b.oid 
        and a.member = c.oid 
        and b.rolname = 'role_name' 
        and c.rolname = 'user_name');
    

    【讨论】:

      猜你喜欢
      • 2021-02-24
      • 1970-01-01
      • 2012-07-28
      • 2019-05-19
      • 2021-04-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多