【发布时间】:2019-02-12 20:23:18
【问题描述】:
我正在尝试查找一个查询,该查询可让我获取 Redshift 中特定表的当前权限,适用于组和用户。我知道如何进行实际授权,但我需要花费大量时间来查找要查询的正确表以获取现有权限。
其他信息:
这将在以级联删除和重新创建表的编程操作期间使用,以确保我们从删除之前重新应用相同的权限。如果有一个选项可以在没有 conn.execute() 查询的情况下在 Python 中执行此操作,我也对此持开放态度。
编辑:
我之前确实找到了以下查询,我尝试了一个简短的版本来查看是否可以获取组:
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'
这给了我一个错误,说它找不到作为组名的用户名。
【问题讨论】:
标签: amazon-redshift