Oracle 19c跨dblink访问视图所需权限及授权方式咨询
答案
问题1:需要为test用户授予的必要权限
仅需要在db_B数据库侧完成以下授权即可:
- 由
schema_A_proxy用户(或拥有GRANT ANY OBJECT PRIVILEGE权限的管理员用户)执行授权语句,给test用户授予视图的查询权限:
GRANT SELECT ON schema_A_proxy.myView TO test;
无需额外给test用户授予dblink、远程表的相关权限:因为Oracle默认创建的视图为定义者权限对象,运行时会使用视图所有者schema_A_proxy的权限访问底层dblink和db_A侧的表,而你已经确认schema_A_proxy本身可以正常访问该视图,相关权限已经配置完成。
问题2:授权是否可通过角色完成
给test用户的视图查询权限可以通过角色完成,操作步骤参考:
- 管理员或
schema_A_proxy用户创建自定义角色
CREATE ROLE view_access_role;
- 给角色授予视图的查询权限
GRANT SELECT ON schema_A_proxy.myView TO view_access_role;
- 将角色授予给test用户
GRANT view_access_role TO test;
注意:该方案生效的前提是,当前
schema_A_proxy访问db_A侧表的权限为显式直接授权,而非通过角色获取。这一点你已经满足——因为如果schema_A_proxy的权限来自角色,他自己也无法正常访问该定义者权限视图,和你给出的环境说明冲突。
内容的提问来源于stack exchange,提问作者user13708337
相关产品推荐
相关产品推荐

