You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

通过组查询Redshift权限:关联用户组与组赋予的表查询权限

Redshift用户组关联表查询权限解决方案

简化用户-组关联查询

你原来的用户组关联语句可以简化,去掉冗余子查询:

SELECT usename, groname
FROM pg_user pu
JOIN pg_group pg ON pu.usesysid = ANY(pg.grolist)

关联组赋予的表查询权限

要获取用户通过对应组获得的SELECT权限表,核心思路是直接检查组对表的权限,再关联到所属用户。使用Redshift系统表和has_table_privilege函数实现:

SELECT
    pu.usename AS username,
    pg.groname AS group_name,
    pn.nspname AS schema_name,
    pc.relname AS table_name
FROM
    pg_user pu
JOIN
    pg_group pg ON pu.usesysid = ANY(pg.grolist)
CROSS JOIN
    pg_class pc
JOIN
    pg_namespace pn ON pc.relnamespace = pn.oid
WHERE
    pc.relkind = 'r' -- 仅筛选普通表
    AND has_table_privilege(pg.groname, pn.nspname || '.' || pc.relname, 'select')
ORDER BY
    username, group_name, schema_name, table_name;

关键说明

  • pc.relkind = 'r':过滤出普通表,若需包含视图,可改为pc.relkind IN ('r', 'v')(v代表视图)
  • has_table_privilege(pg.groname, ...):直接验证组对目标表的SELECT权限,用户继承组权限,因此能精准关联到该组赋予用户的查询权限
  • 可添加额外过滤条件,比如限定特定Schema:AND pn.nspname = 'your_target_schema'

内容的提问来源于stack exchange,提问作者Robert Riley

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.31 23:10:55