首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 數據庫知識 >  >> Oracle 資料庫 >> Oracle 教學

Oracle 存儲過程跨用戶授權最小權限原則實踐

     編輯:Oracle 教學

Oracle 存儲過程跨用戶授權最小權限原則實踐

在多用戶 (Schema) 架構下,常需將某用戶的存儲過程執行權限授予另一用戶。本文示範標準授權語法,並強調最小權限原則與安全審計要點。

1. 基本授權語法

-- 以擁有者 user1 登入,授予 user2 執行權限
GRANT EXECUTE ON p_test TO user2;

關鍵點:

  • 使用 EXECUTE 權限而非 ALL,遵循最小權限原則。
  • 授權對象為具體程序/函數/套件名稱,不可授權整個 Schema。
  • 受授權用戶呼叫時需加前綴:EXEC user1.p_test; 或建立同義詞簡化。

2. 進階授權場景

場景 A:授權套件 (Package) 所有子程序

GRANT EXECUTE ON pkg_util TO user2;

場景 B:透過角色統一管理

CREATE ROLE app_exec_role;
GRANT EXECUTE ON p_test TO app_exec_role;
GRANT EXECUTE ON pkg_util TO app_exec_role;
GRANT app_exec_role TO user2, user3, user4;

場景 C:使用定義者權限 vs 執行者權限

  • 定義者權限 (預設):以建立者 user1 權限執行,user2 僅需 EXECUTE 即可存取 user1 的表。
  • 執行者權限 (AUTHID CURRENT_USER):以呼叫者 user2 權限執行,user2 需擁有底層表的直接權限。

3. 安全審計與撤銷

-- 查詢已授權情況
SELECT * FROM all_tab_privs WHERE table_name = 'P_TEST';

-- 撤銷授權
REVOKE EXECUTE ON p_test FROM user2;

4. 最佳實踐清單

  1. 嚴禁使用 GRANT ALL ON ...,務必明確指定 EXECUTE。
  2. 定期審核 DBA_TAB_PRIVS,清理無效/過期授權。
  3. 敏感業務程序建議加入 AUDIT EXECUTE ON p_test BY ACCESS 審計執行軌跡。
  4. 文檔化授權矩陣:記錄「程序 - 授權角色/用戶 - 業務用途 - 審核人」。

遵循最小權限原則授權存儲過程,既滿足業務協作需求,又能有效控制資料存取風險。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved