AWS RDS PostgreSQL在所有上下文中禁止访问pg_catalog.pg_authid?

问题描述 投票:0回答:1
PostgreSQL said: permission denied for relation pg_authid

由于RDS锁定了pg_authid角色,super在所有情况下都无法在AWS RDS上使用吗?我的角色创建了表格,因此如果我正在阅读psql文档,pg_catalog应该默认出现(并且不需要添加到搜索路径中)。只需要SELECT,而不是创造能力。

无法找到确定的AWS RDS文档页面,其中表示在任何上下文中都不允许使用pg_catalog.pg_authid,但我继承了一个依赖于能够在pg_authid表中形成查询和连接的文档项目。我刚创建的DB。我总是得到上述许可否认。

尝试添加postgres角色并将其提供给自己,并且还明确地将db添加到我的搜索路径中,但无济于事。

amazon-rds postgresql-9.6
1个回答
0
投票

目录pg_authid包含有关数据库授权标识符(角色)的信息。您可能已经意识到,由于RDS作为服务的托管性质,遗憾的是,在RDS中不可能拥有完整的超级用户角色。

不幸的是,由于上面提到的是对RDS的限制,如果访问'pg_authid'是执行业务所必需的,我建议你寻找EC2托管的Postgres(社区Postgres)作为选项。查看'pg_authid'内容的解决方法是使用'pg_roles',但密码被屏蔽,并且不会告诉您它是否已加密。

请注意,并非所有目录都限制在RDS上读取,下面是SQL查询,它显示了rds_superuser / master用户对每个目录的权限。

SELECT relname, has_table_privilege('rds_superuser',relname,'SELECT') as SELECT,has_table_privilege('rds_superuser',relname,'UPDATE') as UPDATE,has_table_privilege('rds_superuser',relname,'INSERT') as INSERT,has_table_privilege('rds_superuser',relname,'TRUNCATE') as TRUNCATE FROM pg_class c , pg_namespace n where n.oid = c.relnamespace  and n.nspname in ('pg_catalog')  and relkind='r';
© www.soinside.com 2019 - 2024. All rights reserved.