AWS Redshift查询视图报权限拒绝,但原查询正常问题排查
排查Redshift视图查询权限拒绝问题
针对查询视图stg_kfdb_answers_flattened时提示permission denied for relation answers的问题,按以下步骤排查:
检查视图本身的权限是否授予
你之前执行的GRANT ALL PRIVILEGES ON ALL TABLES IN SCHEMA public to jerry;仅对表生效,Redshift中视图和表是分开的权限对象。需要单独给视图授权:GRANT SELECT ON "dev"."public"."stg_kfdb_answers_flattened" TO jerry;或者批量授权schema下所有视图:
GRANT SELECT ON ALL VIEWS IN SCHEMA public TO jerry;验证源表
answers的直接权限
确认用户jerry是否拥有answers表的SELECT权限:SELECT HAS_TABLE_PRIVILEGE('jerry', 'dev.public.answers', 'SELECT');如果返回
f,需要给该表授权:GRANT SELECT ON "dev"."public"."answers" TO jerry;若
answers表不在publicschema,需替换为对应schema名称,同时确保jerry拥有该schema的USAGE权限:GRANT USAGE ON SCHEMA target_schema TO jerry;检查视图的安全属性
查看视图是否使用了SECURITY DEFINER属性:SELECT relname, relsecuritytype FROM pg_class WHERE relname = 'stg_kfdb_answers_flattened';若
relsecuritytype为d(即SECURITY DEFINER),视图执行权限依赖于创建视图的用户对answers表的权限。这种情况可修改视图属性为默认的SECURITY INVOKER:ALTER VIEW "dev"."public"."stg_kfdb_answers_flattened" SET SECURITY INVOKER;确认视图定义的依赖对象
查看视图完整定义,排查是否引用了其他未授权对象:SELECT definition FROM pg_views WHERE schemaname = 'public' AND viewname = 'stg_kfdb_answers_flattened';若定义包含跨schema表、函数等,需给
jerry授予对应对象的权限。
内容的提问来源于stack exchange,提问作者Baudrillardist
相关产品推荐
相关产品推荐

