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

Oracle 物件權限完整對照表:九大權限 × 十類物件精準授權指南

     編輯:Oracle 資料庫基礎

Oracle 物件權限控制精確到「誰能對什麼物件做什麼操作」。共有 9 種權限 (ALTER、DELETE、EXECUTE、INDEX、INSERT、READ、REFERENCES、SELECT、UPDATE) 可授予 10 類物件 (Table、View、Sequence、Procedure、Function、Package、Type、Directory、Library、Operator/Indextype)。本文提供完整權限-物件矩陣表、各權限語意詳細說明、ALL 關鍵字展開清單,並以 ALTER 權限為例深度解析操作範圍。

權限-物件支援矩陣 (Y=支援)

權限 \ 物件TableViewSequenceProcedureFunctionPackageTypeDirectoryLibraryOperator/Indextype
ALTERYY
DELETEYY
EXECUTEYYYYYY
INDEXY
INSERTYY
READY
REFERENCESY
SELECTYY
UPDATEYY

關鍵權限語意詳細說明

ALTER

  • Table: ALTER TABLE (更名、增刪欄位、修改型別/大小、分區轉換)、LOCK TABLE。
  • Sequence: ALTER SEQUENCE (調整最小值、遞增值、快取大小)。

DELETE

  • Table/View: DELETE FROM table/view。View 需符合可更新條件。

EXECUTE

  • Procedure/Function/Package/Type/Library/Operator/Indextype: 執行程式單元、呼叫型別方法、使用庫函數、使用運算子/索引類型。

INDEX

  • Table: CREATE INDEX ON table。

INSERT

  • Table/View: INSERT INTO table/view。View 需符合可更新條件。

READ

  • Directory: UTL_FILE 讀取、BFILENAME 存取目錄下檔案。

REFERENCES

  • Table: 建立參考該表的外來鍵 (FOREIGN KEY REFERENCES table)。

SELECT

  • Table/View/Sequence (NEXTVAL/CURRVAL)/Materialized View: 查詢資料。

UPDATE

  • Table/View: UPDATE table/view SET ...。View 需符合可更新條件。

ALL 關鍵字展開

GRANT ALL ON table TO user; 等同於:

物件類型ALL 包含權限
TABLESELECT, INSERT, UPDATE, DELETE, INDEX, ALTER, REFERENCES
VIEWSELECT, INSERT, UPDATE, DELETE (無 INDEX/ALTER/REFERENCES)
SEQUENCESELECT, ALTER
PROCEDURE/FUNCTION/PACKAGEEXECUTE
TYPEEXECUTE
DIRECTORYREAD

授權語法範例


-- 單一權限
GRANT SELECT ON scott.emp TO hr_user;

-- 多權限
GRANT SELECT, INSERT, UPDATE ON scott.emp TO hr_user;

-- 全部權限
GRANT ALL ON scott.emp TO hr_user;

-- 欄位級授權 (僅 Table/View 支援)
GRANT UPDATE (sal, comm) ON scott.emp TO hr_user;

-- WITH GRANT OPTION (可轉授)
GRANT SELECT ON scott.emp TO hr_user WITH GRANT OPTION;

回收語法


REVOKE SELECT ON scott.emp FROM hr_user;
REVOKE ALL ON scott.emp FROM hr_user;
-- 注意:CASCADE CONSTRAINTS 只用於 REVOKE REFERENCES/ALTER 導致外來鍵/索引級聯刪除

查詢授權現況


-- 我授予他人的權限
SELECT * FROM USER_TAB_PRIVS_MADE;

-- 他人授予我的權限
SELECT * FROM USER_TAB_PRIVS_RECD;

-- 所有物件權限 (需 DBA)
SELECT * FROM DBA_TAB_PRIVS WHERE GRANTEE = 'HR_USER';

實務建議

  1. 最小權限:避免 GRANT ALL,明確列出所需權限 (如 SELECT, INSERT)。
  2. 角色封裝:將物件權限打包成角色 (APP_READ, APP_WRITE),再授予角色給使用者。
  3. 欄位級控制:敏感欄位 (薪資、身分證) 僅授予特定角色 UPDATE 權限。
  4. 定期稽核:查詢 DBA_TAB_PRIVS 產出權限矩陣,對照業務需求清單。
  5. 版本差異:12c 引入 READ 權限 (僅查詢,不含 SELECT ... FOR UPDATE),可用於更精細的唯讀控制。

掌握 9×10 權限矩陣,即能精準設計符合最小權限原則的物件授權策略,避免過度授權帶來的安全風險。

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