postgres-superuser无法访问pg\u authid表

vshtjzan  于 2021-07-26  发布在  Java
关注(0)|答案(1)|浏览(353)

这个问题在这里已经有了答案

aws rds postgresql在所有上下文中都禁止访问pg\u catalog.pg\u authid(1个答案)
10个月前关门了。
有rds postgres示例,并按如下方式检查用户访问:

SELECT 
      r.rolname, 
      ARRAY(SELECT b.rolname
            FROM pg_catalog.pg_auth_members m
            JOIN pg_catalog.pg_roles b ON (m.roleid = b.oid)
            WHERE m.member = r.oid) as memberof
FROM pg_catalog.pg_roles r
WHERE r.rolname NOT IN ('pg_signal_backend','rds_iam',
                        'rds_replication','rds_superuser',
                        'rdsadmin','rdsrepladmin')
ORDER BY 1;

当我运行时,用户x还在{rds\u superuser}中

SELECT * FROM pg_authid;

得到

ERROR: permission denied for relation pg_authid

尝试 GRANT ALL PRIVILEGES ON TABLE pg_authid TO vanare; 你知道我错过了什么吗?谢谢您。

arknldoa

arknldoa1#

pg_audit 包含数据库密码,因此具有限制性权限:

\dp pg_catalog.pg_authid
                                     Access privileges
   Schema   |   Name    | Type  |     Access privileges     | Column privileges | Policies 
------------+-----------+-------+---------------------------+-------------------+----------
 pg_catalog | pg_authid | table | postgres=arwdDxt/postgres |                   | 
(1 row)

因此只有超级用户才能访问该表。与直觉相反, rds_superuser 不是超级用户-在托管数据库上,您将永远无法获得超级用户权限,因为这将允许您访问操作系统。
但是如果你使用 pg_roles 取而代之的是视图,每个人都可以阅读。

相关问题