繁体   English   中英

DB2 LUW中存储过程的特权/安全性

[英]Privileges/security for stored procedure in DB2 LUW

更新的问题:我的问题的核心是:由于以下原因,我创建的存储过程I(用户1)无法从某些特定表(另一个用户(用户2)创建的表1)中进行选择:

CREATE OR REPLACE PROCEDURE TEST_SCHEMA.TEST_PROCEDURE(OUT r_count INTEGER)
LANGUAGE SQL
BEGIN
       SET r_count = (SELECT COUNT(*) FROM TEST_SCHEMA.TABLE1);
END

好。 没有行受到影响SQLWarning:代码:20480 SQL状态:0168Y ---新定义的对象“ TEST_SCHEMA.TEST_PROCEDURE”被标记为无效,因为它引用了未定义或无效的对象“ TEST_SCHEMA.TABLE1”或定义器没有访问它的特权。SQLCODE = 20480,SQLSTATE = 0168Y,DRIVER = 4.22.29

但是,当我在正常查询窗口中从table1中选择时,没有问题,因此我认为存储过程中的安全性选项有问题

SELECT COUNT(*) FROM TEST_SCHEMA.TABLE1

表和存储过程的名称是完全限定的。 该存储过程由user1创建并执行。 授予用户1从表1中选择的特权是组特权。

过程创建者必须直接或通过角色对静态引用表具有相应的特权。

CREATE PROCEDURE(SQL)语句

授权
语句的授权ID所拥有的特权必须至少包括以下权限之一:

  • 如果过程的隐式或显式架构名称不存在,则对数据库具有IMPLICIT_SCHEMA权限。
  • 如果过程的模式名称引用现有模式,则对该模式具有CREATEIN特权。
  • DBADM授权

语句的授权ID拥有的特权还必须包括调用过程主体中指定的SQL语句所需的所有特权。

要替换现有过程,该语句的授权ID必须是现有过程的所有者(SQLSTATE 42501)。

对于CREATE PROCEDURE(SQL)语句中指定的任何表或视图,均不考虑组特权。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM