首页 > 解决方案 > Oracle 代理访问

问题描述

我想知道我们是否可以在不授予插入、删除、更新、创建或删除表的情况下授予用户代理访问权限?我只想授予用户访问 DB Links 的权限,该权限仅适用于代理帐户,但想限制其他操作。

谢谢

标签: sqloracle

解决方案


如果 DB 链接和表归 User_A 所有,那么授予 User_B 对 User_A 的代理访问权限(以访问链接)也将允许 User_B 创建/删除/更改 User_A 架构中的任何其他内容,因为 User_B 实际上变成了 User_A。你无法阻止这一点。

处理授予对私有数据库链接的访问权限的更好方法是创建一个属于 User_A 的视图,该视图指向 User_A 的数据库链接中的资源,然后将视图上的 SELECT 授权给 User_B。

例如作为 USER_A:

create database link remote_db connect to remote_user identified by password using 'connect string';
create view remote_view as select * from remote_table@remote_db;
grant select on remote_view to user_b;

然后作为 USER_B:

select * from user_a.remote_view;

简单地授予其他用户对 db 链接的不受限制的访问权限 - 无论是通过代理权限还是公共链接 - 都会公开更多通常被认为是安全或安全的远程数据库元数据。例如,像 ALL_USERS 这样的视图被公开,可以通过提供所有有效用户 ID 的列表来帮助对远程系统进行黑客攻击。始终最好将本地用户对链接的访问限制为他们需要的特定表或视图,如此处所示。


推荐阅读