Я пытаюсь найти запрос, который позволяет мне получить текущие разрешения для определенной таблицы в Redshift как для групп, так и для пользователей.Я знаю, как получить реальный грант, но мне не хватает времени, чтобы найти правильные таблицы для запроса существующих разрешений.
Другая информация:
Это будетиспользуется во время программной операции, когда таблица каскадно удаляется и создается заново, чтобы гарантировать повторное применение тех же разрешений, что и до удаления.Если есть возможность сделать это в Python без запроса conn.execute (), я также открыт для этого.
Редактировать:
Я уже нашел приведенный ниже запрос и попробовал быструю короткую версию, чтобы посмотреть, смогу ли я получить группы:
SELECT *
FROM
(
SELECT
schemaname
,objectname
,usename
,groname
,HAS_TABLE_PRIVILEGE(usrs.usename, fullobj, 'select') AND HAS_TABLE_PRIVILEGE(grp.groname, fullobj, 'select') AND has_schema_privilege(usrs.usename, schemaname, 'usage') AS sel
FROM
(
SELECT schemaname, 't' AS obj_type, tablename AS objectname, schemaname + '.' + tablename AS fullobj FROM pg_tables
UNION
SELECT schemaname, 'v' AS obj_type, viewname AS objectname, schemaname + '.' + viewname AS fullobj FROM pg_views
) AS objs
,(SELECT * FROM pg_user) AS usrs
,(SELECT * FROM pg_group) AS grp
ORDER BY fullobj
)
WHERE sel = true
and objectname = 'table_name'
Это дает мне ошибку, говоря, что не может найти имя пользователя, которое является группойимя.