Доступ AWS RDS PostgreSQL к pg_catalog.pg_authid запрещен во всех контекстах? - PullRequest
0 голосов
/ 13 марта 2019
PostgreSQL said: permission denied for relation pg_authid

Является ли pg_authid просто недоступным на AWS RDS во всех контекстах из-за того, что RDS блокирует роль super? Моя роль создала таблицу, поэтому pg_catalog должно прийти по умолчанию (и его не нужно добавлять в путь поиска), если я правильно читаю psql docs. Просто нужно SELECT, а не создавать способности.

Не удалось найти конкретную страницу документации AWS RDS, где говорится, что pg_catalog.pg_authid недопустимо ни в каком контексте, но я унаследовал проект документации, основанный на возможности формировать запросы и присоединяться к ним. таблица pg_authid в БД, которую я только что создал. Мне всегда отказывают в вышеуказанном разрешении.

Попытка добавить роль postgres и дать ее себе, а также явно добавить БД в мой путь поиска, но безрезультатно.

1 Ответ

0 голосов
/ 01 апреля 2019

Каталог 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';
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...