IBM System i数据库视图权限

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

解决方法

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

允许访问受限用户的一种方法是采用权限.为了举例,我们假设如下:

用户RESTRICTED无权访问任何表.
所有库都是AUT(* EXCLUDE) – 或 –
用户RESTRICTED对所有库具有* EXCLUDE权限.
USER PERMITTED可以访问(或拥有)表和库.
Library DATA有表格.
图书馆计划有程序和存储程序.

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

通过sql向RPG程序对象-or- GRANT授予用户PERMITTED * USE权限.此外,授予用户RESTRICTED * USE访问库程序的权限.这将允许RESTRICTED执行存储过程/程序.

请注意,用户RESTRICTED无权访问DATA中的表,并且您希望将其保留.

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

如果您的程序与数据存储在同一个库中,则需要向库提供RESTRICTED * USE权限,并特别限制她(通过* EXCLUDE)对该库中的所有表进行限制.创建一个仅保存存储过程并将其授权给该库的RESTRICTED库可能更容易.这使得持续维护变得更容易,因为您不必尝试记住将其限制在DATA中新创建的表中.

相关文章

SELECT a.*,b.dp_name,c.pa_name,fm_name=(CASE WHEN a.fm_n...
if not exists(select name from syscolumns where name=&am...
select a.*,pano=a.pa_no,b.pa_name,f.dp_name,e.fw_state_n...
要在 SQL Server 2019 中设置定时自动重启,可以使用 Window...
您收到的错误消息表明数据库 'EastRiver' 的...
首先我需要查询出需要使用SQL Server Profiler跟踪的数据库标...