IBM System i数据库视图权限


8

我们有一个运行IBM i OS v6r1的IBM System i。在此系统上,我创建了一些数据库视图。我想要做的是给特定的用户组仅访问这些视图的权限,而视图所在的库中没有其他权限。这可能吗?我有一个用户组,该用户组对我的视图所在的库中的所有表和视图具有只读权限,并且当用户位于该用户组下时,访问才有效。我尝试复制用户组,然后分配权限以仅包括我创建的视图,并且拒绝访问。为了访问视图,用户或用户组是否还必须具有对视图所源自的表的权限?


考虑在dba.stackexchange.com上发布此内容
WarrenT

@WarrenT信不信由你,这实际上是与iSeries / midrange的DB问题一样多的系统管理问题-DB2数据库已紧密集成到OS / 400中,从这个问题听起来像是对OS / 400的OS / 400权限库使事情绊倒。(不幸的是,自从我登录到中型服务器以来已经很久了,我不是100%知道如何解决问题!)
voretaq7 2013年

@ voretaq7是的。数据库不仅被编织成操作系统的本质,而且被设计成机器本身(机器接口,MI)。自从我成为QSECOFR以来已有十多年了,所以我必须查找答案。但是,由于这里还没有人回答,而且对于这两个网站来说都是公平的游戏,我在想dba可能会有人知道这些。
WarrenT

Answers:


4

是。仅授予使用视图的权限是不够的。用户还必须对基础表具有权限。

允许访问受限用户的一种方法是采用授权。为了举例,我们假设以下内容:

RESTRICTED用户无权访问任何表。所有库都是AUT(* EXCLUDE)-或-用户RESTRICTED对所有库都具有* EXCLUDE权限。USER PERMITTED可以访问(或拥有)表和库。库DATA具有表。Library PROGRAMS具有程序和存储过程。

已允许在库PROGRAMS中创建一个RPG存储过程。确保程序已指定USRPRF(* OWNER)。这意味着程序运行时将使用所有者的权限(PERMITTED),而不是执行该配置文件的权限(RESTRICTED)。

通过SQL向RPG程序对象授予用户PERMITTED * USE权限-或-GRANT。另外,授予用户RESTRICTED * USE访问库PROGRAMS。这将允许RESTRICTED执行存储过程/程序。

请注意,用户RESTRICTED无权访问DATA中的表,而您希望以这种方式离开。

现在让用户RESTRICTED使用SQL来调用存储过程。她具有执行程序的权限,因为她对库PROGRAMS和已编译的程序对象具有* USE权限。该存储过程在所有者PERMITTED的权限下运行,并且由于PERMITTED具有对库DATA及其中表的完全访问权限,因此该存储过程可以访问/更新这些表。由于权限不足,RESTRICTED尝试使用的任何原始SQL都会失败-她唯一能做的就是调用为其创建的存储过程。

如果您的程序与数据存储在同一个库中,则需要向该库授予RESTRICTED * USE权限,并特别(通过* EXCLUDE)限制该库中所有表的权限。创建只保存存储过程并将其授权给该存储库的RESTRICTED库可能会更容易。这使正在进行的维护更加容易,因为您将不必记住记住要限制她不受DATA中新创建的表的限制。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.