簡體   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