解决方法
允许访问受限用户的一种方法是采用权限.为了举例,我们假设如下:
用户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中新创建的表中.
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。