oracle 在视图上授予选择

qacovj5a  于 2022-12-29  发布在  Oracle
关注(0)|答案(4)|浏览(126)

在这条路上的某个地方出了问题,我似乎找不到原因。如果这已经被问到了,我道歉。
我的数据库中有3个模式:课桌局部_IT格本
COLLDESK是我们的主模式,LOCAL_IT是我们进行本地开发的地方,GERBEN是最终用户(应该只有select选项)。
现在,我在COLLDESK模式中有一个名为GESTIONES的表。在LOCAL_IT中,我有一个名为ACTIONS的视图。它包含COLLDESK模式中的GESTIONES表的4列。到目前为止一切顺利!
现在我想在视图ACTIONS中为GERBEN模式赋予选择权限。

grant select on LOCAL_IT.ACTIONS to GERBEN

我收到错误ORA-01720:COLLDESK. GESTIONES的授权选项不存在
现在,我尝试将GERBEN选择权限授予GESTIONES,但仍然收到错误消息
任何帮助将不胜感激!
此致
格尔本

gywdnpxw

gywdnpxw1#

错误消息应如下所示:
ORA-01720:COLLDESK.GESTIONES的"授权选项"不存在。
下面是它的工作原理:
您有3个架构:

  • Schema1-名为"table1"的表的持有者
  • Schema2-从schema1.table1中选择的视图"view1"的持有者
  • Schema3-用户,从schema2.view1中进行选择-未授予对schema1.table1的选择权限。

您可能已经执行了以下操作:

grant select on schema1.table1 (COLLDESK.GESTIONES) to schema2;

注意,因为您要创建一个视图,所以必须直接向schema2授予select,如果select是通过角色授予的,那么您的视图将无法工作。
现在,您尝试允许第三个方案(schema3)使用视图从schema1读取数据。出于安全考虑,即使schema2可以查看数据,也决不允许它访问schema1到第三个方案的数据。否则,这将是一个巨大的安全漏洞。
因此,解决方案是明确规定,当第三方被授予视图上的select特权时,schema2将能够间接授予select特权。
溶液:

grant select on schema1.table1 to schema2 with grant option;

现在,schema2可以将其视图上的select授予第三方:

grant select on schema2.view1 to schema3;

为您:

grant select on COLLDESK.GESTIONED to LOCAL_IT with grant option;
grant select on LOCAL_IT.ACTIONS to GERBEN;

另外:除非绝对必要,否则避免使用公共视图和公共数据库链接。

ni65a41a

ni65a41a2#

创建视图的公共同义词,然后使用您的赠款重试

create public synonym ACTIONS for LOCAL_IT.ACTIONS;

grant select on ACTIONS to GERBEN;
ghhkc1vu

ghhkc1vu3#

对于无法访问视图结构的最终用户

grant select on COLLDESK.GESTIONED to LOCAL_IT with grant option;
create synonym LOCAL_IT.VWACTIONS for LOCAL_IT.ACTIONS;

grant select on LOCAL_IT.VWACTIONS to GERBEN;

它的作品

wd2eg0qa

wd2eg0qa4#

对于无法访问视图结构的最终用户
为usr_sms.V_ALERT_01创建公共同义词V_ALERT_001(本地视图);将V_ALERT_001上的选择授予USER_ALERT;

相关问题